Files
chocomae/src/game/mouse/dodge/game.js
T
2019-01-17 20:42:33 +09:00

212 lines
5.4 KiB
JavaScript

var Game = {
// preload: function() {
// game.stage.disableVisibilityChange = true;
// },
create: function() {
this.dbConnectManager = new DBConnectManager();
sessionStorageManager.setRecord(0);
game.physics.enable(this, Phaser.Physics.ARCADE);
this.indexMissile = 0;
this.game.stage.backgroundColor = "#000000"; // '#4d4d4d';
sessionStorageManager.setIsNewAppHighestRecord(false);
var experienceAppTimer = new ExperienceAppTimer();
experienceAppTimer.setTimeOverListener(
(function() { this.timeOver(); }).bind(this)
);
// keyboard shortcut
this.keyboardShortcut = new KeyboardShortcut();
this.keyboardShortcut.addCallback(
Phaser.KeyCode.ESC, // keyCode
null, // keyDownHandler
(function() { this.back(); }).bind(this), // keyUpHandler
"dodge" // callerClassName
);
// game stage
var stars = game.add.group();
for (var i = 0; i < 128; i++) {
var randomY = game.rnd.integerInRange(60, GAME_SCREEN_SIZE.y - 80);
stars.create(game.world.randomX, randomY, 'star');
}
// contents
this.spaceship = new Spaceship();
this.missiles = [];
for(var i = 0; i < Game.MAX_MISSILE_COUNT; i++) {
var alien = new Missile(this.spaceship,
(function() {
this.spaceship.alpha = 0;
this.spaceship.body.enable = false;
this.showExplosionParticle();
this.gameOver();
}).bind(this) // onCollisionHandler
);
this.missiles.push(alien);
}
// top ui
var screenTopUI = new ScreenTopUI();
screenTopUI.makeBackButton( (function() { this.back(); }).bind(this) );
screenTopUI.makeFullScreenButton();
this.stopWatch = new StopWatch(game);
// bottom ui
var screenBottomUI = new ScreenBottomUI();
screenBottomUI.printLeftTextWithAppHighestRecord(sessionStorageManager.getAppHighestRecord());
screenBottomUI.printCenterText(sessionStorageManager.getPlayingAppKoreanName());
screenBottomUI.printRightText(sessionStorageManager.getPlayerName());
// this.startGame();
this.countDown();
this.spaceship.setActive(true);
},
back: function() {
sessionStorageManager.resetPlayingAppData();
location.href = '../../web/client/menu_app.html';
},
countDown: function() {
var style = { font: "bold 200px Arial", fill: "#fff", wordWrap: true, wordWrapWidth: game.world.centerX, align: "center" };
this.countDownText = game.add.text(game.world.centerX, game.world.centerY, "", style);
// this.countDownText.setTextBounds(0, 0, game.world.width, game.world.height);
this.countDownText.anchor.set(0.5);
this.countDownText.stroke = "#333";
this.countDownText.strokeThickness = 50;
this.countDownNumber = 3;
if(isDebugMode())
this.countDownNumber = 1;
this.tweenCountDown();
},
tweenCountDown: function() {
if(this.countDownNumber === 0) {
this.startGame();
return;
}
this.countDownText.text = this.countDownNumber.toString();
this.countDownText.alpha = 1;
var countDownTween = game.add.tween(this.countDownText);
countDownTween.to( { alpha: 0 }, 1000, Phaser.Easing.Linear.None, true);
countDownTween.onComplete.add(this.tweenCountDown, this);
this.countDownNumber--;
},
startGame: function() {
this.stopWatch.start();
this.timerCount = 0;
this.timerEvent = game.time.events.loop(Phaser.Timer.SECOND, this.updateTimer, this);
},
updateTimer: function() {
var every5sec = this.timerCount % 5;
if(every5sec == 0) {
var waveNo = this.timerCount / 5;
this.sendWave(waveNo);
}
this.timerCount++;
},
sendWave: function(waveNo) {
// console.log("*** " + waveNo + " ***");
if(this.indexMissile >= Game.MAX_MISSILE_COUNT)
return;
var beginAlienIndex = waveNo * 5;
var endAlienIndex = (waveNo + 1) * 5;
for(this.indexMissile = beginAlienIndex; this.indexMissile < endAlienIndex; this.indexMissile++) {
if(this.indexMissile > Game.MAX_MISSILE_COUNT) {
this.indexMissile = Game.MAX_MISSILE_COUNT;
return;
}
this.missiles[this.indexMissile].setActive(true);
// console.log(this.indexMissile);
}
},
timeOver: function() {
this.spaceship.alpha = 0;
this.spaceship.body.enable = false;
this.showExplosionParticle();
var timeOverText = new TimeOverText();
this.stopAndGoResult();
},
gameOver: function() {
var gameOverText = new GameOverText();
this.stopAndGoResult();
},
stopAndGoResult: function() {
var recordTime = this.stopWatch.stop();
sessionStorageManager.setRecord(recordTime);
if(!isExperienceMaestroAccount())
this.updateResultRecord();
game.time.events.add(Game.GAME_OVER_WAIT_TIME_MS, this.goResult, this);
},
updateResultRecord: function() {
if(sessionStorageManager.getMaestroAccountType() < 100) { // experience account
this.dbConnectManager.updateResultRecord(
sessionStorageManager.getMaestroID(),
sessionStorageManager.getPlayerID(),
sessionStorageManager.getPlayingAppID(),
sessionStorageManager.getRecord()
);
}
},
goResult: function() {
location.href = '../../web/client/result.html';
},
showExplosionParticle: function() {
var hitStarEmitter = game.add.emitter(
this.spaceship.x,
this.spaceship.y,
10
);
hitStarEmitter.makeParticles('star');
hitStarEmitter.minParticleScale = 1;
hitStarEmitter.maxParticleScale = 3;
hitStarEmitter.forEach(
function(particle) {
// particle.tint = 0xadff2f;
particle.tint = 0xffa5a5;
}
);
hitStarEmitter.gravity = 0;
hitStarEmitter.start(true, 1000, null, 100);
}
}
Game.GAME_OVER_WAIT_TIME_MS = 3000;
Game.MAX_MISSILE_COUNT = 100;