Titlebar connected.

master
Ben Burlingham 9 years ago
parent 9b15298747
commit a19dd163ad
  1. 35
      actions/board/board.actions.js
  2. 14
      actions/board/grid.actions.js
  3. 2
      actions/board/muncher.actions.js
  4. 4
      actions/board/scorebar.actions.js
  5. 8
      actions/board/titlebar.actions.js
  6. 6
      actions/board/troggle.actions.js
  7. 13
      components/board/titlebar.component.js
  8. 6
      controllers/board.controller.js
  9. 2
      controllers/grid.controller.js
  10. 15
      controllers/titlebar.controller.js
  11. 2
      controllers/values.controller.js
  12. 6
      index.js
  13. 42
      reducers/board/board.reducer.js
  14. 19
      reducers/board/titlebar.reducer.js

@ -1,35 +0,0 @@
export const BOARD_ACTION = 'BOARD_ACTION';
export const GENERATE = 'GENERATE';
export const UPDATE = 'UPDATE';
export const HIDE = 'HIDE';
export const SHOW = 'SHOW';
export const NEXT_LEVEL = 'NEXT_LEVEL';
export const generateValues = () => ({
type: BOARD_ACTION,
action: GENERATE
});
export const updateValue = (index, value) => ({
type: BOARD_ACTION,
action: UPDATE,
index: index,
value: value
});
export const showValue = (index) => ({
type: BOARD_ACTION,
action: SHOW,
index: index
});
export const hideValue = (index) => ({
type: BOARD_ACTION,
action: HIDE,
index: index
});
export const nextLevel = () => ({
type: BOARD_ACTION,
action: NEXT_LEVEL
});

@ -1,11 +1,7 @@
export const GRID_ACTION = 'GRID_ACTION'; export const GRID_ACTION = 'GRID_ACTION';
export const UPDATE = 'UPDATE'; export const UPDATE = 'GRID_UPDATE';
const GridActions = { export const update = () => ({
update: () => ({ type: GRID_ACTION,
type: GRID_ACTION, action: UPDATE
action: UPDATE });
})
};
export default GridActions;

