Add: AlienTimer

This commit is contained in:
2018-05-15 16:04:10 +09:00
parent c049ed18ad
commit 3aa2b43b54
6 changed files with 139 additions and 28 deletions
@@ -0,0 +1,99 @@
class AlienTimer {
constructor(aliens) {
this.aliens = aliens;
this.activatedAlienIndex = 0;
let posX = this.aliens[0].x;
let posY = this.aliens[0].y - AlienTimer.MOVE_UP_AMOUNT_PX;
this.timerText = game.add.text(posX, posY, "30", AlienTimer.DEFAULT_TEXT_FONT);
this.timerText.anchor.set(0.5);
var grd = this.timerText.context.createLinearGradient(0, 0, 0, this.timerText.height);
grd.addColorStop(0, '#FFD68E');
grd.addColorStop(1, '#B34C00');
this.timerText.fill = grd;
// this.setShadow(3, 3, 'rgba(0, 0, 0, 0.5)', 2);
this.timerText.stroke = '#000';
this.timerText.strokeThickness = 5;
this.timerEvent = null;
this.timeInterval = AlienTimer.DEFAULT_TIME_GAP_SEC;
this.timeLeft = this.timeInterval;
}
start() {
this.enableTimerOn(this.getActivatedAlien());
// this.getActivatedAlien().setActive(true);
this.timerText.text = this.timeLeft.toString();
if(this.timerEvent === null)
this.timerEvent = game.time.events.loop(Phaser.Timer.SECOND, this.updateTimer, this);
}
pause() {
}
stop() {
if(this.timerEvent)
this.removeTimer();
this.timerText.text = "";
for(let i = 0; i < this.aliens.length; i++)
this.aliens[i].stop();
}
next() {
this.timeLeft = this.timeInterval;
this.timerText.text = this.timeLeft.toString();
this.activatedAlienIndex++;
if(this.activatedAlienIndex >= this.aliens.length) {
this.timerText.text = "";
this.removeTimer();
return null;
}
this.enableTimerOn(this.getActivatedAlien());
}
getActivatedAlien() {
return this.aliens[this.activatedAlienIndex];
}
enableTimerOn(alien) {
alien.setActive(true);
this.timerText.x = alien.x;
}
disableTimerOn(alien) {
alien.setActive(false);
this.timerText.text = "";
}
updateTimer() {
this.timeLeft--;
if(this.timeLeft == 0) {
this.timeLeft = this.timeInterval;
this.getActivatedAlien().goOnstage();
} else {
this.timerText.text = this.timeLeft.toString();
}
}
removeTimer() {
game.time.events.remove(this.timerEvent);
this.timerEvent = null;
}
}
AlienTimer.DEFAULT_TEXT_FONT = {
font: "bold 30px Arial",
boundsAlignH: "center", // left, center. right
boundsAlignV: "middle", // top, middle, bottom
fill: "#fff"
};
AlienTimer.DEFAULT_TIME_GAP_SEC = 10;
AlienTimer.MOVE_UP_AMOUNT_PX = 60;