layers undo (WIP)

This commit is contained in:
Hugh Bord 2021-12-27 15:39:29 +10:00
szülő b50fc25e8c
commit 8466731a4e
2 fájl változott, egészen pontosan 51 új sor hozzáadva és 32 régi sor törölve

Fájl megtekintése

@ -171,10 +171,17 @@ export default {
return this.$store.getters.currentAsciiLayers;
},
selectedLayer() {
return this.$store.getters.selectedLayer || 0;
let selectedLayer = this.$store.getters.selectedLayer;
while (this.currentAsciiLayers[selectedLayer] === undefined && selectedLayer >= 0) {
selectedLayer--;
}
this.$store.commit("changeLayer", selectedLayer);
return selectedLayer
},
currentLayer() {
return this.currentAsciiLayers[this.selectedLayer] || this.currentAsciiLayers[0];
return this.currentAsciiLayers[this.selectedLayer];
},
canToggleLayer() {
return this.currentAsciiLayers.length > 1;

Fájl megtekintése

@ -337,7 +337,7 @@ export default new Vuex.Store({
}))
});
state.asciibirdMeta[state.tab].historyIndex = state.asciibirdMeta[state.tab].history
.length-1;
.length;
},
changeLayer(state, payload) {
state.asciibirdMeta[state.tab].selectedLayer = payload
@ -353,15 +353,15 @@ export default new Vuex.Store({
state.asciibirdMeta[state.tab].layers = LZString.compressToUTF16(JSON.stringify(
tempLayers));
state.asciibirdMeta[state.tab].history.push({
t: 'l',
d: LZString.compressToUTF16(JSON.stringify({
new: tempLayers,
old: oldLayer
}))
});
state.asciibirdMeta[state.tab].historyIndex = state.asciibirdMeta[state.tab].history
.length;
state.asciibirdMeta[state.tab].history.push({
t: 'l',
d: LZString.compressToUTF16(JSON.stringify({
new: tempLayers,
old: oldLayer
}))
});
state.asciibirdMeta[state.tab].historyIndex = state.asciibirdMeta[state.tab].history
.length;
},
removeLayer(state, payload) {
let tempLayers = JSON.parse(LZString.decompressFromUTF16(state.asciibirdMeta[state.tab]
@ -389,13 +389,13 @@ export default new Vuex.Store({
// }
// Automatically select the next best layer to avoid bugs
state.asciibirdMeta[state.tab].selectedLayer = 0
let selectedLayer = state.asciibirdMeta[state.tab].selectedLayer
// if (tempLayers[payload + 1]) {
// state.asciibirdMeta[state.tab].selectedLayer = payload + 1
// } else if (tempLayers[payload - 1]) {
// state.asciibirdMeta[state.tab].selectedLayer = payload - 1
// }
while (tempLayers[selectedLayer] === undefined && selectedLayer >= 0) {
selectedLayer--;
}
state.asciibirdMeta[state.tab].selectedLayer = selectedLayer
state.asciibirdMeta[state.tab].layers = LZString.compressToUTF16(JSON.stringify(
tempLayers));
@ -575,6 +575,18 @@ export default new Vuex.Store({
.old));
state.asciibirdMeta[state.tab].historyIndex--;
// Automatically select the next best layer to avoid bugs
let selectedLayer = state.asciibirdMeta[state.tab].selectedLayer
if (data.old[selectedLayer + 1]) {
state.asciibirdMeta[state.tab].selectedLayer = selectedLayer + 1
} else if (data.old[selectedLayer - 1]) {
state.asciibirdMeta[state.tab].selectedLayer = selectedLayer - 1
} else {
state.asciibirdMeta[state.tab].selectedLayer = selectedLayer
}
return;
}
@ -585,7 +597,7 @@ export default new Vuex.Store({
let tempLayers = JSON.parse(LZString.decompressFromUTF16(state.asciibirdMeta[state.tab]
.layers))
// Process block chunks
if (prev.old) {
@ -611,22 +623,22 @@ export default new Vuex.Store({
if (state.asciibirdMeta[state.tab].history[historyIndex]) {
prev = state.asciibirdMeta[state.tab].history[historyIndex];
prev = state.asciibirdMeta[state.tab].history[historyIndex];
// Process layer chunks
if (state.asciibirdMeta[state.tab].history[historyIndex].t !== undefined && state
.asciibirdMeta[state.tab].history[historyIndex].t === 'l') {
// Process layer chunks
if (state.asciibirdMeta[state.tab].history[historyIndex].t !== undefined && state
.asciibirdMeta[state.tab].history[historyIndex].t === 'l') {
let data = JSON.parse(LZString.decompressFromUTF16(state.asciibirdMeta[state.tab]
.history[historyIndex].d));
console.log(data)
let data = JSON.parse(LZString.decompressFromUTF16(state.asciibirdMeta[state.tab]
.history[historyIndex].d));
console.log(data)
state.asciibirdMeta[state.tab].layers = LZString.compressToUTF16(JSON.stringify(data
.old));
state.asciibirdMeta[state.tab].layers = LZString.compressToUTF16(JSON.stringify(data
.old));
state.asciibirdMeta[state.tab].historyIndex++;
return;
}
state.asciibirdMeta[state.tab].historyIndex++;
return;
}
prev = JSON.parse(LZString.decompressFromUTF16(state.asciibirdMeta[state.tab]
.history[
@ -637,7 +649,7 @@ export default new Vuex.Store({
.layers))
// Process block chunks
if (prev.new) {
if (prev.new && prev.l !== undefined) {
for (let change in prev.new) {
let data = prev.new[change];
tempLayers[prev.l].data[data.y][data.x] = {