@ -1,5 +1,5 @@
export const MUNCHER_ACTION = 'MUNCHER_ACTION'; export const MUNCHER_ACTION = 'MUNCHER_ACTION';
export const UPDATE = 'UPDATE'; export const UPDATE = 'MUNCHER_UPDATE';
export const update = () => ({ export const update = () => ({
type: MUNCHER_ACTION, type: MUNCHER_ACTION,

@ -1,6 +1,6 @@
export const SCOREBAR_ACTION = 'SCOREBAR_ACTION'; export const SCOREBAR_ACTION = 'SCOREBAR_ACTION';
export const MUNCH_SUCCEEDED = 'MUNCH_SUCCEEDED'; export const MUNCH_SUCCEEDED = 'SCOREBAR_MUNCH_SUCCEEDED';
export const MUNCH_FAILED = 'MUNCH_FAILED'; export const MUNCH_FAILED = 'SCOREBAR_MUNCH_FAILED';
export const munchSucceeded = () => ({ export const munchSucceeded = () => ({
type: SCOREBAR_ACTION, type: SCOREBAR_ACTION,

@ -0,0 +1,8 @@
export const TITLEBAR_ACTION = 'TITLEBAR_ACTION';
export const UPDATE = 'TITLEBAR_UPDATE';
export const update = (text) => ({
type: TITLEBAR_ACTION,
action: UPDATE,
text: text
});

@ -1,7 +1,7 @@
export const TROGGLE_ACTION = 'TROGGLE_ACTION'; export const TROGGLE_ACTION = 'TROGGLE_ACTION';
export const CREATE = 'CREATE'; export const CREATE = 'TROGGLE_CREATE';
export const MOVE = 'MOVE'; export const MOVE = 'TROGGLE_MOVE';
export const CLEAR_ALL = 'CLEAR_ALL'; export const CLEAR_ALL = 'TROGGLE_CLEAR_ALL';
export const create = (index) => ({ export const create = (index) => ({
type: TROGGLE_ACTION, type: TROGGLE_ACTION,

@ -1,9 +1,18 @@
require('../../sass/board/titlebar.scss'); require('../../sass/board/titlebar.scss');
import { Component } from 'react'; import { Component } from 'react';
import { connect } from 'react-redux';
export default class Titlebar extends Component { export class Titlebar extends Component {
render() { render() {
return (<div className='titlebar'>Connect titlebar</div>); return (<div className='titlebar'>{this.props.title}</div>);
}; };
}; };
const select = (state) => {
return {
title: state.titlebar
}
};
export default connect(select)(Titlebar);

@ -7,8 +7,9 @@ import TroggleCtrl from './troggle.controller';
import MessageCtrl from './message.controller'; import MessageCtrl from './message.controller';
import MuncherCtrl from './muncher.controller'; import MuncherCtrl from './muncher.controller';
import GridCtrl from './grid.controller'; import GridCtrl from './grid.controller';
import TitlebarCtrl from './titlebar.controller';
const level = 0; let level = -1;
let dispatch; let dispatch;
const BoardCtrl = { const BoardCtrl = {
@ -16,6 +17,7 @@ const BoardCtrl = {
dispatch = d; dispatch = d;
GridCtrl.setDispatch(d); GridCtrl.setDispatch(d);
MuncherCtrl.setDispatch(d); MuncherCtrl.setDispatch(d);
TitlebarCtrl.setDispatch(d);
}, },
munch() { munch() {
@ -50,7 +52,9 @@ const BoardCtrl = {
}, },
nextLevel() { nextLevel() {
level++;
GridCtrl.generateValues(level); GridCtrl.generateValues(level);
TitlebarCtrl.setTitle(level);
// TroggleCtrl.clearAll(this.props.dispatch); // TroggleCtrl.clearAll(this.props.dispatch);
// TroggleCtrl.createTroggles(this.props.dispatch); // TroggleCtrl.createTroggles(this.props.dispatch);
}, },

@ -1,4 +1,4 @@
import GridActions from '../actions/board/grid.actions'; import * as GridActions from '../actions/board/grid.actions';
import ValuesCtrl from './values.controller'; import ValuesCtrl from './values.controller';
import { SETTINGS } from '../App'; import { SETTINGS } from '../App';

@ -0,0 +1,15 @@
import * as TitlebarActions from '../actions/board/titlebar.actions';
import ValuesCtrl from './values.controller';
let dispatch;
const TitlebarCtrl = {
setDispatch: d => dispatch = d,
setTitle: (level) => {
const title = ValuesCtrl.getTitle(level);
dispatch(TitlebarActions.update(title));
}
};
export default TitlebarCtrl;

@ -20,7 +20,7 @@ const ValuesCtrl = {
return values; return values;
}, },
getDescription(level) { getTitle(level) {
return `Multiples of ${level + 2}`; return `Multiples of ${level + 2}`;
}, },

@ -7,22 +7,22 @@ import { Provider } from 'react-redux';
import App from './App'; import App from './App';
import modeReducer from './reducers/mode.reducer'; import modeReducer from './reducers/mode.reducer';
import newgameReducer from './reducers/welcome/new-game.reducer'; import newgameReducer from './reducers/welcome/new-game.reducer';
import boardReducer from './reducers/board/board.reducer';
import gridReducer from './reducers/board/grid.reducer'; import gridReducer from './reducers/board/grid.reducer';
import muncherReducer from './reducers/board/muncher.reducer'; import muncherReducer from './reducers/board/muncher.reducer';
import scorebarReducer from './reducers/board/scorebar.reducer'; import scorebarReducer from './reducers/board/scorebar.reducer';
import messageReducer from './reducers/board/message.reducer'; import messageReducer from './reducers/board/message.reducer';
import troggleReducer from './reducers/board/troggle.reducer'; import troggleReducer from './reducers/board/troggle.reducer';
import titlebarReducer from './reducers/board/titlebar.reducer';
const reducers = combineReducers({ const reducers = combineReducers({
mode: modeReducer, mode: modeReducer,
newgame: newgameReducer, newgame: newgameReducer,
muncher: muncherReducer, muncher: muncherReducer,
scorebar: scorebarReducer, scorebar: scorebarReducer,
board: boardReducer,
message: messageReducer, message: messageReducer,
troggles: troggleReducer, troggles: troggleReducer,
grid: gridReducer grid: gridReducer,
titlebar: titlebarReducer
}); });
const store = createStore(reducers); const store = createStore(reducers);

@ -1,42 +0,0 @@
const Immutable = require('immutable');
import * as BoardActions from '../../actions/board/board.actions';
import ValuesController from '../../controllers/values.controller.js';
import { SETTINGS } from '../../App';
const initial = {
level: -1,
values: [],
title: 'Setting up...'
};
const count = SETTINGS.GRID_WIDTH * SETTINGS.GRID_HEIGHT;
const reducer = (state = initial, action) => {
if (action.type !== BoardActions.BOARD_ACTION) {
return state;
}
switch (action.action) {
case BoardActions.UPDATE:
return Immutable.fromJS(state).setIn(['values', action.index, 'value'], action.value).toJS();
case BoardActions.SHOW:
return Immutable.fromJS(state).setIn(['values', action.index, 'show'], true).toJS();
case BoardActions.HIDE:
return Immutable.fromJS(state).setIn(['values', action.index, 'show'], false).toJS();
case BoardActions.NEXT_LEVEL:
const lvl = state.level + 1;
return Immutable.Map(state)
.set('level', lvl)
.set('title', ValuesController.getDescription(lvl))
.set('values', ValuesController.generate(count, lvl))
.toObject();
}
return state;
};
export default reducer;

@ -0,0 +1,19 @@
const Immutable = require('immutable');
import * as TitlebarActions from '../../actions/board/titlebar.actions';
const initial = '';
const reducer = (state = initial, action) => {
if (action.type !== TitlebarActions.TITLEBAR_ACTION) {
return state;
}
if (action.action === TitlebarActions.UPDATE) {
return action.text;
}
return state;
};
export default reducer;
Loading…
Cancel
Save