From e2cf7e0a34ea944c17e4d27e1d9f39975573dc47 Mon Sep 17 00:00:00 2001 From: silas Date: Wed, 4 Jul 2018 16:21:16 +0200 Subject: [PATCH] update to pc --- public/html/application/level.html | 2 +- public/js/app.js | 74 +++++++++++++++++-- .../pwa/html/application/level.html | 3 + .../Application/pwa/js/site/LevelSite.js | 10 ++- .../pwa/js/wordrotator/Level/LevelHelper.js | 2 + .../js/wordrotator/Level/SixWordsRowLevel.js | 61 +++++++++++++++ .../wordrotator/Level/ThreeWordsRowLevel8.js | 7 ++ .../wordrotator/Segment/TemplateContainer.js | 8 +- .../js/wordrotator/Segment/TriangleSegment.js | 5 ++ 9 files changed, 161 insertions(+), 11 deletions(-) create mode 100644 src/module/Application/pwa/js/wordrotator/Level/SixWordsRowLevel.js create mode 100644 src/module/Application/pwa/js/wordrotator/Level/ThreeWordsRowLevel8.js create mode 100644 src/module/Application/pwa/js/wordrotator/Segment/TriangleSegment.js diff --git a/public/html/application/level.html b/public/html/application/level.html index 533f394..b259b75 100644 --- a/public/html/application/level.html +++ b/public/html/application/level.html @@ -1 +1 @@ -
\ No newline at end of file +
\ No newline at end of file diff --git a/public/js/app.js b/public/js/app.js index 980cee8..7283010 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -3215,10 +3215,11 @@ class LeafSegment extends Segment { } class TemplateContainer{ - constructor(leafTemplate, parentTemplate, rowTemplate){ + constructor(leafTemplate, parentTemplate, rowTemplate, triangleTemplate){ this.leafTemplate = leafTemplate; this.parentTemplate = parentTemplate; this.rowTemplate = rowTemplate; + this.triangleTemplate = triangleTemplate; } copyLeafTemplate() @@ -3235,6 +3236,11 @@ class TemplateContainer{ { return Helper.cloneNode(this.rowTemplate); } + + copyTriangleTemplate() + { + return Helper.cloneNode(this.triangleTemplate); + } } class Level { @@ -3397,6 +3403,60 @@ class RowLevel10 extends RowLevel{ } } +class TriangleSegment extends RowSegment{ + +} + +class ThreeWordsRowLevel extends Level { + + constructor(templateContainer, wordLength) { + super(templateContainer); + this.wordLength = wordLength; + } + + createSegments() { + if (this.words.length >= 3 && this.words[0].length >= this.wordLength && this.words[1].length >= this.wordLength && this.words[2].length >= this.wordLength) { + let leafsWordOne = Level._createLeafsForWord(this.words[0], this.templateContainer.copyLeafTemplate()); + let leafsWordTwo = Level._createLeafsForWord(this.words[1], this.templateContainer.copyLeafTemplate()); + let leafsWordThree = Level._createLeafsForWord(this.words[2], this.templateContainer.copyLeafTemplate()); + + let rootSegment = new RowSegment(this.templateContainer.copyRowTemplate()); + for (let i = 0, n = this.wordLength / 2; i < n; i++) { + let parent = new ParentSegment(this.templateContainer.copyParentTemplate()); + let triangle = new TriangleSegment(this.templateContainer.copyTriangleTemplate()); + if (i % 2 === 0) { + parent.addChild(leafsWordOne[2 * i]); + parent.addChild(leafsWordOne[2 * i + 1]); + parent.addChild(leafsWordTwo[2 * i]); + parent.addChild(leafsWordTwo[2 * i + 1]); + + triangle.addChild(parent); + triangle.addChild(leafsWordThree[2 * i]); + triangle.addChild(leafsWordThree[2 * i + 1]); + } + else { + parent.addChild(leafsWordTwo[2 * i]); + parent.addChild(leafsWordTwo[2 * i + 1]); + parent.addChild(leafsWordThree[2 * i]); + parent.addChild(leafsWordThree[2 * i + 1]); + + triangle.addChild(leafsWordOne[2 * i]); + triangle.addChild(leafsWordOne[2 * i + 1]); + triangle.addChild(parent); + } + rootSegment.addChild(triangle); + } + this.setRootSegment(rootSegment); + } + } +} + +class ThreeWordsRowLevel8 extends ThreeWordsRowLevel { + constructor(templateContainer) { + super(templateContainer, 8); + } +} + class LevelHelper { static setLevelType(typeId, level) { LevelHelper.types[typeId] = level; @@ -3426,6 +3486,7 @@ LevelHelper.types = { 20: SimpleLevel, 40: RowLevel8, 60: RowLevel10, + 100: ThreeWordsRowLevel8, }; class WordRotatorDb extends MyDb { @@ -3535,14 +3596,17 @@ class LevelSite extends AbstractSite$1 { let leafSegmentTemplate = this.findBy("#segment-leaf-template"); let parentSegmentTemplate = this.findBy("#segment-parent-template"); let rowSegmentTemplate = this.findBy("#segment-row-template"); + let triangleTemplate = this.findBy("#segment-triangle-template"); leafSegmentTemplate.id = null; parentSegmentTemplate.id = null; rowSegmentTemplate.id = null; + triangleTemplate.id = null; leafSegmentTemplate.remove(); parentSegmentTemplate.remove(); rowSegmentTemplate.remove(); + triangleTemplate.remove(); let self = this; let continueButton = this.findBy("#continue-button"); @@ -3557,7 +3621,7 @@ class LevelSite extends AbstractSite$1 { scaleHelper.scaleToFull(wonText, wonText.parentElement); this.levelCounterAction.setTitle(this.levelCounter); - this.templateContainer = new TemplateContainer(leafSegmentTemplate, parentSegmentTemplate, rowSegmentTemplate); + this.templateContainer = new TemplateContainer(leafSegmentTemplate, parentSegmentTemplate, rowSegmentTemplate, triangleTemplate); this.nextLevel(); } @@ -3566,9 +3630,9 @@ class LevelSite extends AbstractSite$1 { this._siteContent.classList.remove('won'); const db = WordRotatorDb.getInstance(); - const nextLevelJson = await db.loadNextLevel([40]); - if (nextLevelJson === null) - { + // const nextLevelJson = await db.loadNextLevel([20,40,60]); + const nextLevelJson = await db.loadNextLevel([100]); + if (nextLevelJson === null) { this.startSite(EndSite); return; } diff --git a/src/module/Application/pwa/html/application/level.html b/src/module/Application/pwa/html/application/level.html index 7ed5269..2e03198 100644 --- a/src/module/Application/pwa/html/application/level.html +++ b/src/module/Application/pwa/html/application/level.html @@ -9,6 +9,9 @@
+
+
+
diff --git a/src/module/Application/pwa/js/site/LevelSite.js b/src/module/Application/pwa/js/site/LevelSite.js index a9ae631..ee485cb 100644 --- a/src/module/Application/pwa/js/site/LevelSite.js +++ b/src/module/Application/pwa/js/site/LevelSite.js @@ -35,14 +35,17 @@ export class LevelSite extends AbstractSite { let leafSegmentTemplate = this.findBy("#segment-leaf-template"); let parentSegmentTemplate = this.findBy("#segment-parent-template"); let rowSegmentTemplate = this.findBy("#segment-row-template"); + let triangleTemplate = this.findBy("#segment-triangle-template"); leafSegmentTemplate.id = null; parentSegmentTemplate.id = null; rowSegmentTemplate.id = null; + triangleTemplate.id = null; leafSegmentTemplate.remove(); parentSegmentTemplate.remove(); rowSegmentTemplate.remove(); + triangleTemplate.remove(); let self = this; let continueButton = this.findBy("#continue-button"); @@ -57,7 +60,7 @@ export class LevelSite extends AbstractSite { scaleHelper.scaleToFull(wonText, wonText.parentElement); this.levelCounterAction.setTitle(this.levelCounter); - this.templateContainer = new TemplateContainer(leafSegmentTemplate, parentSegmentTemplate, rowSegmentTemplate); + this.templateContainer = new TemplateContainer(leafSegmentTemplate, parentSegmentTemplate, rowSegmentTemplate, triangleTemplate); this.nextLevel(); } @@ -67,9 +70,8 @@ export class LevelSite extends AbstractSite { const db = WordRotatorDb.getInstance(); // const nextLevelJson = await db.loadNextLevel([20,40,60]); - const nextLevelJson = await db.loadNextLevel([40]); - if (nextLevelJson === null) - { + const nextLevelJson = await db.loadNextLevel([100]); + if (nextLevelJson === null) { this.startSite(EndSite); return; } diff --git a/src/module/Application/pwa/js/wordrotator/Level/LevelHelper.js b/src/module/Application/pwa/js/wordrotator/Level/LevelHelper.js index 2f0f419..d8967c1 100644 --- a/src/module/Application/pwa/js/wordrotator/Level/LevelHelper.js +++ b/src/module/Application/pwa/js/wordrotator/Level/LevelHelper.js @@ -1,6 +1,7 @@ import {SimpleLevel} from "./SimpleLevel"; import {RowLevel8} from "./RowLevel8"; import {RowLevel10} from "./RowLevel10"; +import {ThreeWordsRowLevel8} from "./ThreeWordsRowLevel8"; export class LevelHelper { static setLevelType(typeId, level) { @@ -31,4 +32,5 @@ LevelHelper.types = { 20: SimpleLevel, 40: RowLevel8, 60: RowLevel10, + 100: ThreeWordsRowLevel8, }; \ No newline at end of file diff --git a/src/module/Application/pwa/js/wordrotator/Level/SixWordsRowLevel.js b/src/module/Application/pwa/js/wordrotator/Level/SixWordsRowLevel.js new file mode 100644 index 0000000..32f7851 --- /dev/null +++ b/src/module/Application/pwa/js/wordrotator/Level/SixWordsRowLevel.js @@ -0,0 +1,61 @@ +import {RowSegment} from "../Segment/RowSegment"; +import {Level} from "./Level"; +import {ParentSegment} from "../Segment/ParentSegment"; +import {TriangleSegment} from "../Segment/TriangleSegment"; + +export class SixWordsRowLevel extends Level { + + constructor(templateContainer, wordLength) { + super(templateContainer); + this.wordLength = wordLength; + } + + createSegments() { + if (this.words.length >= 6 && + this.words[0].length >= this.wordLength && + this.words[1].length >= this.wordLength && + this.words[2].length >= this.wordLength && + this.words[3].length >= this.wordLength && + this.words[4].length >= this.wordLength && + this.words[5].length >= this.wordLength + ) { + let leafsWords = []; + leafsWords[0] = Level._createLeafsForWord(this.words[0], this.templateContainer.copyLeafTemplate()); + leafsWords[1] = Level._createLeafsForWord(this.words[0], this.templateContainer.copyLeafTemplate()); + leafsWords[2] = Level._createLeafsForWord(this.words[0], this.templateContainer.copyLeafTemplate()); + leafsWords[3] = Level._createLeafsForWord(this.words[0], this.templateContainer.copyLeafTemplate()); + leafsWords[4] = Level._createLeafsForWord(this.words[0], this.templateContainer.copyLeafTemplate()); + leafsWords[5] = Level._createLeafsForWord(this.words[0], this.templateContainer.copyLeafTemplate()); + + let leafes = []; + + let rootSegment = new RowSegment(this.templateContainer.copyRowTemplate()); + for (let i = 0, n = this.wordLength / 2; i < n; i++) { + let parent = new ParentSegment(this.templateContainer.copyParentTemplate()); + let triangle = new TriangleSegment(this.templateContainer.copyTriangleTemplate()); + if (i % 2 === 0) { + parent.addChild(leafsWordOne[2 * i]); + parent.addChild(leafsWordOne[2 * i + 1]); + parent.addChild(leafsWordTwo[2 * i]); + parent.addChild(leafsWordTwo[2 * i + 1]); + + triangle.addChild(parent); + triangle.addChild(leafsWordThree[2 * i]); + triangle.addChild(leafsWordThree[2 * i + 1]); + } + else { + parent.addChild(leafsWordTwo[2 * i]); + parent.addChild(leafsWordTwo[2 * i + 1]); + parent.addChild(leafsWordThree[2 * i]); + parent.addChild(leafsWordThree[2 * i + 1]); + + triangle.addChild(leafsWordOne[2 * i]); + triangle.addChild(leafsWordOne[2 * i + 1]); + triangle.addChild(parent); + } + rootSegment.addChild(triangle); + } + this.setRootSegment(rootSegment) + } + } +} \ No newline at end of file diff --git a/src/module/Application/pwa/js/wordrotator/Level/ThreeWordsRowLevel8.js b/src/module/Application/pwa/js/wordrotator/Level/ThreeWordsRowLevel8.js new file mode 100644 index 0000000..59171a9 --- /dev/null +++ b/src/module/Application/pwa/js/wordrotator/Level/ThreeWordsRowLevel8.js @@ -0,0 +1,7 @@ +import {SixWordsRowLevel} from "./SixWordsRowLevel"; + +export class ThreeWordsRowLevel8 extends SixWordsRowLevel { + constructor(templateContainer) { + super(templateContainer, 8); + } +} \ No newline at end of file diff --git a/src/module/Application/pwa/js/wordrotator/Segment/TemplateContainer.js b/src/module/Application/pwa/js/wordrotator/Segment/TemplateContainer.js index fb33660..6276f14 100644 --- a/src/module/Application/pwa/js/wordrotator/Segment/TemplateContainer.js +++ b/src/module/Application/pwa/js/wordrotator/Segment/TemplateContainer.js @@ -1,10 +1,11 @@ import {Helper} from "../../../../../../js/lib/pwa-lib"; export class TemplateContainer{ - constructor(leafTemplate, parentTemplate, rowTemplate){ + constructor(leafTemplate, parentTemplate, rowTemplate, triangleTemplate){ this.leafTemplate = leafTemplate; this.parentTemplate = parentTemplate; this.rowTemplate = rowTemplate; + this.triangleTemplate = triangleTemplate; } copyLeafTemplate() @@ -21,4 +22,9 @@ export class TemplateContainer{ { return Helper.cloneNode(this.rowTemplate); } + + copyTriangleTemplate() + { + return Helper.cloneNode(this.triangleTemplate); + } } \ No newline at end of file diff --git a/src/module/Application/pwa/js/wordrotator/Segment/TriangleSegment.js b/src/module/Application/pwa/js/wordrotator/Segment/TriangleSegment.js new file mode 100644 index 0000000..9bc1435 --- /dev/null +++ b/src/module/Application/pwa/js/wordrotator/Segment/TriangleSegment.js @@ -0,0 +1,5 @@ +import {RowSegment} from "./RowSegment"; + +export class TriangleSegment extends RowSegment{ + +} \ No newline at end of file