From 980cdc35a22ac366d5540ef120c743b1c352d69e Mon Sep 17 00:00:00 2001 From: Gator Date: Thu, 13 Jan 2022 18:07:41 +0100 Subject: [PATCH] option to change drawing direction --- src/components/Canvas.vue | 10 +++++++--- src/components/MenuElementaryCA.vue | 3 ++- src/components/MenuGeneralOptions.vue | 19 ++++++++++++++++++- src/store/index.js | 15 +++++++++++---- 4 files changed, 38 insertions(+), 9 deletions(-) diff --git a/src/components/Canvas.vue b/src/components/Canvas.vue index dc68614..a0153de 100644 --- a/src/components/Canvas.vue +++ b/src/components/Canvas.vue @@ -28,7 +28,8 @@ export default { canvasWidth: 'getCanvasWidth', canvasHeight: 'getCanvasHeight', refreshRate: 'getRefreshRate', - initial1dState: 'getInitial1dState' + initial1dState: 'getInitial1dState', + drawingDirection: 'getDrawingDirection' }), boardWidth: function() { return Math.floor( @@ -61,7 +62,10 @@ export default { if (cell === 1) return props.liveColor return props.deadColor })() - this.ctx.fillRect(x * d, y * d, d, d) + if (this.drawingDirection === "x") + this.ctx.fillRect(y * d, x * d, d, d) + else + this.ctx.fillRect(x * d, y * d, d, d) return cell }, ) @@ -77,7 +81,7 @@ export default { const board = createBoard( initialState, this.rules, - this.boardHeight + this.boardWidth ) this.drawCanvas(board) }, diff --git a/src/components/MenuElementaryCA.vue b/src/components/MenuElementaryCA.vue index 1e186d7..37656d1 100644 --- a/src/components/MenuElementaryCA.vue +++ b/src/components/MenuElementaryCA.vue @@ -94,7 +94,8 @@ export default { "rule 86" : {"100":1,"101":0,"110":0,"111":1,"011":0,"010":1,"001":0,"000":1}, "rule 90" : {"100":1,"101":0,"110":1,"111":0,"011":0,"010":0,"001":1,"000":0}, "rule 45?" : {"100":0,"101":0,"110":1,"111":0,"011":1,"010":0,"001":1,"000":1}, - "rule 54?" : {"100":1,"101":0,"110":1,"111":1,"011":0,"010":1,"001":1,"000":0} + "rule 54?" : {"100":1,"101":0,"110":1,"111":1,"011":0,"010":1,"001":1,"000":0}, + "unknown rule" : {"100":0,"101":0,"110":0,"111":1,"011":0,"010":0,"001":1,"000":1} }, initial1dStates: [ { id : "onecell", diff --git a/src/components/MenuGeneralOptions.vue b/src/components/MenuGeneralOptions.vue index fb858e6..c51dd89 100644 --- a/src/components/MenuGeneralOptions.vue +++ b/src/components/MenuGeneralOptions.vue @@ -40,6 +40,16 @@ @input="updateRefreshRate" > +
+ +
@@ -56,7 +66,8 @@ export default { ...mapGetters({ canvasWidth: 'getCanvasWidth', canvasHeight: 'getCanvasHeight', - refreshRate: 'getRefreshRate' + refreshRate: 'getRefreshRate', + drawingDirection: 'getDrawingDirection' }) }, methods: { @@ -71,6 +82,12 @@ export default { updateRefreshRate: function(event) { const elem = event.target this.$store.commit('setRefreshRate', elem.value) + }, + updateDrawingDirection: function(event) { + const elem = event.target + const value = elem.checked ? "x" : "y" + this.$store.commit('setDrawingDirection', value) + console.log(this.drawingDirection) } } } diff --git a/src/store/index.js b/src/store/index.js index c3bfbcb..4b5fa81 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -25,7 +25,8 @@ export default new Vuex.Store({ canvasHeight: 720, refreshRate: 300, initial1dState: "onecell", - activeMenu: "Elementary Cellular Automata" + activeMenu: "Elementary Cellular Automata", + drawingDirection: "y" }, mutations: { update1dSingleRule(state, data) { @@ -41,13 +42,13 @@ export default new Vuex.Store({ state.drawing = data }, setCanvasWidth(state, data) { - state.canvasWidth = data; + state.canvasWidth = data }, setCanvasHeight(state, data) { - state.canvasHeight = data; + state.canvasHeight = data }, setRefreshRate(state, data) { - state.refreshRate = data; + state.refreshRate = data }, setInitial1dState(state, data) { state.initial1dState = data @@ -55,6 +56,9 @@ export default new Vuex.Store({ setActiveMenu(state, data) { state.activeMenu = data }, + setDrawingDirection(state, data) { + state.drawingDirection = data + }, }, getters: { getCellProperties(state) { @@ -83,6 +87,9 @@ export default new Vuex.Store({ }, getActiveMenu(state) { return state.activeMenu + }, + getDrawingDirection(state) { + return state.drawingDirection } }, actions: {