You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.7 KiB
67 lines
1.7 KiB
import * as OptionsActions from '../../actions/options/options.actions';
|
|
import ModeCtrl from '../mode.controller';
|
|
import GridCtrl from '../board/grid.controller';
|
|
import TitlebarCtrl from '../board/titlebar.controller';
|
|
|
|
import MultiplesModel from '../../models/multiples.model';
|
|
import FactorsModel from '../../models/factors.model';
|
|
import AdditionModel from '../../models/addition.model';
|
|
import SubtractionModel from '../../models/subtraction.model';
|
|
|
|
let dispatch;
|
|
const values = ['Multiples', 'Factors', 'Addition', 'Subtraction'];
|
|
let selected = 0;
|
|
|
|
const OptionsCtrl = {
|
|
setDispatch: d => dispatch = d,
|
|
|
|
getValues: () => values,
|
|
|
|
update() {
|
|
dispatch(OptionsActions.update(selected));
|
|
},
|
|
|
|
keyListener(e) {
|
|
if (e.keyCode === 32 || e.keyCode === 13) {
|
|
let model;
|
|
switch (selected) {
|
|
case 0:
|
|
model = MultiplesModel;
|
|
break;
|
|
case 1:
|
|
model = FactorsModel;
|
|
break;
|
|
case 2:
|
|
model = AdditionModel;
|
|
break;
|
|
case 3:
|
|
model = SubtractionModel;
|
|
break;
|
|
}
|
|
|
|
GridCtrl.setModel(model);
|
|
TitlebarCtrl.setModel(model);
|
|
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;
|
|
|