narrat 2.2.14-test → 2.2.16

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.
@@ -1,5 +1,13 @@
1
+ import { GameConfig } from '../types/app-types';
1
2
  import { GameSave } from '../types/game-save';
2
- import { AppOptions, Config } from '../config';
3
+ import { ChosenSlot } from '../utils/save-helpers';
4
+ import { AppOptions } from '../config';
5
+ import { TypedEmitter } from '../utils/typed-emitter';
6
+ export interface MainEvents {
7
+ gameLoaded: () => void;
8
+ }
9
+ export declare class MainStoreListener extends TypedEmitter<MainEvents> {
10
+ }
3
11
  export interface ErrorState {
4
12
  text: string;
5
13
  }
@@ -11,11 +19,30 @@ interface MainState {
11
19
  start: number;
12
20
  previousPlaytime: number;
13
21
  };
14
- saveSlot: number;
22
+ saveSlot: string;
15
23
  options: AppOptions;
16
- flowState: 'menu' | 'playing';
24
+ flowState: 'engine-splash' | 'game-splash' | 'menu' | 'playing';
17
25
  modal: string | false;
18
26
  paused: boolean;
27
+ appConfig: GameConfig;
28
+ loading: {
29
+ step: string;
30
+ percentage: number;
31
+ loaded: boolean;
32
+ };
33
+ alerts: {
34
+ title: string;
35
+ text: string;
36
+ resolver: () => void;
37
+ id: string;
38
+ }[];
39
+ saving: {
40
+ withPrompt?: boolean;
41
+ name?: string;
42
+ resolver: () => void;
43
+ } | null;
44
+ saveData?: GameSave;
45
+ listener: MainStoreListener;
19
46
  }
20
47
  export interface MainSaveData {
21
48
  playTime: number;
@@ -31,22 +58,128 @@ export declare const useMain: import("pinia").StoreDefinition<"main", MainState,
31
58
  start: number;
32
59
  previousPlaytime: number;
33
60
  };
34
- saveSlot: number;
61
+ saveSlot: string;
35
62
  options: {
36
63
  baseAssetsPath?: string | undefined;
37
64
  logging: boolean;
38
65
  debug: boolean;
39
66
  };
40
- flowState: 'menu' | 'playing';
67
+ flowState: 'engine-splash' | 'game-splash' | 'menu' | 'playing';
41
68
  modal: string | false;
42
69
  paused: boolean;
70
+ appConfig: {
71
+ baseAssetsPath?: string | undefined;
72
+ charactersPath: string;
73
+ configPath: string;
74
+ };
75
+ loading: {
76
+ step: string;
77
+ percentage: number;
78
+ loaded: boolean;
79
+ };
80
+ alerts: {
81
+ title: string;
82
+ text: string;
83
+ resolver: () => void;
84
+ id: string;
85
+ }[];
86
+ saving: {
87
+ withPrompt?: boolean | undefined;
88
+ name?: string | undefined;
89
+ resolver: () => void;
90
+ } | null;
91
+ saveData?: {
92
+ version: string;
93
+ skills: {
94
+ skillChecks: {
95
+ [key: string]: import("./skills").SkillCheckState;
96
+ };
97
+ skills: import("./skills").SkillsState;
98
+ };
99
+ screen: {
100
+ layers: string[];
101
+ buttons: import("./screens-store").ButtonsState;
102
+ };
103
+ main: {
104
+ playTime: number;
105
+ };
106
+ dialog: {
107
+ dialog: {
108
+ speaker: string;
109
+ text: string;
110
+ pose?: string | undefined;
111
+ cssClass?: string | undefined;
112
+ choices?: {
113
+ choice: string;
114
+ originalIndex: number;
115
+ allowed: boolean;
116
+ }[] | undefined;
117
+ textField?: boolean | undefined;
118
+ interactive: boolean;
119
+ id: string;
120
+ }[];
121
+ };
122
+ vm: {
123
+ lastLabel: string;
124
+ data: import("./vm-store").DataState;
125
+ };
126
+ audio: {
127
+ modes: {
128
+ [key: string]: import("./audio-store").AudioModeState;
129
+ };
130
+ masterVolume: number;
131
+ };
132
+ hud: {
133
+ hudStats: import("./hud-stats-store").HudStatsState;
134
+ };
135
+ inventory: {
136
+ items: {
137
+ [key: string]: import("./inventory-store").ItemState;
138
+ };
139
+ interactionTags: {
140
+ [key: string]: {
141
+ blockedInteraction: boolean;
142
+ };
143
+ };
144
+ };
145
+ quests: {
146
+ quests: {
147
+ [key: string]: import("./quest-log").QuestState;
148
+ };
149
+ };
150
+ metadata: {
151
+ saveDate: string;
152
+ name: string;
153
+ slotType: "manual" | "auto";
154
+ id: string;
155
+ createdCounter: number;
156
+ };
157
+ } | undefined;
158
+ listener: {
159
+ listeners: {
160
+ gameLoaded: Set<() => void>;
161
+ };
162
+ on: <Event_1 extends "gameLoaded">(event: Event_1, listener: MainEvents[Event_1]) => MainEvents[Event_1];
163
+ off: <Event_2 extends "gameLoaded">(event: Event_2, listener: MainEvents[Event_2]) => MainEvents[Event_2];
164
+ once: <Event_3 extends "gameLoaded">(event: Event_3, listener: MainEvents[Event_3]) => MainEvents[Event_3];
165
+ emit: <Event_4 extends "gameLoaded">(event: Event_4, ...args: any[]) => void;
166
+ clear: () => void;
167
+ };
43
168
  } & import("pinia").PiniaCustomStateProperties<MainState>): boolean;
