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. // Game mode actions and action creators.
export const MODE_ACTION = 'MODE_ACTION'; export const MODE_ACTION = 'MODE_ACTION';
export const WELCOME = 'WELCOME'; export const WELCOME = 'MODE_WELCOME';
export const BOARD = 'BOARD'; export const BOARD = 'MODE_BOARD';
export const welcomeMode = () => ({ export const welcome = () => ({
type: MODE_ACTION, type: MODE_ACTION,
action: WELCOME action: WELCOME
}); });
export const boardMode = () => ({ export const board = () => ({
type: MODE_ACTION, type: MODE_ACTION,
action: BOARD action: BOARD
}); });

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

@ -27,7 +27,7 @@ export default class NewGame extends Component {
handleKeydown(e) { handleKeydown(e) {
if (e.keyCode === 32) { 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 GridCtrl from './grid.controller';
import TitlebarCtrl from './titlebar.controller'; import TitlebarCtrl from './titlebar.controller';
import ScorebarCtrl from './scorebar.controller'; import ScorebarCtrl from './scorebar.controller';
import ModeCtrl from './mode.controller';
let level = -1; let level = -1;
let collision = false; let collision = false;
@ -20,6 +21,7 @@ const BoardCtrl = {
ScorebarCtrl.setDispatch(d); ScorebarCtrl.setDispatch(d);
MessageCtrl.setDispatch(d); MessageCtrl.setDispatch(d);
TroggleCtrl.setDispatch(d); TroggleCtrl.setDispatch(d);
ModeCtrl.setDispatch(d);
}, },
isCollision: () => collision, isCollision: () => collision,
@ -32,6 +34,7 @@ const BoardCtrl = {
ScorebarCtrl.munchSucceeded(); ScorebarCtrl.munchSucceeded();
if (GridCtrl.isCompleted() === true) { if (GridCtrl.isCompleted() === true) {
TroggleCtrl.freeze();
MessageCtrl.goodNews('Level complete!'); MessageCtrl.goodNews('Level complete!');
} }
} }
@ -43,20 +46,29 @@ const BoardCtrl = {
}, },
keyListener(e) { 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!"); MessageCtrl.show("Game over!");
} }
else if (e.keyCode === 32 && GridCtrl.isCompleted() === true) { else if (e.keyCode === 32 && GridCtrl.isCompleted() === true) {
this.nextLevel(); this.nextLevel();
TroggleCtrl.unfreeze();
ScorebarCtrl.levelUp(level); ScorebarCtrl.levelUp(level);
MessageCtrl.hide(); MessageCtrl.hide();
} }
else if (e.keyCode === 32 && BoardCtrl.isCollision() === true) { else if (e.keyCode === 32 && BoardCtrl.isCollision() === true) {
console.log("Creating troggles")
collision = false; collision = false;
TroggleCtrl.clearTroggles(); TroggleCtrl.clearTroggles();
TroggleCtrl.createTroggles(level); TroggleCtrl.createTroggles(level);
TroggleCtrl.unfreeze(); TroggleCtrl.unfreeze();
ScorebarCtrl.eatenByTroggle();
MessageCtrl.hide(); MessageCtrl.hide();
} }
else if (e.keyCode === 32 && MessageCtrl.isShowing() === true) { else if (e.keyCode === 32 && MessageCtrl.isShowing() === true) {
@ -73,6 +85,7 @@ const BoardCtrl = {
nextLevel() { nextLevel() {
level++; level++;
collision = false;
GridCtrl.generateValues(level); GridCtrl.generateValues(level);
TitlebarCtrl.setTitle(level); TitlebarCtrl.setTitle(level);
TroggleCtrl.clearTroggles(); TroggleCtrl.clearTroggles();
@ -89,6 +102,7 @@ const BoardCtrl = {
collision = true; collision = true;
TroggleCtrl.freeze(); TroggleCtrl.freeze();
MessageCtrl.badNews("You've been eaten by a troggle!"); MessageCtrl.badNews("You've been eaten by a troggle!");
ScorebarCtrl.eatenByTroggle();
break; 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'; import { SETTINGS } from '../App';
let dispatch; let dispatch;
let lives = 3; let lives = 1;
let currentScore = 0; let currentScore = 0;
let highScore = 7; let highScore = 7;
let gameOver = false;
const ScorebarCtrl = { const ScorebarCtrl = {
setDispatch: d => dispatch = d, setDispatch: d => dispatch = d,
@ -13,6 +14,9 @@ const ScorebarCtrl = {
getHighScore: () => highScore, getHighScore: () => highScore,
getLives: () => lives, getLives: () => lives,
flagGameOver: () => gameOver = true,
isGameOver: () => gameOver,
munchSucceeded: () => { munchSucceeded: () => {
currentScore += 10; currentScore += 10;
dispatch(ScorebarActions.update()); dispatch(ScorebarActions.update());
@ -37,6 +41,8 @@ const ScorebarCtrl = {
reset: () => { reset: () => {
lives = SETTINGS.LIVES; lives = SETTINGS.LIVES;
currentScore = 0; currentScore = 0;
gameOver = false;
dispatch(ScorebarActions.update());
} }
}; };

Loading…
Cancel
Save