Game over / new game logic implemented.

master
Ben Burlingham 9 years ago
parent 44620c2a3f
commit 40ab139deb
  1. 8
      actions/mode.actions.js
  2. 2
      components/board/troggles.component.js
  3. 2
      components/welcome/new-game.component.js
  4. 18
      controllers/board.controller.js
  5. 11
      controllers/mode.controller.js
  6. 8
      controllers/scorebar.controller.js

@ -1,14 +1,14 @@
// Game mode actions and action creators.
export const MODE_ACTION = 'MODE_ACTION';
export const WELCOME = 'WELCOME';
export const BOARD = 'BOARD';
export const WELCOME = 'MODE_WELCOME';
export const BOARD = 'MODE_BOARD';
export const welcomeMode = () => ({
export const welcome = () => ({
type: MODE_ACTION,
action: WELCOME
});
export const boardMode = () => ({
export const board = () => ({
type: MODE_ACTION,
action: BOARD
});

@ -8,7 +8,7 @@ import TroggleCtrl from '../../controllers/troggle.controller.js';
export class Troggles extends Component {
componentWillUnmount() {
TroggleCtrl.clearTimers();
TroggleCtrl.clearTroggles();
};
render() {

@ -27,7 +27,7 @@ export default class NewGame extends Component {
handleKeydown(e) {
if (e.keyCode === 32) {
this.props.dispatch(ModeActions.boardMode());
this.props.dispatch(ModeActions.board());
}
};

@ -6,6 +6,7 @@ import MuncherCtrl from './muncher.controller';
import GridCtrl from './grid.controller';
import TitlebarCtrl from './titlebar.controller';
import ScorebarCtrl from './scorebar.controller';
import ModeCtrl from './mode.controller';
let level = -1;
let collision = false;
@ -20,6 +21,7 @@ const BoardCtrl = {
ScorebarCtrl.setDispatch(d);
MessageCtrl.setDispatch(d);
TroggleCtrl.setDispatch(d);
ModeCtrl.setDispatch(d);
},
isCollision: () => collision,
@ -32,6 +34,7 @@ const BoardCtrl = {
ScorebarCtrl.munchSucceeded();
if (GridCtrl.isCompleted() === true) {
TroggleCtrl.freeze();
MessageCtrl.goodNews('Level complete!');
}
}
@ -43,20 +46,29 @@ const BoardCtrl = {
},
keyListener(e) {
if (e.keyCode === 32 && ScorebarCtrl.getLives() === 0) {
if (e.keyCode === 32 && ScorebarCtrl.isGameOver()) {
level = -1;
ScorebarCtrl.reset();
MessageCtrl.hide();
TroggleCtrl.unfreeze();
ModeCtrl.welcome();
}
else if (e.keyCode === 32 && ScorebarCtrl.getLives() === 0) {
ScorebarCtrl.flagGameOver();
MessageCtrl.show("Game over!");
}
else if (e.keyCode === 32 && GridCtrl.isCompleted() === true) {
this.nextLevel();
TroggleCtrl.unfreeze();
ScorebarCtrl.levelUp(level);
MessageCtrl.hide();
}
else if (e.keyCode === 32 && BoardCtrl.isCollision() === true) {
console.log("Creating troggles")
collision = false;
TroggleCtrl.clearTroggles();
TroggleCtrl.createTroggles(level);
TroggleCtrl.unfreeze();
ScorebarCtrl.eatenByTroggle();
MessageCtrl.hide();
}
else if (e.keyCode === 32 && MessageCtrl.isShowing() === true) {
@ -73,6 +85,7 @@ const BoardCtrl = {
nextLevel() {
level++;
collision = false;
GridCtrl.generateValues(level);
TitlebarCtrl.setTitle(level);
TroggleCtrl.clearTroggles();
@ -89,6 +102,7 @@ const BoardCtrl = {
collision = true;
TroggleCtrl.freeze();
MessageCtrl.badNews("You've been eaten by a troggle!");
ScorebarCtrl.eatenByTroggle();
break;
}
}

@ -0,0 +1,11 @@
import * as ModeActions from '../actions/mode.actions';
let dispatch;
const ModeCtrl = {
setDispatch: d => dispatch = d,
welcome: () => dispatch(ModeActions.welcome())
};
export default ModeCtrl;

@ -2,9 +2,10 @@ import * as ScorebarActions from '../actions/board/scorebar.actions';
import { SETTINGS } from '../App';
let dispatch;
let lives = 3;
let lives = 1;
let currentScore = 0;
let highScore = 7;
let gameOver = false;
const ScorebarCtrl = {
setDispatch: d => dispatch = d,
@ -13,6 +14,9 @@ const ScorebarCtrl = {
getHighScore: () => highScore,
getLives: () => lives,
flagGameOver: () => gameOver = true,
isGameOver: () => gameOver,
munchSucceeded: () => {
currentScore += 10;
dispatch(ScorebarActions.update());
@ -37,6 +41,8 @@ const ScorebarCtrl = {
reset: () => {
lives = SETTINGS.LIVES;
currentScore = 0;
gameOver = false;
dispatch(ScorebarActions.update());
}
};

Loading…
Cancel
Save