44
169
  }, {
45
- setup(scriptPaths: string[], config: Config): Promise<void>;
170
+ setup(): Promise<void>;
171
+ engineLoading(): Promise<void>;
172
+ alert(title: string, text: string): Promise<void>;
173
+ closeAlert(id: string): void;
46
174
  startMachine(): void;
47
- setSaveSlot(slot: number): void;
48
- startGame(saveSlot: number): Promise<void>;
49
- loadGame(save: GameSave, saveSlot: number): Promise<void>;
175
+ setSaveSlot(slot: string): void;
176
+ startGame(saveSlot: string): Promise<void>;
177
+ loadGame(save: GameSave, saveSlot: string): Promise<void>;
178
+ manualSave({ saveName, withPrompt, }: {
179
+ saveName?: string | undefined;
180
+ withPrompt?: boolean | undefined;
181
+ }): Promise<void>;
182
+ finishManualSave(slotData: ChosenSlot | null, yes: boolean): void;
50
183
  playerAnswered(choice: number | string): void;
51
184
  menuReturn(): void;
52
185
  createError(text: string): void;
@@ -63,7 +196,10 @@ export declare const useMain: import("pinia").StoreDefinition<"main", MainState,
63
196
  resetAllStores(): void;
64
197
  generateSaveData(): MainSaveData;
65
198
  loadSaveData(data: MainSaveData): void;
66
- saveGame(): void;
199
+ autoSaveGame({ slotId, name }: {
200
+ slotId?: string | undefined;
201
+ name?: string | undefined;
202
+ }): void;
67
203
  setLoadedData(save: GameSave): void;
68
204
  getAllStates(): {
69
205
  main: any & {
@@ -76,15 +212,113 @@ export declare const useMain: import("pinia").StoreDefinition<"main", MainState,
76
212
  start: number;
77
213
  previousPlaytime: number;
78
214
  };
79
- saveSlot: number;
215
+ saveSlot: string;
80
216
  options: {
81
217
  baseAssetsPath?: string | undefined;
82
218
  logging: boolean;
83
219
  debug: boolean;
84
220
  };
85
- flowState: 'menu' | 'playing';
221
+ flowState: 'engine-splash' | 'game-splash' | 'menu' | 'playing';
86
222
  modal: string | false;
87
223
  paused: boolean;
224
+ appConfig: {
225
+ baseAssetsPath?: string | undefined;
226
+ charactersPath: string;
227
+ configPath: string;
228
+ };
229
+ loading: {
230
+ step: string;
231
+ percentage: number;
232
+ loaded: boolean;
233
+ };
234
+ alerts: {
235
+ title: string;
236
+ text: string;
237
+ resolver: () => void;
238
+ id: string;
239
+ }[];
240
+ saving: {
241
+ withPrompt?: boolean | undefined;
242
+ name?: string | undefined;
243
+ resolver: () => void;
244
+ } | null;
245
+ saveData?: {
246
+ version: string;
247
+ skills: {
248
+ skillChecks: {
249
+ [key: string]: import("./skills").SkillCheckState;
250
+ };
251
+ skills: import("./skills").SkillsState;
252
+ };
253
+ screen: {
254
+ layers: string[];
255
+ buttons: import("./screens-store").ButtonsState;
256
+ };
257
+ main: {
258
+ playTime: number;
259
+ };
260
+ dialog: {
261
+ dialog: {
262
+ speaker: string;
263
+ text: string;
264
+ pose?: string | undefined;
265
+ cssClass?: string | undefined;
266
+ choices?: {
267
+ choice: string;
268
+ originalIndex: number;
269
+ allowed: boolean;
270
+ }[] | undefined;
271
+ textField?: boolean | undefined;
272
+ interactive: boolean;
273
+ id: string;
274
+ }[];
275
+ };
276
+ vm: {
277
+ lastLabel: string;
278
+ data: import("./vm-store").DataState;
279
+ };
280
+ audio: {
281
+ modes: {
282
+ [key: string]: import("./audio-store").AudioModeState;
283
+ };
284
+ masterVolume: number;
285
+ };
286
+ hud: {
287
+ hudStats: import("./hud-stats-store").HudStatsState;
288
+ };
289
+ inventory: {
290
+ items: {
291
+ [key: string]: import("./inventory-store").ItemState;
292
+ };
293
+ interactionTags: {
294
+ [key: string]: {
295
+ blockedInteraction: boolean;
296
+ };
297
+ };
298
+ };
299
+ quests: {
300
+ quests: {
301
+ [key: string]: import("./quest-log").QuestState;
302
+ };
303
+ };
304
+ metadata: {
305
+ saveDate: string;
306
+ name: string;
307
+ slotType: "manual" | "auto";
308
+ id: string;
309
+ createdCounter: number;
310
+ };
311
+ } | undefined;
312
+ listener: {
313
+ listeners: {
314
+ gameLoaded: Set<() => void>;
315
+ };
316
+ on: <Event_1 extends "gameLoaded">(event: Event_1, listener: MainEvents[Event_1]) => MainEvents[Event_1];
317
+ off: <Event_2 extends "gameLoaded">(event: Event_2, listener: MainEvents[Event_2]) => MainEvents[Event_2];
318
+ once: <Event_3 extends "gameLoaded">(event: Event_3, listener: MainEvents[Event_3]) => MainEvents[Event_3];
319
+ emit: <Event_4 extends "gameLoaded">(event: Event_4, ...args: any[]) => void;
320
+ clear: () => void;
321
+ };
88
322
  } & import("pinia")._StoreWithState<"main", MainState, {
89
323
  isInGame(state: {
90
324
  ready: boolean;
@@ -96,15 +330,113 @@ export declare const useMain: import("pinia").StoreDefinition<"main", MainState,
96
330
  start: number;
97
331
  previousPlaytime: number;
98
332
  };
99
- saveSlot: number;
333
+ saveSlot: string;
100
334
  options: {
101
335
  baseAssetsPath?: string | undefined;
102
336
  logging: boolean;
103
337
  debug: boolean;
104
338
  };
105
- flowState: 'menu' | 'playing';
339
+ flowState: 'engine-splash' | 'game-splash' | 'menu' | 'playing';
106
340
  modal: string | false;
107
341
  paused: boolean;
342
+ appConfig: {
343
+ baseAssetsPath?: string | undefined;
344
+ charactersPath: string;
345
+ configPath: string;
346
+ };
347
+ loading: {
348
+ step: string;
349
+ percentage: number;
350
+ loaded: boolean;
351
+ };
352
+ alerts: {
353
+ title: string;
354
+ text: string;
355
+ resolver: () => void;
356
+ id: string;
357
+ }[];
358
+ saving: {
359
+ withPrompt?: boolean | undefined;
360
+ name?: string | undefined;
361
+ resolver: () => void;
362
+ } | null;
363
+ saveData?: {
364
+ version: string;
365
+ skills: {
366
+ skillChecks: {
367
+ [key: string]: import("./skills").SkillCheckState;
368
+ };
369
+ skills: import("./skills").SkillsState;
370
+ };
371
+ screen: {
372
+ layers: string[];
373
+ buttons: import("./screens-store").ButtonsState;
374
+ };
375
+ main: {
376
+ playTime: number;
377
+ };
378
+ dialog: {
379
+ dialog: {
380
+ speaker: string;
381
+ text: string;
382
+ pose?: string | undefined;
383
+ cssClass?: string | undefined;
384
+ choices?: {
385
+ choice: string;
386
+ originalIndex: number;
387
+ allowed: boolean;
388
+ }[] | undefined;
389
+ textField?: boolean | undefined;
390
+ interactive: boolean;
391
+ id: string;
392
+ }[];
393
+ };
394
+ vm: {
395
+ lastLabel: string;
396
+ data: import("./vm-store").DataState;
397
+ };
398
+ audio: {
399
+ modes: {
400
+ [key: string]: import("./audio-store").AudioModeState;
401
+ };
402
+ masterVolume: number;
403
+ };
404
+ hud: {
405
+ hudStats: import("./hud-stats-store").HudStatsState;
406
+ };
407
+ inventory: {
408
+ items: {
409
+ [key: string]: import("./inventory-store").ItemState;
410
+ };
411
+ interactionTags: {
412
+ [key: string]: {
413
+ blockedInteraction: boolean;
414
+ };
415
+ };
416
+ };
417
+ quests: {
418
+ quests: {
419
+ [key: string]: import("./quest-log").QuestState;
420
+ };
421
+ };
422
+ metadata: {
423
+ saveDate: string;
424
+ name: string;
425
+ slotType: "manual" | "auto";
426
+ id: string;
427
+ createdCounter: number;
428
+ };
429
+ } | undefined;
430
+ listener: {
431
+ listeners: {
432
+ gameLoaded: Set<() => void>;
433
+ };
434
+ on: <Event_1 extends "gameLoaded">(event: Event_1, listener: MainEvents[Event_1]) => MainEvents[Event_1];
435
+ off: <Event_2 extends "gameLoaded">(event: Event_2, listener: MainEvents[Event_2]) => MainEvents[Event_2];
436
+ once: <Event_3 extends "gameLoaded">(event: Event_3, listener: MainEvents[Event_3]) => MainEvents[Event_3];
437
+ emit: <Event_4 extends "gameLoaded">(event: Event_4, ...args: any[]) => void;
438
+ clear: () => void;
439
+ };
108
440
  } & import("pinia").PiniaCustomStateProperties<MainState>): boolean;
109
441
  }, any> & import("pinia")._StoreWithGetters<{
110
442
  isInGame(state: {
@@ -117,15 +449,113 @@ export declare const useMain: import("pinia").StoreDefinition<"main", MainState,
117
449
  start: number;
118
450
  previousPlaytime: number;
119
451
  };
120
- saveSlot: number;
452
+ saveSlot: string;
121
453
  options: {
122
454
  baseAssetsPath?: string | undefined;
123
455
  logging: boolean;
124
456
  debug: boolean;
125
457
  };
126
- flowState: 'menu' | 'playing';
458
+ flowState: 'engine-splash' | 'game-splash' | 'menu' | 'playing';
127
459
  modal: string | false;
128
460
  paused: boolean;
461
+ appConfig: {
462
+ baseAssetsPath?: string | undefined;
463
+ charactersPath: string;
464
+ configPath: string;
465
+ };
466
+ loading: {
467
+ step: string;
468
+ percentage: number;
469
+ loaded: boolean;
470
+ };
471
+ alerts: {
472
+ title: string;
473
+ text: string;
474
+ resolver: () => void;
475
+ id: string;
476
+ }[];
477
+ saving: {
478
+ withPrompt?: boolean | undefined;
479
+ name?: string | undefined;
480
+ resolver: () => void;
481
+ } | null;
482
+ saveData?: {
483
+ version: string;
484
+ skills: {
485
+ skillChecks: {
486
+ [key: string]: import("./skills").SkillCheckState;
487
+ };
488
+ skills: import("./skills").SkillsState;
489
+ };
490
+ screen: {
491
+ layers: string[];
492
+ buttons: import("./screens-store").ButtonsState;
493
+ };
494
+ main: {
495
+ playTime: number;
496
+ };
497
+ dialog: {
498
+ dialog: {
499
+ speaker: string;
500
+ text: string;
501
+ pose?: string | undefined;
502
+ cssClass?: string | undefined;
503
+ choices?: {
504
+ choice: string;
505
+ originalIndex: number;
506
+ allowed: boolean;
507
+ }[] | undefined;
508
+ textField?: boolean | undefined;
509
+ interactive: boolean;
510
+ id: string;
511
+ }[];
512
+ };
513
+ vm: {
514
+ lastLabel: string;
515
+ data: import("./vm-store").DataState;
516
+ };
517
+ audio: {
518
+ modes: {
519
+ [key: string]: import("./audio-store").AudioModeState;
520
+ };
521
+ masterVolume: number;
522
+ };
523
+ hud: {
524
+ hudStats: import("./hud-stats-store").HudStatsState;
525
+ };
526
+ inventory: {
527
+ items: {
528
+ [key: string]: import("./inventory-store").ItemState;
529
+ };
530
+ interactionTags: {
531
+ [key: string]: {
532
+ blockedInteraction: boolean;
533
+ };
534
+ };
535
+ };
536
+ quests: {
537
+ quests: {
538
+ [key: string]: import("./quest-log").QuestState;
539
+ };
540
+ };
541
+ metadata: {
542
+ saveDate: string;
543
+ name: string;
544
+ slotType: "manual" | "auto";
545
+ id: string;
546
+ createdCounter: number;
547
+ };
548
+ } | undefined;
549
+ listener: {
550
+ listeners: {
551
+ gameLoaded: Set<() => void>;
552
+ };
553
+ on: <Event_1 extends "gameLoaded">(event: Event_1, listener: MainEvents[Event_1]) => MainEvents[Event_1];
554
+ off: <Event_2 extends "gameLoaded">(event: Event_2, listener: MainEvents[Event_2]) => MainEvents[Event_2];
555
+ once: <Event_3 extends "gameLoaded">(event: Event_3, listener: MainEvents[Event_3]) => MainEvents[Event_3];
556
+ emit: <Event_4 extends "gameLoaded">(event: Event_4, ...args: any[]) => void;
557
+ clear: () => void;
558
+ };
129
559
  } & import("pinia").PiniaCustomStateProperties<MainState>): boolean;
