narrat 2.0.0-test-2 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/README.md +38 -38
  2. package/dist/app.vue.d.ts +106 -0
  3. package/dist/components/MainMenu.vue.d.ts +12 -0
  4. package/dist/components/Skills.vue.d.ts +22 -0
  5. package/dist/components/debug/debug-menu.vue.d.ts +48 -0
  6. package/dist/components/dialog-picture.vue.d.ts +9 -0
  7. package/dist/components/game-dialog.vue.d.ts +65 -0
  8. package/dist/components/hud.vue.d.ts +12 -0
  9. package/dist/components/inventory-ui.vue.d.ts +30 -0
  10. package/dist/components/loading-bar.vue.d.ts +10 -0
  11. package/dist/components/menu-buttons.vue.d.ts +26 -0
  12. package/dist/components/notification-toast.vue.d.ts +6 -0
  13. package/dist/components/quests-ui.vue.d.ts +20 -0
  14. package/dist/components/utils/modal.vue.d.ts +6 -0
  15. package/dist/components/volume-controls.vue.d.ts +7 -0
  16. package/dist/config.d.ts +151 -0
  17. package/dist/constants.d.ts +1 -0
  18. package/dist/data/config.json +7 -1
  19. package/dist/data/example.rpy +8 -4
  20. package/dist/data/refactor.rpy +1 -1
  21. package/dist/defaultConfig.d.ts +2 -0
  22. package/dist/demo/demo.d.ts +1 -0
  23. package/dist/dialog-box.vue.d.ts +37 -0
  24. package/dist/exports/config.d.ts +1 -0
  25. package/dist/exports/display.d.ts +2 -0
  26. package/dist/exports/plugins.d.ts +20 -0
  27. package/dist/gameloop.d.ts +3 -0
  28. package/dist/lib/lib.d.ts +15 -0
  29. package/dist/lib.css +1 -0
  30. package/dist/main.d.ts +5 -0
  31. package/dist/narrat.es.js +18898 -21563
  32. package/dist/narrat.umd.js +112 -111
  33. package/dist/plugins/NarratPlugin.d.ts +11 -0
  34. package/dist/stores/audio-store.d.ts +12 -0
  35. package/dist/stores/dialog-store.d.ts +31 -0
  36. package/dist/stores/hud-stats-store.d.ts +22 -0
  37. package/dist/stores/inventory-store.d.ts +37 -0
  38. package/dist/stores/main-store.d.ts +276 -0
  39. package/dist/stores/notification-store.d.ts +12 -0
  40. package/dist/stores/quest-log.d.ts +39 -0
  41. package/dist/stores/rendering-store.d.ts +13 -0
  42. package/dist/stores/screens-store.d.ts +23 -0
  43. package/dist/stores/skills.d.ts +36 -0
  44. package/dist/stores/vm-store.d.ts +148 -0
  45. package/dist/types/app-types.d.ts +4 -0
  46. package/dist/types/character-types.d.ts +27 -0
  47. package/dist/types/dialog-box-types.d.ts +10 -0
  48. package/dist/types/game-save.d.ts +21 -0
  49. package/dist/types/parser.d.ts +92 -0
  50. package/dist/types/state.d.ts +3 -0
  51. package/dist/utils/ajax.d.ts +1 -0
  52. package/dist/utils/audio-loader.d.ts +13 -0
  53. package/dist/utils/characters.d.ts +5 -0
  54. package/dist/utils/data-helpers.d.ts +19 -0
  55. package/dist/utils/debounce.d.ts +14 -0
  56. package/dist/utils/error-handling.d.ts +3 -0
  57. package/dist/utils/helpers.d.ts +6 -0
  58. package/dist/utils/images-loader.d.ts +6 -0
  59. package/dist/utils/logger.d.ts +11 -0
  60. package/dist/utils/object-iterators.d.ts +8 -0
  61. package/dist/utils/promises.d.ts +1 -0
  62. package/dist/utils/randomId.d.ts +1 -0
  63. package/dist/utils/skillchecks.d.ts +17 -0
  64. package/dist/utils/string-helpers.d.ts +3 -0
  65. package/dist/utils/time-helpers.d.ts +2 -0
  66. package/dist/vm/commands/arithmetic-commands.d.ts +17 -0
  67. package/dist/vm/commands/audio-commands.d.ts +8 -0
  68. package/dist/vm/commands/choice.d.ts +37 -0
  69. package/dist/vm/commands/clear_dialog.d.ts +2 -0
  70. package/dist/vm/commands/command-helpers.d.ts +2 -0
  71. package/dist/vm/commands/command-plugin.d.ts +30 -0
  72. package/dist/vm/commands/flow-commands.d.ts +14 -0
  73. package/dist/vm/commands/if.d.ts +10 -0
  74. package/dist/vm/commands/index.d.ts +2 -0
  75. package/dist/vm/commands/inventory-commands.d.ts +15 -0
  76. package/dist/vm/commands/logic-command.d.ts +42 -0
  77. package/dist/vm/commands/notify.d.ts +4 -0
  78. package/dist/vm/commands/quest-commands.d.ts +30 -0
  79. package/dist/vm/commands/screen-commands.d.ts +8 -0
  80. package/dist/vm/commands/set.d.ts +6 -0
  81. package/dist/vm/commands/skill-commands.d.ts +33 -0
  82. package/dist/vm/commands/stats-commands.d.ts +12 -0
  83. package/dist/vm/commands/string-commands.d.ts +9 -0
  84. package/dist/vm/commands/text-field.d.ts +7 -0
  85. package/dist/vm/commands/text.d.ts +13 -0
  86. package/dist/vm/commands/wait.d.ts +4 -0
  87. package/dist/vm/vm-helpers.d.ts +16 -0
  88. package/dist/vm/vm-parser.d.ts +19 -0
  89. package/dist/vm/vm-parser.test.d.ts +1 -0
  90. package/dist/vm/vm.d.ts +19 -0
  91. package/package.json +79 -65
  92. package/dist/style.css +0 -1
