add TimedGame class, integrate it to smartmonday game
This commit is contained in:
parent
108fcf3d31
commit
5cb4c299a3
5 changed files with 44 additions and 14 deletions
|
|
@ -18,12 +18,10 @@ export class Game {
|
|||
this.reset();
|
||||
}
|
||||
|
||||
end() {}
|
||||
|
||||
_win() {
|
||||
this.win = true;
|
||||
console.log("game won");
|
||||
this.end();
|
||||
/* status indicates if its a win or a loss */
|
||||
end(status) {
|
||||
this.win = status;
|
||||
console.log(status ? "game won" : "game lost");
|
||||
// we probably want to call a callback here
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,3 +2,4 @@ export { Fridge } from "./fridge.js";
|
|||
export { Opinator } from "./opinator.js";
|
||||
export { SmartMonday } from "./smartMonday.js";
|
||||
export { CleanupHS } from "./cleanupHS.js";
|
||||
export { TimedGame } from "./timedGame.js";
|
||||
|
|
|
|||
|
|
@ -1,12 +1,14 @@
|
|||
import { Application, Assets, Container, Sprite, Rectangle } from "pixi.js";
|
||||
import { Game } from "./game";
|
||||
import { TimedGame } from "./timedGame";
|
||||
import { KeyBoardListener } from "../common";
|
||||
|
||||
export class SmartMonday extends Game {
|
||||
export class SmartMonday extends TimedGame {
|
||||
constructor() {
|
||||
super();
|
||||
super(10000); // 10 chars per second
|
||||
|
||||
this._goal = 100 * this._difficulty; // number of characters
|
||||
this.timeout = 1000 * (this._goal / 10); // 10 chars per second
|
||||
|
||||
this._currentString = "";
|
||||
this._keyEventHandle = undefined;
|
||||
}
|
||||
|
|
@ -22,12 +24,13 @@ export class SmartMonday extends Game {
|
|||
this._currentString += event.key;
|
||||
console.log("current text", this._currentString);
|
||||
if (this._currentString.length >= this._goal) {
|
||||
this._win();
|
||||
this.end(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
end() {
|
||||
end(status) {
|
||||
super.end(status);
|
||||
KeyBoardListener.offKeyDown(this._keyEventHandle);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
28
src/games/timedGame.js
Normal file
28
src/games/timedGame.js
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
import { Game } from "./game";
|
||||
|
||||
export class TimedGame extends Game {
|
||||
constructor(time) {
|
||||
super();
|
||||
this._timeoutId = undefined;
|
||||
this.timeout = time;
|
||||
}
|
||||
|
||||
start() {
|
||||
super.start();
|
||||
this._timeoutId = setInterval(() => {
|
||||
console.log("time end");
|
||||
this.end(this._win);
|
||||
}, this.timeout);
|
||||
}
|
||||
|
||||
reset() {
|
||||
super.reset();
|
||||
clearTimeout(this._timeoutId);
|
||||
this._timeoutId = undefined;
|
||||
}
|
||||
|
||||
end(status) {
|
||||
super.end(status);
|
||||
clearTimeout(this._timeoutId);
|
||||
}
|
||||
}
|
||||
|
|
@ -101,11 +101,11 @@ function switchToGame(gameContainer, newGame) {
|
|||
const smartMonday = new SmartMonday();
|
||||
const cleanupHS = new CleanupHS(root.width, root.height);
|
||||
//gameContainter.addChild(fridge.gameContainer);
|
||||
gameContainter.addChild(opinator.gameContainer);
|
||||
//gameContainter.addChild(smartMonday.gameContainer);
|
||||
//gameContainter.addChild(opinator.gameContainer);
|
||||
gameContainter.addChild(smartMonday.gameContainer);
|
||||
//gameContainter.addChild(cleanupHS.gameContainer);
|
||||
|
||||
root.addChild(gameContainter);
|
||||
|
||||
opinator.start();
|
||||
smartMonday.start();
|
||||
})();
|
||||
|
|
|
|||
Loading…
Reference in a new issue