130
560
  }> & import("pinia").PiniaCustomProperties<string, import("pinia").StateTree, import("pinia")._GettersTree<import("pinia").StateTree>, import("pinia")._ActionsTree>;
131
561
  screens: import("pinia").Store<"screens", import("./screens-store").ScreenState, {}, {
@@ -133,7 +563,7 @@ export declare const useMain: import("pinia").StoreDefinition<"main", MainState,
133
563
  finishTransition(layer: number): void;
134
564
  transitionScreen(screen: string, transition: import("../utils/transition").AddTransition, layer?: number | undefined): Promise<void>;
135
565
  emptyLayer(layer: number): void;
136
- setButtons(config: Config): void;
566
+ setButtons(config: import("../config").Config): void;
137
567
  changeButton(button: string, newValue: import("./screens-store").ButtonStateValue): void;
138
568
  generateSaveData(): import("./screens-store").ScreenSave;
139
569
  loadSaveData(data: import("./screens-store").ScreenSave): void;
@@ -247,6 +677,7 @@ export declare const useMain: import("pinia").StoreDefinition<"main", MainState,
247
677
  } | undefined;
248
678
  args?: any[] | undefined;
249
679
  } | undefined;
680
+ hasJumped: boolean;
250
681
  } & import("pinia").PiniaCustomStateProperties<import("./vm-store").VMState>): import("./vm-store").MachineFrame | undefined;
