From b3792c1189245b750cae7224e44eeabf09fc68c3 Mon Sep 17 00:00:00 2001 From: sguenter Date: Fri, 5 Jul 2024 19:41:54 +0200 Subject: [PATCH] New version --- .idea/php.xml | 17 ++++++++- .npmrc | 1 + config.xml | 4 +-- package.json | 26 +++++++------- src/client/html/sites/impressum.html | 4 +-- src/client/html/sites/menu.html | 7 ++-- .../js/Fragment/WordRotatorSettingFragment.ts | 6 ++-- src/client/js/Sites/LevelSite.ts | 16 ++++----- src/client/js/Sites/MainMenuSite.ts | 10 ++---- src/client/js/Sites/TutorialSite.ts | 2 +- src/client/sass/wordRotator.scss | 12 +++++-- src/client/translations/de.json | 4 ++- src/client/translations/en.json | 13 +++++-- tsconfig.json | 3 +- webpack.config.js | 35 +++++++++++-------- 15 files changed, 98 insertions(+), 62 deletions(-) mode change 100755 => 100644 .idea/php.xml create mode 100644 .npmrc diff --git a/.idea/php.xml b/.idea/php.xml old mode 100755 new mode 100644 index 139c1b3..523a0b7 --- a/.idea/php.xml +++ b/.idea/php.xml @@ -1,5 +1,15 @@ + + + + + + @@ -91,5 +101,10 @@ - + + + + \ No newline at end of file diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..521a9f7 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +legacy-peer-deps=true diff --git a/config.xml b/config.xml index 9d0247a..0a332c7 100644 --- a/config.xml +++ b/config.xml @@ -1,5 +1,5 @@ - + WordRotator - Test A word-game @@ -21,7 +21,7 @@ - + diff --git a/package.json b/package.json index 011fc40..5f65b5f 100644 --- a/package.json +++ b/package.json @@ -4,10 +4,12 @@ "version": "1.3.2", "scripts": { "server": "ts-node src/server/index.ts", - "run browser": "cordova run browser", - "prepare browser": "cordova prepare browser", - "run android": "cordova run android --device", - "release android": "cordova build android --release --packageType=bundle", + "build": "webpack", + "run-browser": "cordova run browser", + "prepare-android": "cordova prepare android", + "prepare-browser": "cordova prepare browser", + "run-android": "cordova run android --device", + "release-android": "cordova build android --release --packageType=bundle", "appium": "appium", "appium-doctor": "appium-doctor", "test browser": "wdio tests/wdio.config.browser.js", @@ -18,7 +20,6 @@ "dependencies": { "@types/node": "^15.3.0", "body-parser": "^1.19.0", - "cordova-android": "^8.1.0", "cordova-ios": "^5.1.1", "cordova-plugin-webpack": "^1.0.5", "cordova-sites": "git+https://github.com/Ainias/cordova-sites.git#0.7.10", @@ -55,13 +56,14 @@ "babel-preset-env": "^1.7.0", "clean-webpack-plugin": "^3.0.0", "copy-webpack-plugin": "^5.1.2", - "cordova-plugin-device": "^2.0.3", - "cordova-plugin-file": "^6.0.2", + "cordova-android": "^13.0.0", + "cordova-browser": "^7.0.0", + "cordova-plugin-device": "^3.0.0", + "cordova-plugin-file": "^8.1.0", "cordova-plugin-nativestorage": "^2.3.2", "cordova-plugin-share": "^0.1.3", "cordova-plugin-tts": "^0.2.3", "cordova-plugin-webpack": "^1.0.5", - "cordova-plugin-whitelist": "^1.3.4", "cordova-serve": "^4.0.0", "cordova-sqlite-storage": "^6.0.0", "css-loader": "^5.2.4", @@ -88,15 +90,13 @@ "cordova-plugin-webpack": {}, "cordova-plugin-nativestorage": {}, "cordova-plugin-tts": {}, - "nl.madebymark.share": {}, "cordova-plugin-device": {}, "cordova-plugin-file": {}, - "cordova-sqlite-storage": {}, - "cordova-plugin-whitelist": {} + "cordova-sqlite-storage": {} }, "platforms": [ - "browser", "ios", + "browser", "android" ] }, @@ -107,4 +107,4 @@ "android >= 4.4", "ios >= 7" ] -} +} \ No newline at end of file diff --git a/src/client/html/sites/impressum.html b/src/client/html/sites/impressum.html index 8741fb0..64cd769 100644 --- a/src/client/html/sites/impressum.html +++ b/src/client/html/sites/impressum.html @@ -1,8 +1,8 @@