@@ -0,0 +1,11 @@
1
+ import { NarratPluginObject } from '../exports/plugins';
2
+ export declare class NarratPlugin<T = any> implements NarratPluginObject<T> {
3
+ onPageLoaded(): void;
4
+ onNarratSetup(): void;
5
+ onAppMounted(): void;
6
+ onAssetsLoaded(): void;
7
+ onGameSetup(): void;
8
+ onGameStart(): void;
9
+ onGameMounted(): void;
10
+ onGameDismounted(): void;
11
+ }
@@ -0,0 +1,12 @@
1
+ export interface AudioState {
2
+ currentMusic?: string;
3
+ musicHowlId?: number;
4
+ }
5
+ export declare type AudioSave = Omit<AudioState, 'musicHowlId'>;
6
+ export declare const useAudio: import("pinia").StoreDefinition<"audio", AudioState, {}, {
7
+ stopMusic(): void;
8
+ setMusic(music: string, soundId: number): void;
9
+ generateSaveData(): AudioSave;
10
+ loadSaveData(data: AudioSave): void;
11
+ reset(): void;
12
+ }>;
@@ -0,0 +1,31 @@
1
+ export declare type AddDialogParams = Omit<DialogKey, 'id' | 'interactive'> & {
2
+ interactive?: boolean;
3
+ };
4
+ export interface DialogKey {
5
+ speaker: string;
6
+ text: string;
7
+ pose?: string;
8
+ choices?: DialogChoice[];
9
+ textField?: boolean;
10
+ interactive: boolean;
11
+ id: string;
12
+ }
13
+ export interface DialogChoice {
14
+ choice: string;
15
+ originalIndex: number;
16
+ allowed: boolean;
17
+ }
18
+ declare type DialogState = {
19
+ dialog: DialogKey[];
20
+ };
21
+ export declare type DialogSave = DialogState;
22
+ export declare const useDialogStore: import("pinia").StoreDefinition<"dialog", DialogState, {
23
+ currentDialog(): DialogKey;
24
+ }, {
25
+ generateSaveData(): DialogSave;
26
+ loadSaveData(data: DialogSave): void;
27
+ addDialog(dialog: AddDialogParams): void;
28
+ clearDialog(): void;
29
+ reset(): void;
30
+ }>;
31
+ export {};
@@ -0,0 +1,22 @@
1
+ import { HudStatConfig } from '../config';
2
+ export interface HudStatsState {
3
+ [key: string]: HudStat;
4
+ }
5
+ export interface HudStat {
6
+ value: number;
7
+ }
8
+ export interface HudState {
9
+ hudStats: HudStatsState;
10
+ }
11
+ export declare type HudSave = HudState;
12
+ export declare const useHud: import("pinia").StoreDefinition<"hud", HudState, {}, {
13
+ setupHudStats(stats: {
14
+ [key: string]: HudStatConfig;
15
+ }): void;
16
+ setStat(stat: string, value: number): void;
17
+ addStat(stat: string, value: number): void;
18
+ getStat(stat: string): HudStat;
19
+ getStatValue(stat: string): number;
20
+ generateSaveData(): HudSave;
21
+ loadSaveData(data: HudSave): void;
22
+ }>;
@@ -0,0 +1,37 @@
1
+ import { ItemData } from '../config';
2
+ export interface ItemState {
3
+ amount: number;
4
+ id: string;
5
+ }
6
+ export interface InventoryState {
7
+ /** Note: Items are an object so that it's easy to access specific items in game scripts.
8
+ * One side effect of this is that the order items appear in isn't technicaclly guaranteed.
9
+ * It also means there can only be one "stack" of an item at a time */
10
+ items: {
11
+ [key: string]: ItemState;
12
+ };
13
+ interactionTags: {
14
+ [key: string]: {
15
+ blockedInteraction: boolean;
16
+ };
17
+ };
18
+ }
19
+ export declare type InventorySave = InventoryState;
20
+ export declare const useInventory: import("pinia").StoreDefinition<"inventory", InventoryState, {}, {
21
+ generateSaveData(): InventorySave;
22
+ loadSaveData(save: InventorySave): void;
23
+ setupItems(items: {
24
+ [key: string]: ItemData;
25
+ }): void;
26
+ hasItem(itemId: string, amount?: number): boolean;
27
+ getExistingItem(id: string): ItemState | undefined;
28
+ getItemAmount(id: string): number;
29
+ add(item: ItemState): void;
30
+ enableInteraction(tag?: string): void;
31
+ disableInteraction(tag?: string): void;
32
+ onScriptStart(): void;
33
+ onScriptEnd(): void;
34
+ isInteractionTagBlocked(tag?: string): boolean;
35
+ remove(item: ItemState): void;
36
+ deleteItem(id: string): void;
37
+ }>;
@@ -0,0 +1,276 @@
1
+ import { GameSave } from '../types/game-save';
2
+ import { AppOptions, Config } from '../config';
3
+ export interface ErrorState {
4
+ text: string;
5
+ }
6
+ interface MainState {
7
+ ready: boolean;
8
+ playing: boolean;
9
+ errors: ErrorState[];
10
+ playTime: {
11
+ start: number;
12
+ previousPlaytime: number;
13
+ };
14
+ options: AppOptions;
15
+ flowState: 'menu' | 'playing';
16
+ modal: string | false;
17
+ paused: boolean;
18
+ }
19
+ export interface MainSaveData {
20
+ playTime: number;
21
+ }
22
+ export declare const useMain: import("pinia").StoreDefinition<"main", MainState, {}, {
23
+ setup(scriptPaths: string[], config: Config): Promise<void>;
24
+ startMachine(): void;
25
+ startGame(): Promise<void>;
26
+ loadGame(saveFile: string): Promise<void>;
27
+ playerAnswered(choice: number | string): void;
28
+ menuReturn(): void;
29
+ createError(text: string): void;
30
+ clearErrors(): void;
31
+ setFlowState(flowState: 'menu' | 'playing'): void;
32
+ openModal(modal: string): void;
33
+ closeModal(): void;
34
+ toggleMenu(): void;
35
+ pause(): void;
36
+ unpause(): void;
37
+ setOptions(options: AppOptions): void;
38
+ startPlaying(): void;
39
+ reset(): void;
40
+ generateSaveData(): MainSaveData;
41
+ loadSaveData(data: MainSaveData): void;
42
+ saveGame(): void;
43
+ setLoadedData(save: GameSave): void;
44
+ getAllStates(): {
45
+ main: any & {
46
+ ready: boolean;
47
+ playing: boolean;
48
+ errors: {
49
+ text: string;
50
+ }[];
51
+ playTime: {
52
+ start: number;
53
+ previousPlaytime: number;
54
+ };
55
+ options: {
56
+ logging: boolean;
57
+ debug: boolean;
58
+ };
59
+ flowState: 'menu' | 'playing';
60
+ modal: string | false;
61
+ paused: boolean;
62
+ } & import("pinia")._StoreWithState<"main", MainState, {}, any> & import("pinia")._StoreWithGetters<{}> & import("pinia").PiniaCustomProperties<string, import("pinia").StateTree, import("pinia")._GettersTree<import("pinia").StateTree>, import("pinia")._ActionsTree>;
63
+ screens: import("pinia").Store<"screens", {
64
+ currentScreen: string;
65
+ buttons: import("./screens-store").ButtonsState;
66
+ }, {}, {
67
+ setScreen(screen: string): void;
68
+ setButtons(buttons: {
69
+ [key: string]: import("../config").ButtonConfig;
70
+ }): void;
71
+ changeButton(button: string, newValue: boolean): void;
72
+ generateSaveData(): import("./screens-store").ScreenState;
73
+ loadSaveData(data: import("./screens-store").ScreenState): void;
74
+ }>;
75
+ skills: import("pinia").Store<"skills", import("./skills").Skills, {}, {
76
+ setupSkillCheck(skillCheck: import("./skills").SkillCheckState, id: string): void;
77
+ passSkillCheck(skillCheckId: string, hide?: boolean | undefined): void;
78
+ failSkillCheck(skillCheckId: string, hide?: boolean | undefined): void;
79
+ generateSaveData(): import("./skills").Skills;
80
+ getSkillCheck(id: string): import("./skills").SkillCheckState;
81
+ createSkillCheckState(): import("./skills").SkillCheckState;
82
+ loadSaveData(data: import("./skills").Skills): void;
83
+ setupSkills(skills: {
84
+ [key: string]: import("../config").SkillData;
85
+ }): void;
86
+ addXp(skill: string, xp: number): void;
87
+ incrementSkill(skill: string, amount: number): void;
88
+ levelledUp(skill: string): void;
89
+ }>;
90
+ dialog: import("pinia").Store<"dialog", {
91
+ dialog: import("./dialog-store").DialogKey[];
92
+ }, {
93
+ currentDialog(): import("./dialog-store").DialogKey;
94
+ }, {
95
+ generateSaveData(): {
96
+ dialog: import("./dialog-store").DialogKey[];
97
+ };
98
+ loadSaveData(data: {
99
+ dialog: import("./dialog-store").DialogKey[];
100
+ }): void;
101
+ addDialog(dialog: import("./dialog-store").AddDialogParams): void;
102
+ clearDialog(): void;
103
+ reset(): void;
104
+ }>;
105
+ vm: import("pinia").Store<"vm", import("./vm-store").VMState, {
106
+ currentStack(state: {
107
+ lastChoiceCommand?: {
108
+ args: (import("../types/parser").Parser.Primitive | {
109
+ code: string;
110
+ command: {
111
+ commandType: string;
112
+ operator: string;
113
+ args: (import("../types/parser").Parser.Primitive | any)[];
114
+ options: import("../types/parser").Parser.DefaultArg;
115
+ staticOptions: {};
116
+ };
117
+ fileName: string;
118
+ line: number;
119
+ })[];
120
+ commandType: string;
121
+ options: import("../types/parser").Parser.DefaultArg;
122
+ code: string;
123
+ staticOptions: {};
124
+ operator: string;
125
+ line: number;
126
+ fileName: string;
127
+ } | undefined;
128
+ stack: {
129
+ currentIndex: number;
130
+ branchData: {
131
+ branch: {
132
+ code: string;
133
+ command: {
134
+ commandType: string;
135
+ operator: string;
136
+ args: (import("../types/parser").Parser.Primitive | any)[];
137
+ options: import("../types/parser").Parser.DefaultArg;
138
+ staticOptions: {};
139
+ };
140
+ fileName: string;
141
+ line: number;
142
+ }[];
143
+ args?: string[] | undefined;
144
+ };
145
+ label: string;
146
+ scope: {
147
+ [key: string]: any;
148
+ };
149
+ onComplete?: ((result: any) => void) | undefined;
150
+ returnValue: any;
151
+ }[];
152
+ script: import("../types/parser").Parser.ParsedScript;
153
+ data: import("./vm-store").DataState;
154
+ lastLabel: string;
155
+ currentScope: {
156
+ [key: string]: any;
157
+ };
158
+ } & import("pinia").PiniaCustomStateProperties<import("./vm-store").VMState>): {
159
+ currentIndex: number;
160
+ branchData: {
161
+ branch: {
162
+ code: string;
163
+ command: {
164
+ commandType: string;
165
+ operator: string;
166
+ args: (import("../types/parser").Parser.Primitive | any)[];
167
+ options: import("../types/parser").Parser.DefaultArg;
168
+ staticOptions: {};
169
+ };
170
+ fileName: string;
171
+ line: number;
172
+ }[];
173
+ args?: string[] | undefined;
174
+ };
175
+ label: string;
176
+ scope: {
177
+ [key: string]: any;
178
+ };
179
+ onComplete?: ((result: any) => void) | undefined;
180
+ returnValue: any;
181
+ };
182
+ currentLine(): import("../types/parser").Parser.ParsedExpression<import("../types/parser").Parser.DefaultArg, {}> | undefined;
183
+ }, {
184
+ generateSaveData(): import("./vm-store").VMSave;
185
+ loadSaveData(data: import("./vm-store").VMSave): void;
186
+ resetScope(): void;
187
+ setReturnValue(value: any): void;
188
+ removeFromScope(vars: string[]): void;
189
+ addScopedVariable(key: string, value: any): void;
190
+ extendScope(scope: {
191
+ [key: string]: any;
192
+ }): void;
193
+ loadScripts(scriptPaths: string[]): Promise<void>;
194
+ start(): void;
195
+ setLastLabel(label: string): void;
196
+ reset(): void;
197
+ setScript(script: import("../types/parser").Parser.ParsedScript): void;
198
+ overrideData(data: import("./vm-store").DataState): void;
199
+ setStack(stack: import("./vm-store").SetStackOptions): void;
200
+ stackOptionsToStack(stack: import("./vm-store").SetStackOptions): import("./vm-store").MachineStack;
201
+ setData(path: string, value: any): void;
202
+ addInstruction(path: string, value: any): void;
203
+ addStack(newStackOptions: import("./vm-store").AddStackOptions): Promise<void>;
204
+ nextLine(): Promise<any>;
205
+ previousStack(): Promise<any>;
206
+ finishGame(): void;
207
+ runLine(): Promise<void>;
208
+ runLabelFunction(label: string, ...args: any[]): Promise<unknown>;
209
+ runCustomStack(stack: import("./vm-store").AddStackOptions): void;
210
+ runLabel(label: string, ...args: any[]): void;
211
+ }>;
212
+ hud: import("pinia").Store<"hud", import("./hud-stats-store").HudState, {}, {
213
+ setupHudStats(stats: {
214
+ [key: string]: import("../config").HudStatConfig;
215
+ }): void;
216
+ setStat(stat: string, value: number): void;
217
+ addStat(stat: string, value: number): void;
218
+ getStat(stat: string): import("./hud-stats-store").HudStat;
219
+ getStatValue(stat: string): number;
220
+ generateSaveData(): import("./hud-stats-store").HudState;
221
+ loadSaveData(data: import("./hud-stats-store").HudState): void;
222
+ }>;
223
+ audio: import("pinia").Store<"audio", import("./audio-store").AudioState, {}, {
224
+ stopMusic(): void;
225
+ setMusic(music: string, soundId: number): void;
226
+ generateSaveData(): import("./audio-store").AudioSave;
227
+ loadSaveData(data: import("./audio-store").AudioSave): void;
228
+ reset(): void;
229
+ }>;
230
+ rendering: import("pinia").Store<"rendering", import("./rendering-store").RenderingState, {}, {
231
+ updateScreenSize(width: number, height: number, textWidth: number): void;
232
+ }>;
233
+ notifications: import("pinia").Store<"notifications", import("./notification-store").NotificationsState, {}, {
234
+ addNotification(text: string): Promise<void>;
235
+ deleteNotification(id: string): void;
236
+ }>;
237
+ inventory: import("pinia").Store<"inventory", import("./inventory-store").InventoryState, {}, {
238
+ generateSaveData(): import("./inventory-store").InventoryState;
239
+ loadSaveData(save: import("./inventory-store").InventoryState): void;
240
+ setupItems(items: {
241
+ [key: string]: import("../config").ItemData;
242
+ }): void;
243
+ hasItem(itemId: string, amount?: number | undefined): boolean;
244
+ getExistingItem(id: string): import("./inventory-store").ItemState | undefined;
245
+ getItemAmount(id: string): number;
246
+ add(item: import("./inventory-store").ItemState): void;
247
+ enableInteraction(tag?: string | undefined): void;
248
+ disableInteraction(tag?: string | undefined): void;
249
+ onScriptStart(): void;
250
+ onScriptEnd(): void;
251
+ isInteractionTagBlocked(tag?: string | undefined): boolean;
252
+ remove(item: import("./inventory-store").ItemState): void;
253
+ deleteItem(id: string): void;
254
+ }>;
255
+ quests: import("pinia").Store<"quests", import("./quest-log").QuestLogState, {}, {
256
+ getQuest(questId: string): import("./quest-log").QuestState;
257
+ getObjective(questId: string, objectiveId: string): import("./quest-log").ObjectiveState;
258
+ setupQuests(quests: {
259
+ [key: string]: import("../config").QuestData;
260
+ }): void;
261
+ startQuest(questId: string): void;
262
+ startObjective(questId: string, objectiveId: string): void;
263
+ completeObjective(questId: string, objectiveId: string): void;
264
+ completeQuest(questId: string, ending?: string | undefined): void;
265
+ isQuestCompleted(questId: string): boolean;
266
+ isObjectiveCompleted(questId: string, objectiveId: string): boolean;
267
+ isQuestStarted(questId: string): boolean;
268
+ isObjectiveStarted(questId: string, objectiveId: string): boolean;
269
+ removeQuest(id: string): void;
270
+ generateSaveData(): import("./quest-log").QuestLogState;
271
+ loadSaveData(data: import("./quest-log").QuestLogState): void;
272
+ }>;
273
+ };
274
+ overrideStates(override: any): void;
275
+ }>;
276
+ export {};
@@ -0,0 +1,12 @@
1
+ export interface NotificationState {
2
+ text: string;
3
+ }
4
+ export interface NotificationsState {
5
+ notifications: {
6
+ [key: string]: NotificationState;
7
+ };
8
+ }
9
+ export declare const useNotifications: import("pinia").StoreDefinition<"notifications", NotificationsState, {}, {
10
+ addNotification(text: string): Promise<void>;
11
+ deleteNotification(id: string): void;
12
+ }>;
@@ -0,0 +1,39 @@
1
+ import { QuestData } from '../config';
2
+ export interface QuestLogState {
3
+ quests: {
4
+ [key: string]: QuestState;
5
+ };
6
+ }
7
+ export interface QuestState {
8
+ id: string;
9
+ state: 'hidden' | 'unlocked' | 'completed';
10
+ ending?: string;
11
+ /** Note: Objectives are an object so that it's easy to access specific objectives in game scripts.
12
+ * One side effect of this is that the order objectives appear in isn't technicaclly guaranteed. */
13
+ objectives: {
14
+ [key: string]: ObjectiveState;
15
+ };
16
+ }
17
+ export interface ObjectiveState {
18
+ id: string;
19
+ state: 'hidden' | 'unlocked' | 'completed';
20
+ }
21
+ export declare type QuestLogSave = QuestLogState;
22
+ export declare const useQuests: import("pinia").StoreDefinition<"quests", QuestLogState, {}, {
23
+ getQuest(questId: string): QuestState;
24
+ getObjective(questId: string, objectiveId: string): ObjectiveState;
25
+ setupQuests(quests: {
26
+ [key: string]: QuestData;
27
+ }): void;
28
+ startQuest(questId: string): void;
29
+ startObjective(questId: string, objectiveId: string): void;
30
+ completeObjective(questId: string, objectiveId: string): void;
31
+ completeQuest(questId: string, ending?: string): void;
32
+ isQuestCompleted(questId: string): boolean;
33
+ isObjectiveCompleted(questId: string, objectiveId: string): boolean;
34
+ isQuestStarted(questId: string): boolean;
35
+ isObjectiveStarted(questId: string, objectiveId: string): boolean;
36
+ removeQuest(id: string): void;
37
+ generateSaveData(): QuestLogSave;
38
+ loadSaveData(data: QuestLogSave): void;
39
+ }>;
@@ -0,0 +1,13 @@
1
+ export interface RenderingState {
2
+ screenWidth: number;
3
+ screenHeight: number;
4
+ canvasWidth: number;
5
+ canvasHeight: number;
6
+ renderRatio: number;
7
+ topOffset: number;
8
+ leftOffset: number;
9
+ layoutMode: 'horizontal' | 'vertical';
10
+ }
11
+ export declare const useRenderingStore: import("pinia").StoreDefinition<"rendering", RenderingState, {}, {
12
+ updateScreenSize(width: number, height: number, textWidth: number): void;
13
+ }>;
@@ -0,0 +1,23 @@
1
+ import { ButtonConfig } from '../config';
2
+ export interface ButtonsState {
3
+ [key: string]: {
4
+ enabled: boolean;
5
+ };
6
+ }
7
+ export interface ScreenState {
8
+ currentScreen: string;
9
+ buttons: ButtonsState;
10
+ }
11
+ export declare type ScreenSave = ScreenState;
12
+ export declare const useScreens: import("pinia").StoreDefinition<"screens", {
13
+ currentScreen: string;
14
+ buttons: ButtonsState;
15
+ }, {}, {
16
+ setScreen(screen: string): void;
17
+ setButtons(buttons: {
18
+ [key: string]: ButtonConfig;
19
+ }): void;
20
+ changeButton(button: string, newValue: boolean): void;
21
+ generateSaveData(): ScreenSave;
22
+ loadSaveData(data: ScreenSave): void;
23
+ }>;
@@ -0,0 +1,36 @@
1
+ import { SkillData } from '../config';
2
+ export interface SkillState {
3
+ id: string;
4
+ level: number;
5
+ xp: number;
6
+ }
7
+ export interface SkillsState {
8
+ [key: string]: SkillState;
9
+ }
10
+ export interface SkillCheckState {
11
+ happened: boolean;
12
+ succeeded: boolean;
13
+ hidden: boolean;
14
+ }
15
+ export interface Skills {
16
+ skillChecks: {
17
+ [key: string]: SkillCheckState;
18
+ };
19
+ skills: SkillsState;
20
+ }
21
+ export declare type SkillsSave = Skills;
22
+ export declare const useSkills: import("pinia").StoreDefinition<"skills", Skills, {}, {
23
+ setupSkillCheck(skillCheck: SkillCheckState, id: string): void;
24
+ passSkillCheck(skillCheckId: string, hide?: boolean): void;
25
+ failSkillCheck(skillCheckId: string, hide?: boolean): void;
26
+ generateSaveData(): SkillsSave;
27
+ getSkillCheck(id: string): SkillCheckState;
28
+ createSkillCheckState(): SkillCheckState;
29
+ loadSaveData(data: SkillsSave): void;
30
+ setupSkills(skills: {
31
+ [key: string]: SkillData;
32
+ }): void;
33
+ addXp(skill: string, xp: number): void;
34
+ incrementSkill(skill: string, amount: number): void;
35
+ levelledUp(skill: string): void;
36
+ }>;
@@ -0,0 +1,148 @@
1
+ import { Parser } from '../types/parser';
2
+ export declare type AddStackOptions = Omit<SetStackOptions, 'label'> & {
3
+ label?: string;
4
+ };
5
+ export interface MachineStack {
6
+ currentIndex: number;
7
+ branchData: Parser.ParsedLabel;
8
+ label: string;
9
+ scope: {
10
+ [key: string]: any;
11
+ };
12
+ onComplete?: (result: any) => void;
13
+ returnValue: any;
14
+ }
15
+ export interface SetStackOptions {
16
+ currentIndex: number;
17
+ branchData: Parser.ParsedLabel;
18
+ label: string;
19
+ scope?: {
20
+ [key: string]: any;
21
+ };
22
+ onComplete?: (result: any) => void;
23
+ args?: any[];
24
+ }
25
+ export interface DataState {
26
+ [key: string]: any;
27
+ }
28
+ export interface VMState {
29
+ lastChoiceCommand?: Parser.Command;
30
+ stack: MachineStack[];
31
+ script: Parser.ParsedScript;
32
+ data: DataState;
33
+ lastLabel: string;
34
+ currentScope: {
35
+ [key: string]: any;
36
+ };
37
+ }
38
+ export interface VMSave {
39
+ lastLabel: string;
40
+ data: DataState;
41
+ }
42
+ export declare const useVM: import("pinia").StoreDefinition<"vm", VMState, {
43
+ currentStack(state: {
44
+ lastChoiceCommand?: {
45
+ args: (Parser.Primitive | {
46
+ code: string;
47
+ command: {
48
+ commandType: string;
49
+ operator: string;
50
+ args: (Parser.Primitive | any)[];
51
+ options: Parser.DefaultArg;
52
+ staticOptions: {};
53
+ };
54
+ fileName: string;
55
+ line: number;
56
+ })[];
57
+ commandType: string;
58
+ options: Parser.DefaultArg;
59
+ code: string;
60
+ staticOptions: {};
61
+ operator: string;
62
+ line: number;
63
+ fileName: string;
64
+ } | undefined;
65
+ stack: {
66
+ currentIndex: number;
67
+ branchData: {
68
+ branch: {
69
+ code: string;
70
+ command: {
71
+ commandType: string;
72
+ operator: string;
73
+ args: (Parser.Primitive | any)[];
74
+ options: Parser.DefaultArg;
75
+ staticOptions: {};
76
+ };
77
+ fileName: string;
78
+ line: number;
79
+ }[];
80
+ args?: string[] | undefined;
81
+ };
82
+ label: string;
83
+ scope: {
84
+ [key: string]: any;
85
+ };
86
+ onComplete?: ((result: any) => void) | undefined;
87
+ returnValue: any;
88
+ }[];
89
+ script: Parser.ParsedScript;
90
+ data: DataState;
91
+ lastLabel: string;
92
+ currentScope: {
93
+ [key: string]: any;
94
+ };
95
+ } & import("pinia").PiniaCustomStateProperties<VMState>): {
96
+ currentIndex: number;
97
+ branchData: {
98
+ branch: {
99
+ code: string;
100
+ command: {
101
+ commandType: string;
102
+ operator: string;
103
+ args: (Parser.Primitive | any)[];
104
+ options: Parser.DefaultArg;
105
+ staticOptions: {};
106
+ };
107
+ fileName: string;
108
+ line: number;
109
+ }[];
110
+ args?: string[] | undefined;
111
+ };
112
+ label: string;
113
+ scope: {
114
+ [key: string]: any;
115
+ };
116
+ onComplete?: ((result: any) => void) | undefined;
117
+ returnValue: any;
118
+ };
119
+ currentLine(): Parser.ParsedExpression<Parser.DefaultArg, {}> | undefined;
120
+ }, {
121
+ generateSaveData(): VMSave;
122
+ loadSaveData(data: VMSave): void;
123
+ resetScope(): void;
124
+ setReturnValue(value: any): void;
125
+ removeFromScope(vars: string[]): void;
126
+ addScopedVariable(key: string, value: any): void;
127
+ extendScope(scope: {
128
+ [key: string]: any;
129
+ }): void;
130
+ loadScripts(scriptPaths: string[]): Promise<void>;
131
+ start(): void;
132
+ setLastLabel(label: string): void;
133
+ reset(): void;
134
+ setScript(script: Parser.ParsedScript): void;
135
+ overrideData(data: DataState): void;
136
+ setStack(stack: SetStackOptions): void;
137
+ stackOptionsToStack(stack: SetStackOptions): MachineStack;
138
+ setData(path: string, value: any): void;
139
+ addInstruction(path: string, value: any): void;
140
+ addStack(newStackOptions: AddStackOptions): Promise<void>;
141
+ nextLine(): Promise<any>;
142
+ previousStack(): Promise<any>;
143
+ finishGame(): void;
144
+ runLine(): Promise<void>;
145
+ runLabelFunction(label: string, ...args: any[]): Promise<unknown>;
146
+ runCustomStack(stack: AddStackOptions): void;
147
+ runLabel(label: string, ...args: any[]): void;
148
+ }>;
@@ -0,0 +1,4 @@
1
+ export interface GameConfig {
2
+ charactersPath: string;
3
+ configPath: string;
4
+ }