feat: configurable locales path per story, dynamic language switching from story data
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { defineStore } from 'pinia'
|
||||
import { ref, shallowRef } from 'vue'
|
||||
import type { SceneNode, Choice, QTEDefinition, Hotspot, ChapterInfo, AchievementDef, EndingDef } from '@engine/types'
|
||||
import type { SceneNode, Choice, QTEDefinition, Hotspot, ChapterInfo, AchievementDef, EndingDef, LocalesConfig } from '@engine/types'
|
||||
|
||||
export interface SlotInfo {
|
||||
slot: number
|
||||
@@ -36,6 +36,7 @@ export const useGameStore = defineStore('game', () => {
|
||||
const showEndingGallery = ref(false)
|
||||
const endings = ref<EndingDef[]>([])
|
||||
const visitedSceneIds = ref<Set<string>>(new Set())
|
||||
const storyLocales = ref<LocalesConfig>({ path: '', languages: ['zh'] })
|
||||
|
||||
const subFontSize = ref(Number(localStorage.getItem('subFontSize') || 20))
|
||||
const subBgAlpha = ref(Number(localStorage.getItem('subBgAlpha') || 0))
|
||||
@@ -180,6 +181,10 @@ export const useGameStore = defineStore('game', () => {
|
||||
visitedSceneIds.value = new Set(visitedSceneIds.value)
|
||||
}
|
||||
|
||||
function setStoryLocales(locales: LocalesConfig | undefined) {
|
||||
if (locales) storyLocales.value = locales
|
||||
}
|
||||
|
||||
function setSubFontSize(v: number) { subFontSize.value = v; localStorage.setItem('subFontSize', String(v)) }
|
||||
function setSubBgAlpha(v: number) { subBgAlpha.value = v; localStorage.setItem('subBgAlpha', String(v)) }
|
||||
function setQteTimeRelax(v: boolean) { qteTimeRelax.value = v; localStorage.setItem('qteTimeRelax', String(v)) }
|
||||
@@ -206,6 +211,7 @@ export const useGameStore = defineStore('game', () => {
|
||||
hotspots, isImageScene, showChapterSelect, chapters, unlockedChapterIds,
|
||||
inputMode, showAchievements, achievementDefs, unlockedAchievementIds,
|
||||
toastAchievementId, showEndingGallery, endings, visitedSceneIds,
|
||||
storyLocales,
|
||||
subFontSize, subBgAlpha, qteTimeRelax, qteSingleKey, antiMistap, pauseEnabled,
|
||||
showSettings,
|
||||
setScene, setChoices, clearChoices, setGameEnded,
|
||||
@@ -217,6 +223,7 @@ export const useGameStore = defineStore('game', () => {
|
||||
setShowAchievements, setAchievementDefs, setUnlockedAchievementIds,
|
||||
addUnlockedAchievement, clearToastAchievement,
|
||||
setEndings, setShowEndingGallery, setVisitedSceneIds, addVisitedSceneId,
|
||||
setStoryLocales,
|
||||
setSubFontSize, setSubBgAlpha, setQteTimeRelax, setQteSingleKey, setAntiMistap, setPauseEnabled,
|
||||
setShowSettings,
|
||||
dump,
|
||||
|
||||
Reference in New Issue
Block a user