New version
This commit is contained in:
parent
9704cf012e
commit
b3792c1189
17
.idea/php.xml
generated
Executable file → Normal file
17
.idea/php.xml
generated
Executable file → Normal file
@ -1,5 +1,15 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
|
<component name="MessDetectorOptionsConfiguration">
|
||||||
|
<option name="transferred" value="true" />
|
||||||
|
</component>
|
||||||
|
<component name="PHPCSFixerOptionsConfiguration">
|
||||||
|
<option name="transferred" value="true" />
|
||||||
|
</component>
|
||||||
|
<component name="PHPCodeSnifferOptionsConfiguration">
|
||||||
|
<option name="highlightLevel" value="WARNING" />
|
||||||
|
<option name="transferred" value="true" />
|
||||||
|
</component>
|
||||||
<component name="PhpIncludePathManager">
|
<component name="PhpIncludePathManager">
|
||||||
<include_path>
|
<include_path>
|
||||||
<path value="$PROJECT_DIR$/vendor/zendframework/zend-paginator" />
|
<path value="$PROJECT_DIR$/vendor/zendframework/zend-paginator" />
|
||||||
@ -91,5 +101,10 @@
|
|||||||
<path value="$PROJECT_DIR$/vendor/ainias/pwa-zf-core" />
|
<path value="$PROJECT_DIR$/vendor/ainias/pwa-zf-core" />
|
||||||
</include_path>
|
</include_path>
|
||||||
</component>
|
</component>
|
||||||
<component name="PhpProjectSharedConfiguration" php_language_level="7" />
|
<component name="PhpStanOptionsConfiguration">
|
||||||
|
<option name="transferred" value="true" />
|
||||||
|
</component>
|
||||||
|
<component name="PsalmOptionsConfiguration">
|
||||||
|
<option name="transferred" value="true" />
|
||||||
|
</component>
|
||||||
</project>
|
</project>
|
||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version='1.0' encoding='utf-8'?>
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
<widget android-versionCode="19" id="test.link.silas.wordrotator" version="1.3.2" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cdv="http://cordova.apache.org/ns/1.0">
|
<widget android-versionCode="21" id="test.link.silas.wordrotator" version="1.3.2" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cdv="http://cordova.apache.org/ns/1.0">
|
||||||
<name>WordRotator - Test</name>
|
<name>WordRotator - Test</name>
|
||||||
<description>
|
<description>
|
||||||
A word-game
|
A word-game
|
||||||
@ -21,7 +21,7 @@
|
|||||||
<allow-intent href="market:*" />
|
<allow-intent href="market:*" />
|
||||||
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
|
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
|
||||||
</edit-config>
|
</edit-config>
|
||||||
<preference name="android-targetSdkVersion" value="29" />
|
<preference name="android-targetSdkVersion" value="34" />
|
||||||
<icon src="src/client/img/logo.png" />
|
<icon src="src/client/img/logo.png" />
|
||||||
</platform>
|
</platform>
|
||||||
<platform name="ios">
|
<platform name="ios">
|
||||||
|
|||||||
26
package.json
26
package.json
@ -4,10 +4,12 @@
|
|||||||
"version": "1.3.2",
|
"version": "1.3.2",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"server": "ts-node src/server/index.ts",
|
"server": "ts-node src/server/index.ts",
|
||||||
"run browser": "cordova run browser",
|
"build": "webpack",
|
||||||
"prepare browser": "cordova prepare browser",
|
"run-browser": "cordova run browser",
|
||||||
"run android": "cordova run android --device",
|
"prepare-android": "cordova prepare android",
|
||||||
"release android": "cordova build android --release --packageType=bundle",
|
"prepare-browser": "cordova prepare browser",
|
||||||
|
"run-android": "cordova run android --device",
|
||||||
|
"release-android": "cordova build android --release --packageType=bundle",
|
||||||
"appium": "appium",
|
"appium": "appium",
|
||||||
"appium-doctor": "appium-doctor",
|
"appium-doctor": "appium-doctor",
|
||||||
"test browser": "wdio tests/wdio.config.browser.js",
|
"test browser": "wdio tests/wdio.config.browser.js",
|
||||||
@ -18,7 +20,6 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/node": "^15.3.0",
|
"@types/node": "^15.3.0",
|
||||||
"body-parser": "^1.19.0",
|
"body-parser": "^1.19.0",
|
||||||
"cordova-android": "^8.1.0",
|
|
||||||
"cordova-ios": "^5.1.1",
|
"cordova-ios": "^5.1.1",
|
||||||
"cordova-plugin-webpack": "^1.0.5",
|
"cordova-plugin-webpack": "^1.0.5",
|
||||||
"cordova-sites": "git+https://github.com/Ainias/cordova-sites.git#0.7.10",
|
"cordova-sites": "git+https://github.com/Ainias/cordova-sites.git#0.7.10",
|
||||||
@ -55,13 +56,14 @@
|
|||||||
"babel-preset-env": "^1.7.0",
|
"babel-preset-env": "^1.7.0",
|
||||||
"clean-webpack-plugin": "^3.0.0",
|
"clean-webpack-plugin": "^3.0.0",
|
||||||
"copy-webpack-plugin": "^5.1.2",
|
"copy-webpack-plugin": "^5.1.2",
|
||||||
"cordova-plugin-device": "^2.0.3",
|
"cordova-android": "^13.0.0",
|
||||||
"cordova-plugin-file": "^6.0.2",
|
"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-nativestorage": "^2.3.2",
|
||||||
"cordova-plugin-share": "^0.1.3",
|
"cordova-plugin-share": "^0.1.3",
|
||||||
"cordova-plugin-tts": "^0.2.3",
|
"cordova-plugin-tts": "^0.2.3",
|
||||||
"cordova-plugin-webpack": "^1.0.5",
|
"cordova-plugin-webpack": "^1.0.5",
|
||||||
"cordova-plugin-whitelist": "^1.3.4",
|
|
||||||
"cordova-serve": "^4.0.0",
|
"cordova-serve": "^4.0.0",
|
||||||
"cordova-sqlite-storage": "^6.0.0",
|
"cordova-sqlite-storage": "^6.0.0",
|
||||||
"css-loader": "^5.2.4",
|
"css-loader": "^5.2.4",
|
||||||
@ -88,15 +90,13 @@
|
|||||||
"cordova-plugin-webpack": {},
|
"cordova-plugin-webpack": {},
|
||||||
"cordova-plugin-nativestorage": {},
|
"cordova-plugin-nativestorage": {},
|
||||||
"cordova-plugin-tts": {},
|
"cordova-plugin-tts": {},
|
||||||
"nl.madebymark.share": {},
|
|
||||||
"cordova-plugin-device": {},
|
"cordova-plugin-device": {},
|
||||||
"cordova-plugin-file": {},
|
"cordova-plugin-file": {},
|
||||||
"cordova-sqlite-storage": {},
|
"cordova-sqlite-storage": {}
|
||||||
"cordova-plugin-whitelist": {}
|
|
||||||
},
|
},
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"browser",
|
|
||||||
"ios",
|
"ios",
|
||||||
|
"browser",
|
||||||
"android"
|
"android"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -107,4 +107,4 @@
|
|||||||
"android >= 4.4",
|
"android >= 4.4",
|
||||||
"ios >= 7"
|
"ios >= 7"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -1,8 +1,8 @@
|
|||||||
<div>
|
<div>
|
||||||
<h2>Impressum</h2>
|
<h2>Impressum</h2>
|
||||||
<p>Silas Günther<br />
|
<p>Silas Günther<br />
|
||||||
Mariabrunnstraße 48<br />
|
Peterstraße 10<br />
|
||||||
52064 Aachen<br/>
|
52062 Aachen<br/>
|
||||||
Deutschland
|
Deutschland
|
||||||
</p>
|
</p>
|
||||||
<p>E-Mail: <a href="mailto:wordRotator@silas.link">wordRotator@silas.link</a><br/>
|
<p>E-Mail: <a href="mailto:wordRotator@silas.link">wordRotator@silas.link</a><br/>
|
||||||
|
|||||||
@ -21,14 +21,15 @@
|
|||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class='height-30 flex-center fill-me'>
|
<div class='height-30 flex-center fill-me'>
|
||||||
<button class='button grow text-center' id='play-button'><span class="translation" data-translation="play"></span></button>
|
<button class='button grow text-center' id='play-button'><span class="translation"
|
||||||
|
data-translation="play"></span></button>
|
||||||
<div class='max-width line-height-1 fill-me vertical'>
|
<div class='max-width line-height-1 fill-me vertical'>
|
||||||
<label class="switch">
|
<label class="switch">
|
||||||
<div data-view="../../img/speaker.svg"></div>
|
<div data-view="../../img/speaker.svg"></div>
|
||||||
<input type="checkbox" class="setting" id="play-sound">
|
<input type="checkbox" class="setting" id="play-sound">
|
||||||
<span class="slider"></span>
|
<span class="slider"></span>
|
||||||
</label>
|
</label>
|
||||||
<div class="grow center" id = "share-button"><span data-view="../../img/share.svg"></span></div>
|
<div class="grow center" id="share-button"><span data-view="../../img/share.svg"></span></div>
|
||||||
<label class="switch right">
|
<label class="switch right">
|
||||||
<div data-view="../../img/music.svg"></div>
|
<div data-view="../../img/music.svg"></div>
|
||||||
<input type="checkbox" class="setting" id="play-music">
|
<input type="checkbox" class="setting" id="play-music">
|
||||||
@ -36,4 +37,4 @@
|
|||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -41,9 +41,9 @@ export class WordRotatorSettingFragment extends AbstractFragment {
|
|||||||
playMusicButton.addEventListener("change", async () => {
|
playMusicButton.addEventListener("change", async () => {
|
||||||
await NativeStoragePromise.setItem("play-music", (playMusicButton.checked) ? "1" : "0");
|
await NativeStoragePromise.setItem("play-music", (playMusicButton.checked) ? "1" : "0");
|
||||||
let soundManager = SoundManager.getInstance();
|
let soundManager = SoundManager.getInstance();
|
||||||
soundManager.set({muted: !playMusicButton.checked}, SoundManager.CHANNELS.MUSIC);
|
soundManager.set({muted: !playMusicButton.checked}, "music");
|
||||||
if (playMusicButton.checked) {
|
if (playMusicButton.checked) {
|
||||||
await soundManager.play(SoundManager.CHANNELS.MUSIC);
|
await soundManager.play("music", undefined);
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO [MIG] Matomo
|
//TODO [MIG] Matomo
|
||||||
@ -55,7 +55,7 @@ export class WordRotatorSettingFragment extends AbstractFragment {
|
|||||||
playSoundButton.addEventListener("change", async () => {
|
playSoundButton.addEventListener("change", async () => {
|
||||||
await NativeStoragePromise.setItem("play-sound", (playSoundButton.checked) ? "1" : "0");
|
await NativeStoragePromise.setItem("play-sound", (playSoundButton.checked) ? "1" : "0");
|
||||||
let soundManager = SoundManager.getInstance();
|
let soundManager = SoundManager.getInstance();
|
||||||
soundManager.set({muted: !playSoundButton.checked}, SoundManager.CHANNELS.SOUND);
|
soundManager.set({muted: !playSoundButton.checked}, "sound");
|
||||||
|
|
||||||
//TODO [MIG] Matomo
|
//TODO [MIG] Matomo
|
||||||
Matomo.push(["trackEvent", "MainMenu", "PlaySound", "Play Sound", (playSoundButton.checked) ? 1 : 0]);
|
Matomo.push(["trackEvent", "MainMenu", "PlaySound", "Play Sound", (playSoundButton.checked) ? 1 : 0]);
|
||||||
|
|||||||
@ -96,9 +96,9 @@ export class LevelSite extends MenuSite {
|
|||||||
audio: coinSound,
|
audio: coinSound,
|
||||||
muted: ((await NativeStoragePromise.getItem("play-sound", "1")) !== "1"),
|
muted: ((await NativeStoragePromise.getItem("play-sound", "1")) !== "1"),
|
||||||
volume: 0.7
|
volume: 0.7
|
||||||
}, SoundManager.CHANNELS.SOUND);
|
}, "sound");
|
||||||
|
|
||||||
soundManager.resume(SoundManager.CHANNELS.MUSIC);
|
soundManager.resume("music");
|
||||||
|
|
||||||
return super.onConstruct(args);
|
return super.onConstruct(args);
|
||||||
}
|
}
|
||||||
@ -132,8 +132,8 @@ export class LevelSite extends MenuSite {
|
|||||||
let wonText = this.findBy("#won-text");
|
let wonText = this.findBy("#won-text");
|
||||||
|
|
||||||
let scaleHelper = new ScaleHelper();
|
let scaleHelper = new ScaleHelper();
|
||||||
this.continueButtonScaler = await scaleHelper.scaleToFull(continueButton, continueButton.parentElement, false, true, 2);
|
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);
|
this.wonTextScaler = await scaleHelper.scaleTo(0.9, wonText, wonText.parentElement, false, false, 2, null, 5, undefined);
|
||||||
this.wonText = wonText;
|
this.wonText = wonText;
|
||||||
this.wonText.style.fontSize = "0";
|
this.wonText.style.fontSize = "0";
|
||||||
|
|
||||||
@ -276,7 +276,7 @@ export class LevelSite extends MenuSite {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async onStart(args) {
|
async onStart(args) {
|
||||||
this.setTitle("WR");
|
this.setTitle("WR", undefined);
|
||||||
|
|
||||||
Matomo.update("Level Sites");
|
Matomo.update("Level Sites");
|
||||||
let res = super.onStart(args);
|
let res = super.onStart(args);
|
||||||
@ -292,7 +292,7 @@ export class LevelSite extends MenuSite {
|
|||||||
audio: coinSound,
|
audio: coinSound,
|
||||||
muted: (await NativeStoragePromise.getItem("play-sound", "1") !== "1"),
|
muted: (await NativeStoragePromise.getItem("play-sound", "1") !== "1"),
|
||||||
volume: 0.7
|
volume: 0.7
|
||||||
}, SoundManager.CHANNELS.SOUND);
|
}, "sound");
|
||||||
|
|
||||||
await this.tutorial();
|
await this.tutorial();
|
||||||
|
|
||||||
@ -321,7 +321,7 @@ export class LevelSite extends MenuSite {
|
|||||||
let coinsBefore = 0;
|
let coinsBefore = 0;
|
||||||
|
|
||||||
let soundManager = SoundManager.getInstance();
|
let soundManager = SoundManager.getInstance();
|
||||||
let audioOptions = soundManager.get(SoundManager.CHANNELS.SOUND);
|
let audioOptions = soundManager.get("sound");
|
||||||
|
|
||||||
this.coinPromise = this.coinPromise.then(async () => {
|
this.coinPromise = this.coinPromise.then(async () => {
|
||||||
coinsBefore = parseInt(Helper.nonNull(await NativeStoragePromise.getItem("coins"), "0"));
|
coinsBefore = parseInt(Helper.nonNull(await NativeStoragePromise.getItem("coins"), "0"));
|
||||||
@ -352,7 +352,7 @@ export class LevelSite extends MenuSite {
|
|||||||
//TODO animationen einbauen
|
//TODO animationen einbauen
|
||||||
|
|
||||||
coinElem.style.opacity = "1";
|
coinElem.style.opacity = "1";
|
||||||
soundManager.play(SoundManager.CHANNELS.SOUND);
|
soundManager.play("sound", undefined);
|
||||||
|
|
||||||
this.wonParams.coinCounterTimer = setTimeout(() => {
|
this.wonParams.coinCounterTimer = setTimeout(() => {
|
||||||
if (!this.wonParams.aborted) {
|
if (!this.wonParams.aborted) {
|
||||||
|
|||||||
@ -83,9 +83,9 @@ export class MainMenuSite extends MenuSite {
|
|||||||
playMusicButton.checked = (await NativeStoragePromise.getItem("play-music", "1") === "1");
|
playMusicButton.checked = (await NativeStoragePromise.getItem("play-music", "1") === "1");
|
||||||
playMusicButton.addEventListener("change", async () => {
|
playMusicButton.addEventListener("change", async () => {
|
||||||
await NativeStoragePromise.setItem("play-music", (playMusicButton.checked) ? "1" : "0");
|
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) {
|
if (playMusicButton.checked) {
|
||||||
await soundManager.play(SoundManager.CHANNELS.MUSIC);
|
await soundManager.play("music", undefined);
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO [MIG] Matomo
|
//TODO [MIG] Matomo
|
||||||
@ -96,17 +96,13 @@ export class MainMenuSite extends MenuSite {
|
|||||||
playSoundButton.checked = (await NativeStoragePromise.getItem("play-sound", "1") === "1");
|
playSoundButton.checked = (await NativeStoragePromise.getItem("play-sound", "1") === "1");
|
||||||
playSoundButton.addEventListener("change", async () => {
|
playSoundButton.addEventListener("change", async () => {
|
||||||
await NativeStoragePromise.setItem("play-sound", (playSoundButton.checked) ? "1" : "0");
|
await NativeStoragePromise.setItem("play-sound", (playSoundButton.checked) ? "1" : "0");
|
||||||
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]);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
this.findBy("#share-button").addEventListener("click", () => {
|
this.findBy("#share-button").addEventListener("click", () => {
|
||||||
new ShareManager().share(Translator.getInstance().translate("share-text", [window.location]));
|
new ShareManager().share(Translator.getInstance().translate("share-text", [window.location]));
|
||||||
});
|
});
|
||||||
return res;
|
return res;
|
||||||
// this.findBy("#share-buttons").appendChild(ShareManager.generateDefaultShareElement("https://wordrotator.silas.link"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async onStart(args) {
|
async onStart(args) {
|
||||||
|
|||||||
@ -76,7 +76,7 @@ export class TutorialSite extends MenuSite {
|
|||||||
let pointerSegment = rotatableSegments[2];
|
let pointerSegment = rotatableSegments[2];
|
||||||
pointerSegment.element.appendChild(pointer);
|
pointerSegment.element.appendChild(pointer);
|
||||||
|
|
||||||
this.find(".help-action").addEventListener("click", () => {
|
this.findBy(".help-action").addEventListener("click", () => {
|
||||||
TutorialSite.help(level2);
|
TutorialSite.help(level2);
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@ -299,7 +299,6 @@ $coinTowerDimension: 28px;
|
|||||||
}
|
}
|
||||||
|
|
||||||
.segment {
|
.segment {
|
||||||
|
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
white-space: initial;
|
white-space: initial;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
@ -353,12 +352,13 @@ $coinTowerDimension: 28px;
|
|||||||
}
|
}
|
||||||
|
|
||||||
&.segment-parent {
|
&.segment-parent {
|
||||||
border: solid 1px #a9a9a9;
|
border: solid 2px #a9a9a9;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
padding: 1px;
|
padding: 1px;
|
||||||
|
margin: 1px;
|
||||||
|
|
||||||
&.layer-2 {
|
&.layer-2 {
|
||||||
border: solid 3px #000000;
|
border: solid 4px #000000;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -372,6 +372,10 @@ $coinTowerDimension: 28px;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.help-action{
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
//Won-screen
|
//Won-screen
|
||||||
#site > :not(.won) {
|
#site > :not(.won) {
|
||||||
.show-when-won {
|
.show-when-won {
|
||||||
@ -430,6 +434,7 @@ $coinTowerDimension: 28px;
|
|||||||
}
|
}
|
||||||
|
|
||||||
#continue-button {
|
#continue-button {
|
||||||
|
border-radius: 4px;
|
||||||
margin-bottom: 2px;
|
margin-bottom: 2px;
|
||||||
@include breakpoint(small down) {
|
@include breakpoint(small down) {
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
@ -438,6 +443,7 @@ $coinTowerDimension: 28px;
|
|||||||
}
|
}
|
||||||
|
|
||||||
#play-button {
|
#play-button {
|
||||||
|
border-radius: 4px;
|
||||||
@include breakpoint(small down) {
|
@include breakpoint(small down) {
|
||||||
margin-bottom: 0.5rem;
|
margin-bottom: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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-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-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.",
|
"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"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -49,5 +49,14 @@
|
|||||||
"privacy policy accepted": " akzeptiert",
|
"privacy policy accepted": " akzeptiert",
|
||||||
"message": "Nachricht",
|
"message": "Nachricht",
|
||||||
"send": "Senden",
|
"send": "Senden",
|
||||||
"the message was sent": "Die Nachricht wurde gesendet."
|
"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"
|
||||||
|
}
|
||||||
|
|||||||
@ -8,7 +8,8 @@
|
|||||||
"experimentalDecorators": true,
|
"experimentalDecorators": true,
|
||||||
"allowSyntheticDefaultImports": true,
|
"allowSyntheticDefaultImports": true,
|
||||||
"sourceMap": true,
|
"sourceMap": true,
|
||||||
"allowJs": true
|
"allowJs": true,
|
||||||
|
"skipLibCheck": true
|
||||||
},
|
},
|
||||||
"include": [
|
"include": [
|
||||||
"./src/client/**/*",
|
"./src/client/**/*",
|
||||||
|
|||||||
@ -91,18 +91,18 @@ let moduleExports = {
|
|||||||
new CleanWebpackPlugin({cleanOnceBeforeBuildPatterns: ['**/*', '!**/.gitkeep']}),
|
new CleanWebpackPlugin({cleanOnceBeforeBuildPatterns: ['**/*', '!**/.gitkeep']}),
|
||||||
|
|
||||||
new CopyWebpackPlugin([
|
new CopyWebpackPlugin([
|
||||||
{
|
{
|
||||||
from: path.resolve("./node_modules/sql.js/dist/sql-wasm.js"),
|
from: path.resolve("./node_modules/sql.js/dist/sql-wasm.js"),
|
||||||
to: "scripts/"
|
to: "scripts/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
from: path.resolve("./node_modules/sql.js/dist/sql-wasm.wasm"),
|
from: path.resolve("./node_modules/sql.js/dist/sql-wasm.wasm"),
|
||||||
to: "sql-wasm.wasm"
|
to: "sql-wasm.wasm"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
from: path.resolve("./node_modules/localforage/dist/localforage.js"),
|
from: path.resolve("./node_modules/localforage/dist/localforage.js"),
|
||||||
to: "scripts/"
|
to: "scripts/"
|
||||||
},]
|
},]
|
||||||
),
|
),
|
||||||
|
|
||||||
new webpack.NormalModuleReplacementPlugin(/typeorm$/, function (result) {
|
new webpack.NormalModuleReplacementPlugin(/typeorm$/, function (result) {
|
||||||
@ -161,7 +161,8 @@ let moduleExports = {
|
|||||||
urlFilter: (attribute, value, resourcePath) => {
|
urlFilter: (attribute, value, resourcePath) => {
|
||||||
return !value.endsWith(".js") && !value.endsWith(".css");
|
return !value.endsWith(".js") && !value.endsWith(".css");
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
esModule: false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@ -204,7 +205,8 @@ let moduleExports = {
|
|||||||
urlFilter: (attribute, value, resoucePath) => {
|
urlFilter: (attribute, value, resoucePath) => {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
esModule: false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@ -253,7 +255,10 @@ let moduleExports = {
|
|||||||
loader: 'extract-loader'
|
loader: 'extract-loader'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
loader: 'css-loader'
|
loader: 'css-loader',
|
||||||
|
options: {
|
||||||
|
esModule: false
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
//Compiliert zu CSS
|
//Compiliert zu CSS
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user