diff options
Diffstat (limited to 'stores')
| -rw-r--r-- | stores/loader.ts | 55 | ||||
| -rw-r--r-- | stores/session.ts | 6 |
2 files changed, 60 insertions, 1 deletions
diff --git a/stores/loader.ts b/stores/loader.ts new file mode 100644 index 0000000..fe3742c --- /dev/null +++ b/stores/loader.ts @@ -0,0 +1,55 @@ +import { defineStore } from 'pinia' +import type { EditorCategory, EditorItem } from './session'; + +export type FileSystemLoaderStatus = 'inactive' | 'pending' | 'loaded' | 'invalid' | 'valid'; + +export const useLoaderStore = defineStore('loader', { + state: () => ({ + fileSystem: { + status: 'inactive' as FileSystemLoaderStatus, + path: '' as string, + quests: [] as EditorQuest[], + categories: [] as EditorCategory[], + items: [] as EditorItem[], + } + }), + getters: { + getFileSystemLoaderStatus: (state) => () => { + return state.fileSystem.status; + }, + getPath: (state) => () => { + return state.fileSystem.path; + }, + getQuests: (state) => () => { + return state.fileSystem.quests; + }, + getCategories: (state) => () => { + return state.fileSystem.categories; + }, + getItems: (state) => () => { + return state.fileSystem.items; + }, + }, + actions: { + setFileSystemLoaderStatus(status: FileSystemLoaderStatus) { + this.fileSystem.status = status; + if (status === 'inactive' || status === 'pending') { + this.fileSystem.quests = []; + this.fileSystem.categories = []; + this.fileSystem.items = []; + } + }, + setPath(path: string) { + this.fileSystem.path = path; + }, + setQuests(quests: EditorQuest[]) { + this.fileSystem.quests = quests; + }, + setCategories(categories: EditorCategory[]) { + this.fileSystem.categories = categories; + }, + setItems(items: EditorItem[]) { + this.fileSystem.items = items; + } + } +}); diff --git a/stores/session.ts b/stores/session.ts index 7822547..40587e9 100644 --- a/stores/session.ts +++ b/stores/session.ts @@ -101,6 +101,7 @@ export const useSessionStore = defineStore('session', { categories: [] as EditorCategory[], items: [] as EditorItem[], taskDefinitions: {} as { [key: string]: TaskDefinition }, + taskTypeAliases: {} as { [key: string]: string }, questItemDefinitions: {} as { [key: string]: QuestItemDefinition } } }), @@ -137,7 +138,7 @@ export const useSessionStore = defineStore('session', { return state.session.taskDefinitions }, getTaskDefinitionByTaskType: (state) => (type: string) => { - return state.session.taskDefinitions[type] + return state.session.taskDefinitions[type] || state.session.taskDefinitions[state.session.taskTypeAliases[type]] }, getKnownTaskTypes: (state) => () => { return Object.keys(state.session.taskDefinitions) @@ -168,6 +169,9 @@ export const useSessionStore = defineStore('session', { setTaskDefinitions(definitions: { [key: string]: TaskDefinition }) { this.session.taskDefinitions = definitions; }, + setTaskTypeAliases(taskTypeAliases: { [key: string]: string }) { + this.session.taskTypeAliases = taskTypeAliases; + }, setQuestItemDefinitions(definitions: { [key: string]: QuestItemDefinition }) { this.session.questItemDefinitions = definitions; }, |