251
682
  scope(): {
252
683
  [key: string]: any;
@@ -307,7 +738,7 @@ export declare const useMain: import("pinia").StoreDefinition<"main", MainState,
307
738
  runLineOnly(): Promise<any>;
308
739
  runLabelFunction(label: string, ...args: any[]): Promise<any>;
309
740
  runCustomFrame(stack: import("./vm-store").AddFrameOptions): void;
310
- jumpToLabel(label: string, ...args: any[]): void;
741
+ jumpToLabel(label: string, ...args: any[]): Promise<void>;
311
742
  runThenGoBackToPreviousDialog(label: string, ...args: any[]): Promise<any>;
312
743
  }>;
313
744
  hud: import("pinia").Store<"hud", import("./hud-stats-store").HudState, {}, {
@@ -33,6 +33,7 @@ export interface VMState {
33
33
  data: DataState;
34
34
  lastLabel: string;
35
35
  jumpTarget?: SetFrameOptions;
36
+ hasJumped: boolean;
36
37
  }
37
38
  export interface VMSave {
38
39
  lastLabel: string;
@@ -113,6 +114,7 @@ export declare const useVM: import("pinia").StoreDefinition<"vm", VMState, {
113
114
  } | undefined;
114
115
  args?: any[] | undefined;
115
116
  } | undefined;
117
+ hasJumped: boolean;
116
118
  } & import("pinia").PiniaCustomStateProperties<VMState>): MachineFrame | undefined;
117
119
  scope(): {
118
120
  [key: string]: any;
@@ -173,6 +175,6 @@ export declare const useVM: import("pinia").StoreDefinition<"vm", VMState, {
173
175
  runLineOnly(): Promise<any>;
174
176
  runLabelFunction(label: string, ...args: any[]): Promise<any>;
175
177
  runCustomFrame(stack: AddFrameOptions): void;
176
- jumpToLabel(label: string, ...args: any[]): void;
178
+ jumpToLabel(label: string, ...args: any[]): Promise<void>;
177
179
  runThenGoBackToPreviousDialog(label: string, ...args: any[]): Promise<any>;
178
180
  }>;