mirror of
https://github.com/Pandipipas/scoreko-dev.git
synced 2026-06-06 03:32:06 +00:00
Persist character selections per game in scoreboard panel
This commit is contained in:
@@ -27,6 +27,7 @@ const rightCountryOptions = ref(countryOptions);
|
|||||||
const leftCharacterInput = ref('');
|
const leftCharacterInput = ref('');
|
||||||
const rightCharacterInput = ref('');
|
const rightCharacterInput = ref('');
|
||||||
const gameInput = ref('');
|
const gameInput = ref('');
|
||||||
|
const charactersByGame = ref<Record<string, { leftCharacter: string; rightCharacter: string }>>({});
|
||||||
|
|
||||||
const allFightingGameOptions = [
|
const allFightingGameOptions = [
|
||||||
'Street Fighter 6',
|
'Street Fighter 6',
|
||||||
@@ -643,18 +644,33 @@ watch(
|
|||||||
|
|
||||||
watch(
|
watch(
|
||||||
() => scoreboardStore.scoreboard.game,
|
() => scoreboardStore.scoreboard.game,
|
||||||
() => {
|
(newGame, previousGame) => {
|
||||||
|
if (previousGame) {
|
||||||
|
charactersByGame.value[previousGame] = {
|
||||||
|
leftCharacter: scoreboardStore.scoreboard.leftCharacter,
|
||||||
|
rightCharacter: scoreboardStore.scoreboard.rightCharacter,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
const options = getCharactersByGame(scoreboardStore.scoreboard.game);
|
const options = getCharactersByGame(scoreboardStore.scoreboard.game);
|
||||||
leftCharacterOptions.value = options;
|
leftCharacterOptions.value = options;
|
||||||
rightCharacterOptions.value = options;
|
rightCharacterOptions.value = options;
|
||||||
const allowed = new Set(options.map((option) => option.value));
|
const allowed = new Set(options.map((option) => option.value));
|
||||||
|
const savedCharacters = newGame ? charactersByGame.value[newGame] : undefined;
|
||||||
|
|
||||||
if (!allowed.has(scoreboardStore.scoreboard.leftCharacter)) {
|
const nextLeftCharacter = savedCharacters?.leftCharacter ?? '';
|
||||||
|
const nextRightCharacter = savedCharacters?.rightCharacter ?? '';
|
||||||
|
|
||||||
|
if (allowed.has(nextLeftCharacter)) {
|
||||||
|
scoreboardStore.scoreboard.leftCharacter = nextLeftCharacter;
|
||||||
|
} else if (!allowed.has(scoreboardStore.scoreboard.leftCharacter)) {
|
||||||
scoreboardStore.scoreboard.leftCharacter = '';
|
scoreboardStore.scoreboard.leftCharacter = '';
|
||||||
leftCharacterInput.value = '';
|
leftCharacterInput.value = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!allowed.has(scoreboardStore.scoreboard.rightCharacter)) {
|
if (allowed.has(nextRightCharacter)) {
|
||||||
|
scoreboardStore.scoreboard.rightCharacter = nextRightCharacter;
|
||||||
|
} else if (!allowed.has(scoreboardStore.scoreboard.rightCharacter)) {
|
||||||
scoreboardStore.scoreboard.rightCharacter = '';
|
scoreboardStore.scoreboard.rightCharacter = '';
|
||||||
rightCharacterInput.value = '';
|
rightCharacterInput.value = '';
|
||||||
}
|
}
|
||||||
@@ -667,6 +683,16 @@ watch(
|
|||||||
(value) => {
|
(value) => {
|
||||||
const match = characterOptions.value.find((option) => option.value === value);
|
const match = characterOptions.value.find((option) => option.value === value);
|
||||||
leftCharacterInput.value = match?.label ?? '';
|
leftCharacterInput.value = match?.label ?? '';
|
||||||
|
|
||||||
|
const currentGame = scoreboardStore.scoreboard.game;
|
||||||
|
if (!currentGame) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
charactersByGame.value[currentGame] = {
|
||||||
|
leftCharacter: value,
|
||||||
|
rightCharacter: scoreboardStore.scoreboard.rightCharacter,
|
||||||
|
};
|
||||||
},
|
},
|
||||||
{ immediate: true },
|
{ immediate: true },
|
||||||
);
|
);
|
||||||
@@ -676,6 +702,16 @@ watch(
|
|||||||
(value) => {
|
(value) => {
|
||||||
const match = characterOptions.value.find((option) => option.value === value);
|
const match = characterOptions.value.find((option) => option.value === value);
|
||||||
rightCharacterInput.value = match?.label ?? '';
|
rightCharacterInput.value = match?.label ?? '';
|
||||||
|
|
||||||
|
const currentGame = scoreboardStore.scoreboard.game;
|
||||||
|
if (!currentGame) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
charactersByGame.value[currentGame] = {
|
||||||
|
leftCharacter: scoreboardStore.scoreboard.leftCharacter,
|
||||||
|
rightCharacter: value,
|
||||||
|
};
|
||||||
},
|
},
|
||||||
{ immediate: true },
|
{ immediate: true },
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user