update to pc
This commit is contained in:
parent
f4ce1d54ee
commit
ba579e3bdf
1
orga/deleteLevels.txt
Normal file
1
orga/deleteLevels.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
310,131,
|
||||||
1
public/html/application/end.html
Normal file
1
public/html/application/end.html
Normal file
@ -0,0 +1 @@
|
|||||||
|
<div><div data-translation=game-ended></div></div>
|
||||||
@ -28,7 +28,7 @@
|
|||||||
<meta name="application-name" content="Matrix">
|
<meta name="application-name" content="Matrix">
|
||||||
<meta name="msapplication-config" content="img/browserconfig.xml">
|
<meta name="msapplication-config" content="img/browserconfig.xml">
|
||||||
|
|
||||||
<title>Stories</title>
|
<title>WordRotator</title>
|
||||||
|
|
||||||
<!-- Le styles -->
|
<!-- Le styles -->
|
||||||
<link href="core/css/foundation.css" media="screen,print" rel="stylesheet" type="text/css">
|
<link href="core/css/foundation.css" media="screen,print" rel="stylesheet" type="text/css">
|
||||||
@ -52,7 +52,7 @@
|
|||||||
<div class="top-bar-title">
|
<div class="top-bar-title">
|
||||||
<strong>
|
<strong>
|
||||||
<a class="hidden-link" href=".">
|
<a class="hidden-link" href=".">
|
||||||
Stories</a>
|
WordRotator</a>
|
||||||
</strong>
|
</strong>
|
||||||
</div>
|
</div>
|
||||||
<span data-responsive-toggle="responsive-menu" id="responsive-menu-toggle" class="right" data-hide-for="always"
|
<span data-responsive-toggle="responsive-menu" id="responsive-menu-toggle" class="right" data-hide-for="always"
|
||||||
|
|||||||
133
public/js/app.js
133
public/js/app.js
@ -3004,6 +3004,10 @@ class Segment{
|
|||||||
this.parent = null;
|
this.parent = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sameAs(otherSegment){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
setParent(parent)
|
setParent(parent)
|
||||||
{
|
{
|
||||||
this.parent = parent;
|
this.parent = parent;
|
||||||
@ -3103,16 +3107,28 @@ class ParentSegment extends Segment {
|
|||||||
this.rotation %= 360;
|
this.rotation %= 360;
|
||||||
|
|
||||||
this._updateRotationClass();
|
this._updateRotationClass();
|
||||||
this.getLevel().checkHasWon(new Promise((resolve, reject)=>{
|
this.getLevel().checkHasWon(new Promise((resolve, reject) => {
|
||||||
this.element.addEventListener("animationend", resolve);
|
this.element.addEventListener("animationend", resolve);
|
||||||
}));
|
}));
|
||||||
// return new DelayPromise(250);
|
// return new DelayPromise(250);
|
||||||
return new Promise(function(resolve) {
|
return new Promise(function (resolve) {
|
||||||
setTimeout(resolve, 250);
|
setTimeout(resolve, 250);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sameAs(otherSegment) {
|
||||||
|
if (!(otherSegment instanceof ParentSegment) || otherSegment.children.length !== this.children.length) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
for (let i = 0; i < this.children.length; i++) {
|
||||||
|
if (!this.children[i].sameAs(otherSegment.children[i])) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
applyRotations(rotations) {
|
applyRotations(rotations) {
|
||||||
// debugger;
|
// debugger;
|
||||||
this.rotation = rotations[0];
|
this.rotation = rotations[0];
|
||||||
@ -3129,7 +3145,9 @@ class ParentSegment extends Segment {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return super.isSolved();
|
return (this.rotation === 0 || (
|
||||||
|
this.children[0].sameAs(this.children[2]) && this.children[1].sameAs(this.children[3]) && (
|
||||||
|
this.rotation === 2 || this.children[0].sameAs(this.children[1]))))
|
||||||
}
|
}
|
||||||
|
|
||||||
setChildren(children) {
|
setChildren(children) {
|
||||||
@ -3173,19 +3191,21 @@ class ParentSegment extends Segment {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class LeafSegment extends Segment{
|
class LeafSegment extends Segment {
|
||||||
|
|
||||||
constructor(element, leaf) {
|
constructor(element, leaf) {
|
||||||
super(element);
|
super(element);
|
||||||
this.leaf = 'A';
|
this.leaf = 'A';
|
||||||
if (Helper.isNotNull(leaf))
|
if (Helper.isNotNull(leaf)) {
|
||||||
{
|
|
||||||
this.setLeaf(leaf);
|
this.setLeaf(leaf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setLeaf(leaf)
|
sameAs(otherSegment) {
|
||||||
{
|
return (otherSegment instanceof LeafSegment && otherSegment.leaf === this.leaf);
|
||||||
|
}
|
||||||
|
|
||||||
|
setLeaf(leaf) {
|
||||||
this.leaf = leaf;
|
this.leaf = leaf;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3359,6 +3379,24 @@ class RowLevel extends Level {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class SimpleLevel extends RowLevel{
|
||||||
|
constructor(container) {
|
||||||
|
super(container, 6);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class RowLevel8 extends RowLevel{
|
||||||
|
constructor(container) {
|
||||||
|
super(container, 8);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class RowLevel10 extends RowLevel{
|
||||||
|
constructor(container) {
|
||||||
|
super(container, 10);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
class LevelHelper {
|
class LevelHelper {
|
||||||
static setLevelType(typeId, level) {
|
static setLevelType(typeId, level) {
|
||||||
LevelHelper.types[typeId] = level;
|
LevelHelper.types[typeId] = level;
|
||||||
@ -3384,16 +3422,11 @@ class LevelHelper {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LevelHelper.types = {};
|
LevelHelper.types = {
|
||||||
|
20: SimpleLevel,
|
||||||
class SimpleLevel extends RowLevel{
|
40: RowLevel8,
|
||||||
|
60: RowLevel10,
|
||||||
constructor(container) {
|
};
|
||||||
super(container, 6);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
LevelHelper.setLevelType(20, SimpleLevel);
|
|
||||||
|
|
||||||
class WordRotatorDb extends MyDb {
|
class WordRotatorDb extends MyDb {
|
||||||
|
|
||||||
@ -3433,13 +3466,23 @@ class WordRotatorDb extends MyDb {
|
|||||||
async loadNextLevel(rendererTypes) {
|
async loadNextLevel(rendererTypes) {
|
||||||
const levels = await this.loadMany("difficulty", IDBKeyRange.lowerBound(0), WordRotatorDb.OBJECT_STORE.LEVEL);
|
const levels = await this.loadMany("difficulty", IDBKeyRange.lowerBound(0), WordRotatorDb.OBJECT_STORE.LEVEL);
|
||||||
|
|
||||||
|
let wrongLevels = [];
|
||||||
let newLevels = [];
|
let newLevels = [];
|
||||||
|
let difficulty = -1;
|
||||||
for (let i = 0, n = levels.length; i < n; i++) {
|
for (let i = 0, n = levels.length; i < n; i++) {
|
||||||
if (!levels[i]["deleted"] && !levels[i]["played"] && rendererTypes.indexOf(levels[i]["rendererType"]) !== -1) {
|
if ((difficulty < 0 || difficulty === levels[i]["difficulty"]) && !levels[i]["deleted"] && !levels[i]["played"] && rendererTypes.indexOf(levels[i]["rendererType"]) !== -1) {
|
||||||
newLevels.push(levels[i]);
|
newLevels.push(levels[i]);
|
||||||
|
difficulty = levels[i]["difficulty"];
|
||||||
|
}
|
||||||
|
else if (levels[i]["difficulty"] !== 0 && !levels[i]["deleted"] && !levels[i]["played"] ) {
|
||||||
|
wrongLevels.push(levels[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.log("levels count:", newLevels.length);
|
||||||
|
console.log("new levels:", newLevels);
|
||||||
|
console.log("wrong levels:", wrongLevels);
|
||||||
|
|
||||||
if (newLevels.length === 0) {
|
if (newLevels.length === 0) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -3447,8 +3490,7 @@ class WordRotatorDb extends MyDb {
|
|||||||
return newLevels[Math.round(Math.random() * newLevels.length) % newLevels.length];
|
return newLevels[Math.round(Math.random() * newLevels.length) % newLevels.length];
|
||||||
}
|
}
|
||||||
|
|
||||||
async saveLevelPlayed(levelId)
|
async saveLevelPlayed(levelId) {
|
||||||
{
|
|
||||||
const level = await this.loadLevel(levelId);
|
const level = await this.loadLevel(levelId);
|
||||||
level.played = true;
|
level.played = true;
|
||||||
return await this.saveObj(level, WordRotatorDb.OBJECT_STORE.LEVEL);
|
return await this.saveObj(level, WordRotatorDb.OBJECT_STORE.LEVEL);
|
||||||
@ -3460,15 +3502,22 @@ WordRotatorDb.OBJECT_STORE = {
|
|||||||
};
|
};
|
||||||
WordRotatorDb.instance = null;
|
WordRotatorDb.instance = null;
|
||||||
|
|
||||||
|
class EndSite extends AbstractSite$1{
|
||||||
|
constructor(siteManager) {
|
||||||
|
super(siteManager, "html/application/end.html");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
class LevelSite extends AbstractSite$1 {
|
class LevelSite extends AbstractSite$1 {
|
||||||
constructor(siteManager) {
|
constructor(siteManager) {
|
||||||
super(siteManager, "html/application/level.html", "level");
|
super(siteManager, "html/application/level.html");
|
||||||
}
|
}
|
||||||
|
|
||||||
createActionBarMenu(menu) {
|
createActionBarMenu(menu) {
|
||||||
menu = super.createActionBarMenu(menu);
|
menu = super.createActionBarMenu(menu);
|
||||||
|
|
||||||
this.levelCounterAction = new MenuAction("", function(){}, Menu.SHOW_ALWAYS, 0);
|
this.levelCounterAction = new MenuAction("", function () {
|
||||||
|
}, Menu.SHOW_ALWAYS, 0);
|
||||||
this.levelCounterAction.setShouldTranslate(false);
|
this.levelCounterAction.setShouldTranslate(false);
|
||||||
menu.addAction(this.levelCounterAction);
|
menu.addAction(this.levelCounterAction);
|
||||||
|
|
||||||
@ -3476,10 +3525,7 @@ class LevelSite extends AbstractSite$1 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onConstruct(args) {
|
onConstruct(args) {
|
||||||
this.setTitle("Level");
|
|
||||||
|
|
||||||
this.levelCounter = Helper.nonNull(localStorage.getItem("levelCounter"), 1);
|
this.levelCounter = Helper.nonNull(localStorage.getItem("levelCounter"), 1);
|
||||||
|
|
||||||
return super.onConstruct(args);
|
return super.onConstruct(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3500,7 +3546,7 @@ class LevelSite extends AbstractSite$1 {
|
|||||||
|
|
||||||
let self = this;
|
let self = this;
|
||||||
let continueButton = this.findBy("#continue-button");
|
let continueButton = this.findBy("#continue-button");
|
||||||
continueButton.addEventListener("click", ()=> {
|
continueButton.addEventListener("click", () => {
|
||||||
self.nextLevel();
|
self.nextLevel();
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -3520,7 +3566,12 @@ class LevelSite extends AbstractSite$1 {
|
|||||||
this._siteContent.classList.remove('won');
|
this._siteContent.classList.remove('won');
|
||||||
|
|
||||||
const db = WordRotatorDb.getInstance();
|
const db = WordRotatorDb.getInstance();
|
||||||
const nextLevelJson = await db.loadNextLevel([20]);
|
const nextLevelJson = await db.loadNextLevel([40]);
|
||||||
|
if (nextLevelJson === null)
|
||||||
|
{
|
||||||
|
this.startSite(EndSite);
|
||||||
|
return;
|
||||||
|
}
|
||||||
const level = LevelHelper.inflateLevel(nextLevelJson, this.templateContainer);
|
const level = LevelHelper.inflateLevel(nextLevelJson, this.templateContainer);
|
||||||
|
|
||||||
const self = this;
|
const self = this;
|
||||||
@ -3534,7 +3585,7 @@ class LevelSite extends AbstractSite$1 {
|
|||||||
let levelSegment = this.findBy("#level");
|
let levelSegment = this.findBy("#level");
|
||||||
levelSegment.removeAllChildren().appendChild(level.getRootSegment().getElement());
|
levelSegment.removeAllChildren().appendChild(level.getRootSegment().getElement());
|
||||||
let scaleHelper = new ScaleHelper();
|
let scaleHelper = new ScaleHelper();
|
||||||
scaleHelper.scaleToFull(levelSegment, levelSegment.parentElement, false, false, 2,level.words[0].length * 2);
|
scaleHelper.scaleToFull(levelSegment, levelSegment.parentElement, false, false, 2, level.words[0].length * 2);
|
||||||
|
|
||||||
this.level = level;
|
this.level = level;
|
||||||
}
|
}
|
||||||
@ -3543,16 +3594,22 @@ class LevelSite extends AbstractSite$1 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async levelWon(level){
|
async levelWon(level) {
|
||||||
const db = WordRotatorDb.getInstance();
|
try {
|
||||||
// db.saveLevelPlayed(level);
|
const db = WordRotatorDb.getInstance();
|
||||||
|
const savePromise = db.saveLevelPlayed(level.getId());
|
||||||
|
|
||||||
this.levelCounter++;
|
this.levelCounter++;
|
||||||
localStorage.setItem("levelCounter", this.levelCounter);
|
localStorage.setItem("levelCounter", this.levelCounter);
|
||||||
this.levelCounterAction.setTitle(this.levelCounter);
|
this.levelCounterAction.setTitle(this.levelCounter);
|
||||||
this.levelCounterAction.redraw();
|
this.levelCounterAction.redraw();
|
||||||
|
|
||||||
this._siteContent.classList.add('won');
|
this._siteContent.classList.add('won');
|
||||||
|
await savePromise;
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
3
src/module/Application/pwa/html/application/end.html
Normal file
3
src/module/Application/pwa/html/application/end.html
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<div>
|
||||||
|
<div data-translation="game-ended"></div>
|
||||||
|
</div>
|
||||||
@ -38,13 +38,23 @@ export class WordRotatorDb extends MyDb {
|
|||||||
async loadNextLevel(rendererTypes) {
|
async loadNextLevel(rendererTypes) {
|
||||||
const levels = await this.loadMany("difficulty", IDBKeyRange.lowerBound(0), WordRotatorDb.OBJECT_STORE.LEVEL);
|
const levels = await this.loadMany("difficulty", IDBKeyRange.lowerBound(0), WordRotatorDb.OBJECT_STORE.LEVEL);
|
||||||
|
|
||||||
|
let wrongLevels = [];
|
||||||
let newLevels = [];
|
let newLevels = [];
|
||||||
|
let difficulty = -1;
|
||||||
for (let i = 0, n = levels.length; i < n; i++) {
|
for (let i = 0, n = levels.length; i < n; i++) {
|
||||||
if (!levels[i]["deleted"] && !levels[i]["played"] && rendererTypes.indexOf(levels[i]["rendererType"]) !== -1) {
|
if ((difficulty < 0 || difficulty === levels[i]["difficulty"]) && !levels[i]["deleted"] && !levels[i]["played"] && rendererTypes.indexOf(levels[i]["rendererType"]) !== -1) {
|
||||||
newLevels.push(levels[i]);
|
newLevels.push(levels[i]);
|
||||||
|
difficulty = levels[i]["difficulty"];
|
||||||
|
}
|
||||||
|
else if (levels[i]["difficulty"] !== 0 && !levels[i]["deleted"] && !levels[i]["played"] ) {
|
||||||
|
wrongLevels.push(levels[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.log("levels count:", newLevels.length);
|
||||||
|
console.log("new levels:", newLevels);
|
||||||
|
console.log("wrong levels:", wrongLevels);
|
||||||
|
|
||||||
if (newLevels.length === 0) {
|
if (newLevels.length === 0) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -52,8 +62,7 @@ export class WordRotatorDb extends MyDb {
|
|||||||
return newLevels[Math.round(Math.random() * newLevels.length) % newLevels.length];
|
return newLevels[Math.round(Math.random() * newLevels.length) % newLevels.length];
|
||||||
}
|
}
|
||||||
|
|
||||||
async saveLevelPlayed(levelId)
|
async saveLevelPlayed(levelId) {
|
||||||
{
|
|
||||||
const level = await this.loadLevel(levelId);
|
const level = await this.loadLevel(levelId);
|
||||||
level.played = true;
|
level.played = true;
|
||||||
return await this.saveObj(level, WordRotatorDb.OBJECT_STORE.LEVEL);
|
return await this.saveObj(level, WordRotatorDb.OBJECT_STORE.LEVEL);
|
||||||
|
|||||||
7
src/module/Application/pwa/js/site/EndSite.js
Normal file
7
src/module/Application/pwa/js/site/EndSite.js
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
import {AbstractSite} from "../../../../../js/lib/pwa-lib";
|
||||||
|
|
||||||
|
export class EndSite extends AbstractSite{
|
||||||
|
constructor(siteManager) {
|
||||||
|
super(siteManager, "html/application/end.html");
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -6,16 +6,18 @@ import {SimpleLevel} from "../wordrotator/Level/SimpleLevel";
|
|||||||
import {LevelHelper} from "../wordrotator/Level/LevelHelper";
|
import {LevelHelper} from "../wordrotator/Level/LevelHelper";
|
||||||
import {WordRotatorDb} from "../WordRotatorDb";
|
import {WordRotatorDb} from "../WordRotatorDb";
|
||||||
import {ScaleHelper} from "../../../../../js/lib/pwa-assets";
|
import {ScaleHelper} from "../../../../../js/lib/pwa-assets";
|
||||||
|
import {EndSite} from "./EndSite";
|
||||||
|
|
||||||
export class LevelSite extends AbstractSite {
|
export class LevelSite extends AbstractSite {
|
||||||
constructor(siteManager) {
|
constructor(siteManager) {
|
||||||
super(siteManager, "html/application/level.html", "level");
|
super(siteManager, "html/application/level.html");
|
||||||
}
|
}
|
||||||
|
|
||||||
createActionBarMenu(menu) {
|
createActionBarMenu(menu) {
|
||||||
menu = super.createActionBarMenu(menu);
|
menu = super.createActionBarMenu(menu);
|
||||||
|
|
||||||
this.levelCounterAction = new MenuAction("", function(){}, Menu.SHOW_ALWAYS, 0);
|
this.levelCounterAction = new MenuAction("", function () {
|
||||||
|
}, Menu.SHOW_ALWAYS, 0);
|
||||||
this.levelCounterAction.setShouldTranslate(false);
|
this.levelCounterAction.setShouldTranslate(false);
|
||||||
menu.addAction(this.levelCounterAction);
|
menu.addAction(this.levelCounterAction);
|
||||||
|
|
||||||
@ -23,10 +25,7 @@ export class LevelSite extends AbstractSite {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onConstruct(args) {
|
onConstruct(args) {
|
||||||
this.setTitle("Level");
|
|
||||||
|
|
||||||
this.levelCounter = Helper.nonNull(localStorage.getItem("levelCounter"), 1);
|
this.levelCounter = Helper.nonNull(localStorage.getItem("levelCounter"), 1);
|
||||||
|
|
||||||
return super.onConstruct(args);
|
return super.onConstruct(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -47,7 +46,7 @@ export class LevelSite extends AbstractSite {
|
|||||||
|
|
||||||
let self = this;
|
let self = this;
|
||||||
let continueButton = this.findBy("#continue-button");
|
let continueButton = this.findBy("#continue-button");
|
||||||
continueButton.addEventListener("click", ()=> {
|
continueButton.addEventListener("click", () => {
|
||||||
self.nextLevel();
|
self.nextLevel();
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -67,7 +66,13 @@ export class LevelSite extends AbstractSite {
|
|||||||
this._siteContent.classList.remove('won');
|
this._siteContent.classList.remove('won');
|
||||||
|
|
||||||
const db = WordRotatorDb.getInstance();
|
const db = WordRotatorDb.getInstance();
|
||||||
const nextLevelJson = await db.loadNextLevel([20]);
|
// const nextLevelJson = await db.loadNextLevel([20,40,60]);
|
||||||
|
const nextLevelJson = await db.loadNextLevel([40]);
|
||||||
|
if (nextLevelJson === null)
|
||||||
|
{
|
||||||
|
this.startSite(EndSite);
|
||||||
|
return;
|
||||||
|
}
|
||||||
const level = LevelHelper.inflateLevel(nextLevelJson, this.templateContainer);
|
const level = LevelHelper.inflateLevel(nextLevelJson, this.templateContainer);
|
||||||
|
|
||||||
const self = this;
|
const self = this;
|
||||||
@ -81,7 +86,7 @@ export class LevelSite extends AbstractSite {
|
|||||||
let levelSegment = this.findBy("#level");
|
let levelSegment = this.findBy("#level");
|
||||||
levelSegment.removeAllChildren().appendChild(level.getRootSegment().getElement());
|
levelSegment.removeAllChildren().appendChild(level.getRootSegment().getElement());
|
||||||
let scaleHelper = new ScaleHelper();
|
let scaleHelper = new ScaleHelper();
|
||||||
scaleHelper.scaleToFull(levelSegment, levelSegment.parentElement, false, false, 2,level.words[0].length * 2);
|
scaleHelper.scaleToFull(levelSegment, levelSegment.parentElement, false, false, 2, level.words[0].length * 2);
|
||||||
|
|
||||||
this.level = level;
|
this.level = level;
|
||||||
}
|
}
|
||||||
@ -90,15 +95,21 @@ export class LevelSite extends AbstractSite {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async levelWon(level){
|
async levelWon(level) {
|
||||||
const db = WordRotatorDb.getInstance();
|
try {
|
||||||
// db.saveLevelPlayed(level);
|
const db = WordRotatorDb.getInstance();
|
||||||
|
const savePromise = db.saveLevelPlayed(level.getId());
|
||||||
|
|
||||||
this.levelCounter++;
|
this.levelCounter++;
|
||||||
localStorage.setItem("levelCounter", this.levelCounter);
|
localStorage.setItem("levelCounter", this.levelCounter);
|
||||||
this.levelCounterAction.setTitle(this.levelCounter);
|
this.levelCounterAction.setTitle(this.levelCounter);
|
||||||
this.levelCounterAction.redraw();
|
this.levelCounterAction.redraw();
|
||||||
|
|
||||||
this._siteContent.classList.add('won');
|
this._siteContent.classList.add('won');
|
||||||
|
await savePromise;
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,3 +1,7 @@
|
|||||||
|
import {SimpleLevel} from "./SimpleLevel";
|
||||||
|
import {RowLevel8} from "./RowLevel8";
|
||||||
|
import {RowLevel10} from "./RowLevel10";
|
||||||
|
|
||||||
export class LevelHelper {
|
export class LevelHelper {
|
||||||
static setLevelType(typeId, level) {
|
static setLevelType(typeId, level) {
|
||||||
LevelHelper.types[typeId] = level;
|
LevelHelper.types[typeId] = level;
|
||||||
@ -23,4 +27,8 @@ export class LevelHelper {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LevelHelper.types = {};
|
LevelHelper.types = {
|
||||||
|
20: SimpleLevel,
|
||||||
|
40: RowLevel8,
|
||||||
|
60: RowLevel10,
|
||||||
|
};
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
import {RowLevel} from "./RowLevel";
|
||||||
|
|
||||||
|
export class RowLevel10 extends RowLevel{
|
||||||
|
constructor(container) {
|
||||||
|
super(container, 10);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
import {RowLevel} from "./RowLevel";
|
||||||
|
|
||||||
|
export class RowLevel8 extends RowLevel{
|
||||||
|
constructor(container) {
|
||||||
|
super(container, 8);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,11 +1,7 @@
|
|||||||
import {RowLevel} from "./RowLevel";
|
import {RowLevel} from "./RowLevel";
|
||||||
import {LevelHelper} from "./LevelHelper";
|
|
||||||
|
|
||||||
export class SimpleLevel extends RowLevel{
|
export class SimpleLevel extends RowLevel{
|
||||||
|
|
||||||
constructor(container) {
|
constructor(container) {
|
||||||
super(container, 6);
|
super(container, 6);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LevelHelper.setLevelType(20, SimpleLevel);
|
|
||||||
@ -1,19 +1,21 @@
|
|||||||
import {Segment} from "./Segment";
|
import {Segment} from "./Segment";
|
||||||
import {Helper} from "../../../../../../js/lib/pwa-lib";
|
import {Helper} from "../../../../../../js/lib/pwa-lib";
|
||||||
|
|
||||||
export class LeafSegment extends Segment{
|
export class LeafSegment extends Segment {
|
||||||
|
|
||||||
constructor(element, leaf) {
|
constructor(element, leaf) {
|
||||||
super(element);
|
super(element);
|
||||||
this.leaf = 'A';
|
this.leaf = 'A';
|
||||||
if (Helper.isNotNull(leaf))
|
if (Helper.isNotNull(leaf)) {
|
||||||
{
|
|
||||||
this.setLeaf(leaf);
|
this.setLeaf(leaf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setLeaf(leaf)
|
sameAs(otherSegment) {
|
||||||
{
|
return (otherSegment instanceof LeafSegment && otherSegment.leaf === this.leaf);
|
||||||
|
}
|
||||||
|
|
||||||
|
setLeaf(leaf) {
|
||||||
this.leaf = leaf;
|
this.leaf = leaf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -14,16 +14,28 @@ export class ParentSegment extends Segment {
|
|||||||
this.rotation %= 360;
|
this.rotation %= 360;
|
||||||
|
|
||||||
this._updateRotationClass();
|
this._updateRotationClass();
|
||||||
this.getLevel().checkHasWon(new Promise((resolve, reject)=>{
|
this.getLevel().checkHasWon(new Promise((resolve, reject) => {
|
||||||
this.element.addEventListener("animationend", resolve);
|
this.element.addEventListener("animationend", resolve);
|
||||||
}));
|
}));
|
||||||
// return new DelayPromise(250);
|
// return new DelayPromise(250);
|
||||||
return new Promise(function(resolve) {
|
return new Promise(function (resolve) {
|
||||||
setTimeout(resolve, 250);
|
setTimeout(resolve, 250);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sameAs(otherSegment) {
|
||||||
|
if (!(otherSegment instanceof ParentSegment) || otherSegment.children.length !== this.children.length) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
for (let i = 0; i < this.children.length; i++) {
|
||||||
|
if (!this.children[i].sameAs(otherSegment.children[i])) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
applyRotations(rotations) {
|
applyRotations(rotations) {
|
||||||
// debugger;
|
// debugger;
|
||||||
this.rotation = rotations[0];
|
this.rotation = rotations[0];
|
||||||
@ -40,7 +52,9 @@ export class ParentSegment extends Segment {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return super.isSolved();
|
return (this.rotation === 0 || (
|
||||||
|
this.children[0].sameAs(this.children[2]) && this.children[1].sameAs(this.children[3]) && (
|
||||||
|
this.rotation === 2 || this.children[0].sameAs(this.children[1]))))
|
||||||
}
|
}
|
||||||
|
|
||||||
setChildren(children) {
|
setChildren(children) {
|
||||||
|
|||||||
@ -7,6 +7,10 @@ export class Segment{
|
|||||||
this.parent = null;
|
this.parent = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sameAs(otherSegment){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
setParent(parent)
|
setParent(parent)
|
||||||
{
|
{
|
||||||
this.parent = parent;
|
this.parent = parent;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user