134 lines
3.0 KiB
JavaScript
134 lines
3.0 KiB
JavaScript
/* TODO: terminology is to be changed for :
|
|
canvas/board :
|
|
currently, the canvas object is named board,
|
|
while the structure used to store automata current state is named "board" as well. This is confusing
|
|
drawing board could be enough to lift any ambiguity
|
|
|
|
rules:
|
|
confusion bewteen ruleset and rules.
|
|
it's never clear if we refers to a rule or the whole (named) set
|
|
*/
|
|
import { createStore } from "vuex";
|
|
|
|
export const store = createStore({
|
|
strict: process.env.NODE_ENV !== "production",
|
|
state: {
|
|
rules1d: {
|
|
name: "rule 73",
|
|
rules: {
|
|
111: 0,
|
|
110: 1,
|
|
101: 0,
|
|
100: 0,
|
|
"011": 1,
|
|
"010": 0,
|
|
"001": 0,
|
|
"000": 1,
|
|
},
|
|
},
|
|
cellProperties: {
|
|
size: 3,
|
|
liveColor: "#000000",
|
|
deadColor: "#F5F5F5",
|
|
},
|
|
canvasWidth: 0,
|
|
canvasHeight: 0,
|
|
boardWidth: 0,
|
|
boardHeight: 0,
|
|
refreshRate: 300,
|
|
initial1dState: "onecell",
|
|
activeMenu: "",
|
|
drawingDirection: "y",
|
|
lastBoard: {},
|
|
isDrawing1d: false,
|
|
},
|
|
mutations: {
|
|
update1dSingleRule(state, data) {
|
|
state.rules1d.name = data.name;
|
|
state.rules1d.rules[data.rule] = data.value;
|
|
},
|
|
update1dRules(state, data) {
|
|
state.rules1d = data;
|
|
},
|
|
setCellProperties(state, data) {
|
|
state.cellProperties[data.name] = data.value;
|
|
},
|
|
setCanvasWidth(state, data) {
|
|
state.canvasWidth = data;
|
|
},
|
|
setCanvasHeight(state, data) {
|
|
state.canvasHeight = data;
|
|
},
|
|
setRefreshRate(state, data) {
|
|
state.refreshRate = data;
|
|
},
|
|
setInitial1dState(state, data) {
|
|
state.initial1dState = data;
|
|
},
|
|
setActiveMenu(state, data) {
|
|
state.activeMenu = data;
|
|
},
|
|
setDrawingDirection(state, data) {
|
|
state.drawingDirection = data;
|
|
},
|
|
setLastBoard(state, data) {
|
|
state.lastBoard = data;
|
|
},
|
|
setCanvas(state, data) {
|
|
state.canvas = data;
|
|
},
|
|
setContext(state, data) {
|
|
state.ctx = data;
|
|
},
|
|
setIsDrawing1d(state, data) {
|
|
state.isDrawing1d = data;
|
|
},
|
|
},
|
|
getters: {
|
|
getCellProperties(state) {
|
|
return state.cellProperties;
|
|
},
|
|
get1dRules(state) {
|
|
return state.rules1d;
|
|
},
|
|
getRule1d(state) {
|
|
// getter with side-effect. no work
|
|
return state.rules1d;
|
|
},
|
|
getCanvasWidth(state) {
|
|
return state.canvasWidth;
|
|
},
|
|
getCanvasHeight(state) {
|
|
return state.canvasHeight;
|
|
},
|
|
getRefreshRate(state) {
|
|
return state.refreshRate;
|
|
},
|
|
getInitial1dState(state) {
|
|
return state.initial1dState;
|
|
},
|
|
getActiveMenu(state) {
|
|
return state.activeMenu;
|
|
},
|
|
getDrawingDirection(state) {
|
|
return state.drawingDirection;
|
|
},
|
|
getLastBoard(state) {
|
|
return state.lastBoard;
|
|
},
|
|
getIsDrawing1d(state) {
|
|
return state.isDrawing1d;
|
|
},
|
|
},
|
|
actions: {
|
|
draw1d({ commit }) {
|
|
commit("setIsDrawing1d", 1);
|
|
},
|
|
stop({ commit }) {
|
|
commit("setIsDrawing1d");
|
|
// commit("setIsDrawing2d")
|
|
},
|
|
},
|
|
modules: {},
|
|
});
|