Lives and level updating started.

master
Ben Burlingham 9 years ago
parent 34fe746adf
commit 0296107742
  1. 4
      js/State.js
  2. 2
      js/board/Grid.js
  3. 29
      js/board/Message.js
  4. 20
      js/board/Scorebar.js
  5. 4
      js/board/Titlebar.js
  6. 8
      js/board/Values.js

@ -20,8 +20,10 @@ module.exports = {
return; return;
} }
var args = Array.prototype.slice.call(arguments, 1);
actions[event].forEach(function(callback) { actions[event].forEach(function(callback) {
callback(); callback.apply(null, args);
}); });
} }
}; };

@ -48,7 +48,7 @@ module.exports = React.createClass({
State.publish('munch/successful'); State.publish('munch/successful');
} }
else { else {
State.publish('munch/failed'); State.publish('munch/failed', this.state.values[i]);
} }
}, },

@ -2,6 +2,7 @@ require('../../sass/board/message.scss');
var React = require('react'); var React = require('react');
var State = require('../State'); var State = require('../State');
var Values = require('./Values');
var exclamations = [ var exclamations = [
'Congratulations!', 'Congratulations!',
@ -26,19 +27,35 @@ module.exports = React.createClass({
componentDidMount() { componentDidMount() {
State.subscribe('level/complete', this.levelComplete); State.subscribe('level/complete', this.levelComplete);
State.subscribe('level/next', this.levelNext); State.subscribe('level/next', this.levelNext);
State.subscribe('munch/failed', this.munchFailed);
}, },
handleKeydown(e) { munchFailed(value) {
if (e.keyCode === 32) { var self = this;
window.removeEventListener('keydown', this.handleKeydown);
State.publish('level/next'); function keydown(e) {
} if (e.keyCode === 32) {
window.removeEventListener('keydown', keydown);
self.setState({ hidden: true });
}
};
var msg = Values.getError(value, State.level);
this.setState({ hidden: false, message1: msg });
window.addEventListener('keydown', keydown);
}, },
levelComplete() { levelComplete() {
function keydown(e) {
if (e.keyCode === 32) {
window.removeEventListener('keydown', keydown);
State.publish('level/next');
}
};
var msg = exclamations[Math.floor(Math.random() * exclamations.length)]; var msg = exclamations[Math.floor(Math.random() * exclamations.length)];
this.setState({ hidden: false, message1: msg }); this.setState({ hidden: false, message1: msg });
window.addEventListener('keydown', this.handleKeydown); window.addEventListener('keydown', keydown);
}, },
levelNext() { levelNext() {

@ -7,12 +7,14 @@ module.exports = React.createClass({
getInitialState() { getInitialState() {
return { return {
currentScore: 0, currentScore: 0,
highScore: 0 highScore: 0,
lives: 3
}; };
}, },
componentDidMount() { componentDidMount() {
State.subscribe('munch/successful', this.updateScore); State.subscribe('munch/successful', this.updateScore);
State.subscribe('munch/failed', this.updateLives);
}, },
updateScore() { updateScore() {
@ -20,15 +22,21 @@ module.exports = React.createClass({
this.setState({ currentScore: score + 10 }); this.setState({ currentScore: score + 10 });
}, },
updateLives() {
var lives = this.state.lives;
this.setState({ lives: lives - 1 });
},
render() { render() {
var lives = [];
for (var i = 0; i < this.state.lives; i++) {
lives.push(<div className='life' key={i}></div>);
}
return (<div className='scorebar'> return (<div className='scorebar'>
<div className='item current-score'>{this.state.currentScore}</div> <div className='item current-score'>{this.state.currentScore}</div>
<div className='item high-score'>{this.state.highScore}</div> <div className='item high-score'>{this.state.highScore}</div>
<div className='item lives'> <div className='item lives'>{lives}</div>
<div className='life'></div>
<div className='life'></div>
<div className='life'></div>
</div>
</div>); </div>);
} }
}); });

@ -7,7 +7,7 @@ var Values = require('./Values');
module.exports = React.createClass({ module.exports = React.createClass({
getInitialState() { getInitialState() {
return { return {
title: Values.describe(State.level) title: Values.getDescription(State.level)
}; };
}, },
@ -16,7 +16,7 @@ module.exports = React.createClass({
}, },
levelNext() { levelNext() {
this.setState({ title: Values.describe(State.level) }); this.setState({ title: Values.getDescription(State.level) });
}, },
render() { render() {

@ -10,8 +10,12 @@ module.exports = {
return values; return values;
}, },
describe(level) { getDescription(level) {
return "Multiples of " + (level + 2); return `Multiples of ${level + 2}`;
},
getError(value, level) {
return `Oops! ${value} is not a multiple of ${level + 2}.`;
}, },
validate(value, level) { validate(value, level) {

Loading…
Cancel
Save