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

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;