Impressum

Silas Günther
- Mariabrunnstraße 48
- 52064 Aachen
+ Peterstraße 10
+ 52062 Aachen
Deutschland

E-Mail: wordRotator@silas.link
diff --git a/src/client/html/sites/menu.html b/src/client/html/sites/menu.html index bc5639c..15f64a5 100644 --- a/src/client/html/sites/menu.html +++ b/src/client/html/sites/menu.html @@ -21,14 +21,15 @@

- +
-
+
- \ No newline at end of file + diff --git a/src/client/js/Fragment/WordRotatorSettingFragment.ts b/src/client/js/Fragment/WordRotatorSettingFragment.ts index 6dd8b23..2ce0149 100644 --- a/src/client/js/Fragment/WordRotatorSettingFragment.ts +++ b/src/client/js/Fragment/WordRotatorSettingFragment.ts @@ -41,9 +41,9 @@ export class WordRotatorSettingFragment extends AbstractFragment { playMusicButton.addEventListener("change", async () => { await NativeStoragePromise.setItem("play-music", (playMusicButton.checked) ? "1" : "0"); let soundManager = SoundManager.getInstance(); - soundManager.set({muted: !playMusicButton.checked}, SoundManager.CHANNELS.MUSIC); + soundManager.set({muted: !playMusicButton.checked}, "music"); if (playMusicButton.checked) { - await soundManager.play(SoundManager.CHANNELS.MUSIC); + await soundManager.play("music", undefined); } //TODO [MIG] Matomo @@ -55,7 +55,7 @@ export class WordRotatorSettingFragment extends AbstractFragment { playSoundButton.addEventListener("change", async () => { await NativeStoragePromise.setItem("play-sound", (playSoundButton.checked) ? "1" : "0"); let soundManager = SoundManager.getInstance(); - soundManager.set({muted: !playSoundButton.checked}, SoundManager.CHANNELS.SOUND); + soundManager.set({muted: !playSoundButton.checked}, "sound"); //TODO [MIG] Matomo Matomo.push(["trackEvent", "MainMenu", "PlaySound", "Play Sound", (playSoundButton.checked) ? 1 : 0]); diff --git a/src/client/js/Sites/LevelSite.ts b/src/client/js/Sites/LevelSite.ts index 2ed42b1..bde6518 100644 --- a/src/client/js/Sites/LevelSite.ts +++ b/src/client/js/Sites/LevelSite.ts @@ -96,9 +96,9 @@ export class LevelSite extends MenuSite { audio: coinSound, muted: ((await NativeStoragePromise.getItem("play-sound", "1")) !== "1"), volume: 0.7 - }, SoundManager.CHANNELS.SOUND); + }, "sound"); - soundManager.resume(SoundManager.CHANNELS.MUSIC); + soundManager.resume("music"); return super.onConstruct(args); } @@ -132,8 +132,8 @@ export class LevelSite extends MenuSite { let wonText = this.findBy("#won-text"); let scaleHelper = new ScaleHelper(); - this.continueButtonScaler = await scaleHelper.scaleToFull(continueButton, continueButton.parentElement, false, true, 2); - this.wonTextScaler = await scaleHelper.scaleTo(0.9, wonText, wonText.parentElement, false, false, 2, null, 5); + this.continueButtonScaler = await scaleHelper.scaleToFull(continueButton, continueButton.parentElement, false, true, 2, undefined, undefined, undefined); + this.wonTextScaler = await scaleHelper.scaleTo(0.9, wonText, wonText.parentElement, false, false, 2, null, 5, undefined); this.wonText = wonText; this.wonText.style.fontSize = "0"; @@ -276,7 +276,7 @@ export class LevelSite extends MenuSite { } async onStart(args) { - this.setTitle("WR"); + this.setTitle("WR", undefined); Matomo.update("Level Sites"); let res = super.onStart(args); @@ -292,7 +292,7 @@ export class LevelSite extends MenuSite { audio: coinSound, muted: (await NativeStoragePromise.getItem("play-sound", "1") !== "1"), volume: 0.7 - }, SoundManager.CHANNELS.SOUND); + }, "sound"); await this.tutorial(); @@ -321,7 +321,7 @@ export class LevelSite extends MenuSite { let coinsBefore = 0; let soundManager = SoundManager.getInstance(); - let audioOptions = soundManager.get(SoundManager.CHANNELS.SOUND); + let audioOptions = soundManager.get("sound"); this.coinPromise = this.coinPromise.then(async () => { coinsBefore = parseInt(Helper.nonNull(await NativeStoragePromise.getItem("coins"), "0")); @@ -352,7 +352,7 @@ export class LevelSite extends MenuSite { //TODO animationen einbauen coinElem.style.opacity = "1"; - soundManager.play(SoundManager.CHANNELS.SOUND); + soundManager.play("sound", undefined); this.wonParams.coinCounterTimer = setTimeout(() => { if (!this.wonParams.aborted) { diff --git a/src/client/js/Sites/MainMenuSite.ts b/src/client/js/Sites/MainMenuSite.ts index 3002318..3ae247b 100644 --- a/src/client/js/Sites/MainMenuSite.ts +++ b/src/client/js/Sites/MainMenuSite.ts @@ -83,9 +83,9 @@ export class MainMenuSite extends MenuSite { playMusicButton.checked = (await NativeStoragePromise.getItem("play-music", "1") === "1"); playMusicButton.addEventListener("change", async () => { await NativeStoragePromise.setItem("play-music", (playMusicButton.checked) ? "1" : "0"); - soundManager.set({muted: !playMusicButton.checked}, SoundManager.CHANNELS.MUSIC); + soundManager.set({muted: !playMusicButton.checked}, "music"); if (playMusicButton.checked) { - await soundManager.play(SoundManager.CHANNELS.MUSIC); + await soundManager.play("music", undefined); } //TODO [MIG] Matomo @@ -96,17 +96,13 @@ export class MainMenuSite extends MenuSite { playSoundButton.checked = (await NativeStoragePromise.getItem("play-sound", "1") === "1"); playSoundButton.addEventListener("change", async () => { await NativeStoragePromise.setItem("play-sound", (playSoundButton.checked) ? "1" : "0"); - soundManager.set({muted: !playSoundButton.checked}, SoundManager.CHANNELS.SOUND); - - //TODO [MIG] Matomo - Matomo.push(["trackEvent", "MainMenu", "PlaySound", "Play Sound", (playSoundButton.checked) ? 1 : 0]); + soundManager.set({muted: !playSoundButton.checked}, "sound"); }); this.findBy("#share-button").addEventListener("click", () => { new ShareManager().share(Translator.getInstance().translate("share-text", [window.location])); }); return res; - // this.findBy("#share-buttons").appendChild(ShareManager.generateDefaultShareElement("https://wordrotator.silas.link")); } async onStart(args) { diff --git a/src/client/js/Sites/TutorialSite.ts b/src/client/js/Sites/TutorialSite.ts index 5a02141..173daf0 100644 --- a/src/client/js/Sites/TutorialSite.ts +++ b/src/client/js/Sites/TutorialSite.ts @@ -76,7 +76,7 @@ export class TutorialSite extends MenuSite { let pointerSegment = rotatableSegments[2]; pointerSegment.element.appendChild(pointer); - this.find(".help-action").addEventListener("click", () => { + this.findBy(".help-action").addEventListener("click", () => { TutorialSite.help(level2); }) diff --git a/src/client/sass/wordRotator.scss b/src/client/sass/wordRotator.scss index 0019318..e4990cc 100644 --- a/src/client/sass/wordRotator.scss +++ b/src/client/sass/wordRotator.scss @@ -299,7 +299,6 @@ $coinTowerDimension: 28px; } .segment { - vertical-align: top; white-space: initial; cursor: pointer; @@ -353,12 +352,13 @@ $coinTowerDimension: 28px; } &.segment-parent { - border: solid 1px #a9a9a9; + border: solid 2px #a9a9a9; border-radius: 3px; padding: 1px; + margin: 1px; &.layer-2 { - border: solid 3px #000000; + border: solid 4px #000000; } } @@ -372,6 +372,10 @@ $coinTowerDimension: 28px; } } +.help-action{ + border-radius: 4px; +} + //Won-screen #site > :not(.won) { .show-when-won { @@ -430,6 +434,7 @@ $coinTowerDimension: 28px; } #continue-button { + border-radius: 4px; margin-bottom: 2px; @include breakpoint(small down) { margin-bottom: 0; @@ -438,6 +443,7 @@ $coinTowerDimension: 28px; } #play-button { + border-radius: 4px; @include breakpoint(small down) { margin-bottom: 0.5rem; } diff --git a/src/client/translations/de.json b/src/client/translations/de.json index 58ea6a7..2a5be17 100644 --- a/src/client/translations/de.json +++ b/src/client/translations/de.json @@ -55,5 +55,7 @@ "tutorial-1": "Klicke auf ein Feld, um dieses rotieren zu lassen! Um zu gewinnen, drehe die Segmente so, dass du zwei Wörter lesen kannst.", "tutorial-2": "Die Hilfe löst ein Segment, kostet aber 25 Münzen. Du erhältst 5 Münzen pro gewonnenes Level.", "tutorial-3": "Große Segmente drehst du, indem du diese ziehst.", - "you solved the tutorial level!": "Du hast das Tutorial-Level gelöst!" + "you solved the tutorial level!": "Du hast das Tutorial-Level gelöst!", + "WR": "WR", + "Spielregeln": "Spielregeln" } diff --git a/src/client/translations/en.json b/src/client/translations/en.json index f4b3873..d6e01b3 100644 --- a/src/client/translations/en.json +++ b/src/client/translations/en.json @@ -49,5 +49,14 @@ "privacy policy accepted": " akzeptiert", "message": "Nachricht", "send": "Senden", - "the message was sent": "Die Nachricht wurde gesendet." -} \ No newline at end of file + "the message was sent": "Die Nachricht wurde gesendet.", + + "tutorial": "Rules", + "tutorial-1": "Click on a field to rotate it! To win, rotate the segments so that you can read two words.", + "tutorial-2": "The help solves a segment, but costs 25 coins. You receive 5 coins per level won.", + "tutorial-3": "You rotate large segments by dragging them.", + "you solved the tutorial level!": "You have solved the tutorial level!", + + "WR": "WR", + "Spielregeln": "Rules" +} diff --git a/tsconfig.json b/tsconfig.json index d11d3eb..313de03 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,7 +8,8 @@ "experimentalDecorators": true, "allowSyntheticDefaultImports": true, "sourceMap": true, - "allowJs": true + "allowJs": true, + "skipLibCheck": true }, "include": [ "./src/client/**/*", diff --git a/webpack.config.js b/webpack.config.js index 1efb30c..cc0b3ea 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -91,18 +91,18 @@ let moduleExports = { new CleanWebpackPlugin({cleanOnceBeforeBuildPatterns: ['**/*', '!**/.gitkeep']}), new CopyWebpackPlugin([ - { - from: path.resolve("./node_modules/sql.js/dist/sql-wasm.js"), - to: "scripts/" - }, - { - from: path.resolve("./node_modules/sql.js/dist/sql-wasm.wasm"), - to: "sql-wasm.wasm" - }, - { - from: path.resolve("./node_modules/localforage/dist/localforage.js"), - to: "scripts/" - },] + { + from: path.resolve("./node_modules/sql.js/dist/sql-wasm.js"), + to: "scripts/" + }, + { + from: path.resolve("./node_modules/sql.js/dist/sql-wasm.wasm"), + to: "sql-wasm.wasm" + }, + { + from: path.resolve("./node_modules/localforage/dist/localforage.js"), + to: "scripts/" + },] ), new webpack.NormalModuleReplacementPlugin(/typeorm$/, function (result) { @@ -161,7 +161,8 @@ let moduleExports = { urlFilter: (attribute, value, resourcePath) => { return !value.endsWith(".js") && !value.endsWith(".css"); } - } + }, + esModule: false } } ], @@ -204,7 +205,8 @@ let moduleExports = { urlFilter: (attribute, value, resoucePath) => { return true; } - } + }, + esModule: false } } ], @@ -253,7 +255,10 @@ let moduleExports = { loader: 'extract-loader' }, { - loader: 'css-loader' + loader: 'css-loader', + options: { + esModule: false + } }, { //Compiliert zu CSS