aboutsummaryrefslogtreecommitdiffstats
path: root/stores
diff options
context:
space:
mode:
Diffstat (limited to 'stores')
-rw-r--r--stores/loader.ts55
-rw-r--r--stores/session.ts6
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;
},