mirror of
https://github.com/Pandipipas/scoreko-dev.git
synced 2026-06-06 03:32:06 +00:00
b32c0e4560
- Added a new service for synchronizing state with replicants in `replicant-state-service.ts`. - Refactored commentary store to utilize the new synchronization service. - Created a new graphics settings store that syncs with replicants. - Introduced a packs store for managing installed packs and their states. - Updated players and scoreboard stores to use the new synchronization service. - Created shared services for managing replicated state in graphics components. - Refactored existing components to use the new shared services for replicant state. - Added normalization and default values for commentary, graphics settings, players, and scoreboard. - Improved type safety and organization in shared domain files for better maintainability.
121 lines
3.2 KiB
TypeScript
121 lines
3.2 KiB
TypeScript
import { defineStore } from 'pinia';
|
|
import { computed, ref } from 'vue';
|
|
import {
|
|
adjustScoreboardScore,
|
|
defaultScoreboard,
|
|
normalizeScoreboard,
|
|
resetScoreboardScores,
|
|
setScoreboardScore,
|
|
swapScoreboardPlayers,
|
|
type Scoreboard,
|
|
type ScoreboardSide,
|
|
} from '../../shared/domain/scoreboard';
|
|
import { readStorageSnapshot, syncScoreboardState } from '../services/replicant-state-service';
|
|
|
|
const STORAGE_KEY = 'scoreko-dev.scoreboard';
|
|
|
|
export const useScoreboardStore = defineStore('scoreboard', () => {
|
|
const scoreboard = ref<Scoreboard>({ ...defaultScoreboard });
|
|
const storageSnapshot = readStorageSnapshot(STORAGE_KEY, normalizeScoreboard);
|
|
if (storageSnapshot) {
|
|
scoreboard.value = storageSnapshot;
|
|
}
|
|
|
|
syncScoreboardState(scoreboard, STORAGE_KEY);
|
|
|
|
const setScoreboard = (value: Scoreboard): void => {
|
|
scoreboard.value = normalizeScoreboard(value);
|
|
};
|
|
|
|
const setGame = (value: string): void => {
|
|
scoreboard.value = { ...scoreboard.value, game: value };
|
|
};
|
|
|
|
const setRound = (value: string): void => {
|
|
scoreboard.value = { ...scoreboard.value, round: value };
|
|
};
|
|
|
|
const setScore = (side: ScoreboardSide, value: number): void => {
|
|
scoreboard.value = setScoreboardScore(scoreboard.value, side, value);
|
|
};
|
|
|
|
const adjustScore = (side: ScoreboardSide, delta: number): void => {
|
|
scoreboard.value = adjustScoreboardScore(scoreboard.value, side, delta);
|
|
};
|
|
|
|
const setSidePlayerId = (side: ScoreboardSide, value: string): void => {
|
|
scoreboard.value = {
|
|
...scoreboard.value,
|
|
[side === 'left' ? 'leftPlayerId' : 'rightPlayerId']: value,
|
|
};
|
|
};
|
|
|
|
const setSideNameOverride = (side: ScoreboardSide, value: string): void => {
|
|
scoreboard.value = {
|
|
...scoreboard.value,
|
|
[side === 'left' ? 'leftNameOverride' : 'rightNameOverride']: value,
|
|
};
|
|
};
|
|
|
|
const setSideTeamOverride = (side: ScoreboardSide, value: string): void => {
|
|
scoreboard.value = {
|
|
...scoreboard.value,
|
|
[side === 'left' ? 'leftTeamOverride' : 'rightTeamOverride']: value,
|
|
};
|
|
};
|
|
|
|
const setSideCountryOverride = (side: ScoreboardSide, value: string): void => {
|
|
scoreboard.value = {
|
|
...scoreboard.value,
|
|
[side === 'left' ? 'leftCountryOverride' : 'rightCountryOverride']: value,
|
|
};
|
|
};
|
|
|
|
const setSideCharacter = (side: ScoreboardSide, value: string): void => {
|
|
scoreboard.value = {
|
|
...scoreboard.value,
|
|
[side === 'left' ? 'leftCharacter' : 'rightCharacter']: value,
|
|
};
|
|
};
|
|
|
|
const swapPlayers = (): void => {
|
|
scoreboard.value = swapScoreboardPlayers(scoreboard.value);
|
|
};
|
|
|
|
const resetScores = (): void => {
|
|
scoreboard.value = resetScoreboardScores(scoreboard.value);
|
|
};
|
|
|
|
const leftScore = computed({
|
|
get: () => scoreboard.value.leftScore,
|
|
set: (value: number) => {
|
|
setScore('left', value);
|
|
},
|
|
});
|
|
|
|
const rightScore = computed({
|
|
get: () => scoreboard.value.rightScore,
|
|
set: (value: number) => {
|
|
setScore('right', value);
|
|
},
|
|
});
|
|
|
|
return {
|
|
scoreboard,
|
|
leftScore,
|
|
rightScore,
|
|
setScoreboard,
|
|
setGame,
|
|
setRound,
|
|
setScore,
|
|
adjustScore,
|
|
setSidePlayerId,
|
|
setSideNameOverride,
|
|
setSideTeamOverride,
|
|
setSideCountryOverride,
|
|
setSideCharacter,
|
|
swapPlayers,
|
|
resetScores,
|
|
};
|
|
});
|