diff --git a/components/board/board.component.js b/components/board/board.component.js
index 286c549..0a78f6d 100644
--- a/components/board/board.component.js
+++ b/components/board/board.component.js
@@ -10,7 +10,7 @@ import Message from './message.component';
import Muncher from './muncher.component';
import Troggles from './troggles.component';
-import BoardCtrl from '../../controllers/board.controller';
+import BoardCtrl from '../../controllers/board/board.controller';
let listener;
diff --git a/components/board/troggles.component.js b/components/board/troggles.component.js
index 99a69de..6f10de2 100644
--- a/components/board/troggles.component.js
+++ b/components/board/troggles.component.js
@@ -4,7 +4,7 @@ import { Component } from 'react';
import { connect } from 'react-redux';
import Troggle from './troggle.component';
-import TroggleCtrl from '../../controllers/troggle.controller.js';
+import TroggleCtrl from '../../controllers/board/troggle.controller.js';
export class Troggles extends Component {
componentWillUnmount() {
diff --git a/components/options/option.component.js b/components/options/option.component.js
index e9c1031..2d779fe 100644
--- a/components/options/option.component.js
+++ b/components/options/option.component.js
@@ -1,12 +1,10 @@
import { Component } from 'react';
-import { connect } from 'react-redux';
-export class Option extends Component {
+export default class Option extends Component {
render() {
const className = ['option'];
- console.log(this.props.selected + ' ' + this.props.index)
- if (this.props.selected === this.props.index) {
+ if (this.props.selected === true) {
className.push('selected');
}
@@ -15,11 +13,3 @@ export class Option extends Component {
);
};
};
-
-const select = (state) => {
- return {
- selected: state.options
- };
-};
-
-export default connect(select)(Option);
diff --git a/components/options/options.component.js b/components/options/options.component.js
index 6956356..aba2169 100644
--- a/components/options/options.component.js
+++ b/components/options/options.component.js
@@ -1,15 +1,31 @@
require('../../sass/options/options.scss');
import { Component } from 'react';
+import { connect } from 'react-redux';
+import OptionsCtrl from '../../controllers/options/options.controller';
+import ModeCtrl from '../../controllers/mode.controller';
import Option from './option.component';
+let listener;
+
export default class Options extends Component {
+ componentDidMount() {
+ OptionsCtrl.setDispatch(this.props.dispatch);
+ ModeCtrl.setDispatch(this.props.dispatch);
+
+ listener = OptionsCtrl.keyListener.bind(OptionsCtrl);
+ window.addEventListener('keydown', listener);
+ };
+
+ componentWillUnmount() {
+ window.removeEventListener('keydown', listener);
+ };
+
render() {
- const values = ['Multiples', 'Factors', 'Equality', 'Inequality'];
const optionsElements = [];
- values.map((v, i) => {
- optionsElements.push();
+ OptionsCtrl.getValues().map((v, i) => {
+ optionsElements.push();
});
return (
@@ -24,3 +40,11 @@ export default class Options extends Component {
);
};
};
+
+const select = (state) => {
+ return {
+ selected: state.options
+ };
+};
+
+export default connect(select)(Options);
diff --git a/controllers/board.controller.js b/controllers/board/board.controller.js
similarity index 97%
rename from controllers/board.controller.js
rename to controllers/board/board.controller.js
index 223fbe6..d743e4c 100644
--- a/controllers/board.controller.js
+++ b/controllers/board/board.controller.js
@@ -1,4 +1,4 @@
-import SETTINGS from '../AppSettings';
+import SETTINGS from '../../AppSettings';
import TroggleCtrl from './troggle.controller';
import MessageCtrl from './message.controller';
@@ -6,7 +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';
+import ModeCtrl from '../mode.controller';
let level = -1;
let collision = false;
diff --git a/controllers/grid.controller.js b/controllers/board/grid.controller.js
similarity index 76%
rename from controllers/grid.controller.js
rename to controllers/board/grid.controller.js
index 7e5131d..36d0cfb 100644
--- a/controllers/grid.controller.js
+++ b/controllers/board/grid.controller.js
@@ -1,6 +1,6 @@
-import * as GridActions from '../actions/board/grid.actions';
-import MultiplesModel from '../models/multiples.model';
-import SETTINGS from '../AppSettings';
+import * as GridActions from '../../actions/board/grid.actions';
+import MultiplesModel from '../../models/multiples.model';
+import SETTINGS from '../../AppSettings';
let values;
let dispatch;
diff --git a/controllers/message.controller.js b/controllers/board/message.controller.js
similarity index 94%
rename from controllers/message.controller.js
rename to controllers/board/message.controller.js
index 6c4046d..04af0be 100644
--- a/controllers/message.controller.js
+++ b/controllers/board/message.controller.js
@@ -1,4 +1,4 @@
-import * as MessageActions from '../actions/board/message.actions';
+import * as MessageActions from '../../actions/board/message.actions';
const positives = [
'All finished!',
diff --git a/controllers/muncher.controller.js b/controllers/board/muncher.controller.js
similarity index 89%
rename from controllers/muncher.controller.js
rename to controllers/board/muncher.controller.js
index d02f277..20721d7 100644
--- a/controllers/muncher.controller.js
+++ b/controllers/board/muncher.controller.js
@@ -1,6 +1,6 @@
-import * as MuncherActions from '../actions/board/muncher.actions';
+import * as MuncherActions from '../../actions/board/muncher.actions';
import BoardCtrl from './board.controller';
-import SETTINGS from '../AppSettings';
+import SETTINGS from '../../AppSettings';
let x = 0;
let y = 0;
diff --git a/controllers/scorebar.controller.js b/controllers/board/scorebar.controller.js
similarity index 88%
rename from controllers/scorebar.controller.js
rename to controllers/board/scorebar.controller.js
index 5b4d673..dc2f703 100644
--- a/controllers/scorebar.controller.js
+++ b/controllers/board/scorebar.controller.js
@@ -1,5 +1,5 @@
-import * as ScorebarActions from '../actions/board/scorebar.actions';
-import SETTINGS from '../AppSettings';
+import * as ScorebarActions from '../../actions/board/scorebar.actions';
+import SETTINGS from '../../AppSettings';
let dispatch;
let lives = SETTINGS.LIVES;
diff --git a/controllers/titlebar.controller.js b/controllers/board/titlebar.controller.js
similarity index 64%
rename from controllers/titlebar.controller.js
rename to controllers/board/titlebar.controller.js
index 7f8fb3a..e76f1ef 100644
--- a/controllers/titlebar.controller.js
+++ b/controllers/board/titlebar.controller.js
@@ -1,5 +1,5 @@
-import * as TitlebarActions from '../actions/board/titlebar.actions';
-import MultiplesModel from '../models/multiples.model';
+import * as TitlebarActions from '../../actions/board/titlebar.actions';
+import MultiplesModel from '../../models/multiples.model';
let dispatch;
diff --git a/controllers/troggle.controller.js b/controllers/board/troggle.controller.js
similarity index 97%
rename from controllers/troggle.controller.js
rename to controllers/board/troggle.controller.js
index 7383f49..0425e64 100644
--- a/controllers/troggle.controller.js
+++ b/controllers/board/troggle.controller.js
@@ -1,6 +1,6 @@
-import SETTINGS from '../AppSettings';
+import SETTINGS from '../../AppSettings';
-import * as TroggleActions from '../actions/board/troggle.actions';
+import * as TroggleActions from '../../actions/board/troggle.actions';
import MuncherCtrl from './muncher.controller';
import BoardCtrl from './board.controller';
diff --git a/controllers/mode.controller.js b/controllers/mode.controller.js
index 3255dc8..6bdad3e 100644
--- a/controllers/mode.controller.js
+++ b/controllers/mode.controller.js
@@ -5,7 +5,11 @@ let dispatch;
const ModeCtrl = {
setDispatch: d => dispatch = d,
- welcome: () => dispatch(ModeActions.welcome())
+ welcome: () => dispatch(ModeActions.welcome()),
+
+ options: () => dispatch(ModeActions.options()),
+
+ board: () => dispatch(ModeActions.board())
};
export default ModeCtrl;
diff --git a/controllers/options/options.controller.js b/controllers/options/options.controller.js
new file mode 100644
index 0000000..42e6fe0
--- /dev/null
+++ b/controllers/options/options.controller.js
@@ -0,0 +1,42 @@
+import * as OptionsActions from '../../actions/options/options.actions';
+import ModeCtrl from '../mode.controller';
+
+let dispatch;
+const values = ['Multiples', 'Factors', 'Equality', 'Inequality'];
+let selected = 0;
+
+const OptionsCtrl = {
+ setDispatch: d => dispatch = d,
+
+ getValues: () => values,
+
+ update() {
+ dispatch(OptionsActions.update(selected));
+ },
+
+ keyListener(e) {
+ if (e.keyCode === 32) {
+ ModeCtrl.board();
+ }
+ else if (e.keyCode === 38) {
+ selected--;
+
+ if (selected === -1) {
+ selected = values.length - 1;
+ }
+
+ this.update();
+ }
+ else if (e.keyCode === 40) {
+ selected++;
+
+ if (selected === values.length) {
+ selected = 0;
+ }
+
+ this.update();
+ }
+ }
+};
+
+export default OptionsCtrl;