diff --git a/actions/board/board.actions.js b/actions/board/board.actions.js deleted file mode 100644 index c8a4f4f..0000000 --- a/actions/board/board.actions.js +++ /dev/null @@ -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 -}); diff --git a/actions/board/grid.actions.js b/actions/board/grid.actions.js index 9413657..e7b5cc0 100644 --- a/actions/board/grid.actions.js +++ b/actions/board/grid.actions.js @@ -1,11 +1,7 @@ export const GRID_ACTION = 'GRID_ACTION'; -export const UPDATE = 'UPDATE'; +export const UPDATE = 'GRID_UPDATE'; -const GridActions = { - update: () => ({ - type: GRID_ACTION, - action: UPDATE - }) -}; - -export default GridActions; +export const update = () => ({ + type: GRID_ACTION, + action: UPDATE +}); diff --git a/actions/board/muncher.actions.js b/actions/board/muncher.actions.js index 4acb013..a5b4836 100644 --- a/actions/board/muncher.actions.js +++ b/actions/board/muncher.actions.js @@ -1,5 +1,5 @@ export const MUNCHER_ACTION = 'MUNCHER_ACTION'; -export const UPDATE = 'UPDATE'; +export const UPDATE = 'MUNCHER_UPDATE'; export const update = () => ({ type: MUNCHER_ACTION, diff --git a/actions/board/scorebar.actions.js b/actions/board/scorebar.actions.js index 766d646..bd442ce 100644 --- a/actions/board/scorebar.actions.js +++ b/actions/board/scorebar.actions.js @@ -1,6 +1,6 @@ export const SCOREBAR_ACTION = 'SCOREBAR_ACTION'; -export const MUNCH_SUCCEEDED = 'MUNCH_SUCCEEDED'; -export const MUNCH_FAILED = 'MUNCH_FAILED'; +export const MUNCH_SUCCEEDED = 'SCOREBAR_MUNCH_SUCCEEDED'; +export const MUNCH_FAILED = 'SCOREBAR_MUNCH_FAILED'; export const munchSucceeded = () => ({ type: SCOREBAR_ACTION, diff --git a/actions/board/titlebar.actions.js b/actions/board/titlebar.actions.js new file mode 100644 index 0000000..302e24d --- /dev/null +++ b/actions/board/titlebar.actions.js @@ -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 +}); diff --git a/actions/board/troggle.actions.js b/actions/board/troggle.actions.js index f2545d8..b31247b 100644 --- a/actions/board/troggle.actions.js +++ b/actions/board/troggle.actions.js @@ -1,7 +1,7 @@ export const TROGGLE_ACTION = 'TROGGLE_ACTION'; -export const CREATE = 'CREATE'; -export const MOVE = 'MOVE'; -export const CLEAR_ALL = 'CLEAR_ALL'; +export const CREATE = 'TROGGLE_CREATE'; +export const MOVE = 'TROGGLE_MOVE'; +export const CLEAR_ALL = 'TROGGLE_CLEAR_ALL'; export const create = (index) => ({ type: TROGGLE_ACTION, diff --git a/components/board/titlebar.component.js b/components/board/titlebar.component.js index a8d1cff..f1a243f 100644 --- a/components/board/titlebar.component.js +++ b/components/board/titlebar.component.js @@ -1,9 +1,18 @@ require('../../sass/board/titlebar.scss'); import { Component } from 'react'; +import { connect } from 'react-redux'; -export default class Titlebar extends Component { +export class Titlebar extends Component { render() { - return (
Connect titlebar
); + return (
{this.props.title}
); }; }; + +const select = (state) => { + return { + title: state.titlebar + } +}; + +export default connect(select)(Titlebar); diff --git a/controllers/board.controller.js b/controllers/board.controller.js index 12a1659..3b5cfd1 100644 --- a/controllers/board.controller.js +++ b/controllers/board.controller.js @@ -7,8 +7,9 @@ import TroggleCtrl from './troggle.controller'; import MessageCtrl from './message.controller'; import MuncherCtrl from './muncher.controller'; import GridCtrl from './grid.controller'; +import TitlebarCtrl from './titlebar.controller'; -const level = 0; +let level = -1; let dispatch; const BoardCtrl = { @@ -16,6 +17,7 @@ const BoardCtrl = { dispatch = d; GridCtrl.setDispatch(d); MuncherCtrl.setDispatch(d); + TitlebarCtrl.setDispatch(d); }, munch() { @@ -50,7 +52,9 @@ const BoardCtrl = { }, nextLevel() { + level++; GridCtrl.generateValues(level); + TitlebarCtrl.setTitle(level); // TroggleCtrl.clearAll(this.props.dispatch); // TroggleCtrl.createTroggles(this.props.dispatch); }, diff --git a/controllers/grid.controller.js b/controllers/grid.controller.js index c5b7b0e..3327fde 100644 --- a/controllers/grid.controller.js +++ b/controllers/grid.controller.js @@ -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 { SETTINGS } from '../App'; diff --git a/controllers/titlebar.controller.js b/controllers/titlebar.controller.js new file mode 100644 index 0000000..f046911 --- /dev/null +++ b/controllers/titlebar.controller.js @@ -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; diff --git a/controllers/values.controller.js b/controllers/values.controller.js index e7c29db..2f104e4 100644 --- a/controllers/values.controller.js +++ b/controllers/values.controller.js @@ -20,7 +20,7 @@ const ValuesCtrl = { return values; }, - getDescription(level) { + getTitle(level) { return `Multiples of ${level + 2}`; }, diff --git a/index.js b/index.js index 32b0cea..5393bd9 100644 --- a/index.js +++ b/index.js @@ -7,22 +7,22 @@ import { Provider } from 'react-redux'; import App from './App'; import modeReducer from './reducers/mode.reducer'; import newgameReducer from './reducers/welcome/new-game.reducer'; -import boardReducer from './reducers/board/board.reducer'; import gridReducer from './reducers/board/grid.reducer'; import muncherReducer from './reducers/board/muncher.reducer'; import scorebarReducer from './reducers/board/scorebar.reducer'; import messageReducer from './reducers/board/message.reducer'; import troggleReducer from './reducers/board/troggle.reducer'; +import titlebarReducer from './reducers/board/titlebar.reducer'; const reducers = combineReducers({ mode: modeReducer, newgame: newgameReducer, muncher: muncherReducer, scorebar: scorebarReducer, - board: boardReducer, message: messageReducer, troggles: troggleReducer, - grid: gridReducer + grid: gridReducer, + titlebar: titlebarReducer }); const store = createStore(reducers); diff --git a/reducers/board/board.reducer.js b/reducers/board/board.reducer.js deleted file mode 100644 index 9aad4fe..0000000 --- a/reducers/board/board.reducer.js +++ /dev/null @@ -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; diff --git a/reducers/board/titlebar.reducer.js b/reducers/board/titlebar.reducer.js new file mode 100644 index 0000000..fd7453e --- /dev/null +++ b/reducers/board/titlebar.reducer.js @@ -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;