@novely/core 0.36.0 → 0.37.0-beta.0

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.
package/dist/index.d.ts CHANGED
@@ -200,6 +200,7 @@ type Renderer = {
200
200
  };
201
201
  type RendererInit<$Language extends Lang, $Characters extends Record<string, Character<$Language>>> = {
202
202
  characters: $Characters;
203
+ characterAssetSizes: CharacterAssetSizes<$Characters>;
203
204
  set: (save: Save<State>) => Promise<void>;
204
205
  restore: (save?: Save<State>) => Promise<void>;
205
206
  save: (type: Save<State>[2][1]) => void;
@@ -233,7 +234,6 @@ type RendererInit<$Language extends Lang, $Characters extends Record<string, Cha
233
234
  declare const getLanguage: (languages: string[]) => string;
234
235
 
235
236
  type Thenable<T> = T | Promise<T>;
236
- type NoInfer<T> = [T][T extends any ? 0 : never];
237
237
  type PathItem = [null, number | string] | ['jump', string] | ['choice', number] | ['choice:exit'] | ['condition', string] | ['condition:exit'] | ['exit'] | ['block', string] | ['block:exit'];
238
238
  type Path = PathItem[];
239
239
  type State = Record<string, any>;
@@ -302,6 +302,12 @@ type TranslationDescription = {
302
302
  type DefaultEmotions<$Characters extends Record<string, Character<Lang>>> = {
303
303
  [Character in keyof $Characters]?: (keyof $Characters[Character]['emotions'] & string);
304
304
  };
305
+ type CharacterAssetSizes<$Characters extends Record<string, Character<Lang>>> = {
306
+ [Character in keyof $Characters]?: {
307
+ width: number;
308
+ height: number;
309
+ };
310
+ };
305
311
  interface NovelyInit<$Language extends Lang, $Characters extends Record<string, Character<NoInfer<$Language>>>, $State extends State, $Data extends Data, $Actions extends Record<string, (...args: any[]) => ValidAction>> {
306
312
  /**
307
313
  * An object containing the characters in the game.
@@ -350,6 +356,32 @@ interface NovelyInit<$Language extends Lang, $Characters extends Record<string,
350
356
  * ```
351
357
  */
352
358
  defaultEmotions?: DefaultEmotions<NoInfer<$Characters>>;
359
+ /**
360
+ * Character asset sizes. We need width-height pair to render character, but we get it only after the assets are loaded. However, using that option we can use width-height before load.
361
+ * @example
362
+ * ```
363
+ * import peter_the_great from './assets/peter_the_great.png?width=800&height=1200';
364
+ *
365
+ * const engine = novely({
366
+ * characters: {
367
+ * Peter: {
368
+ * name: 'Peter',
369
+ * color: '#c04931',
370
+ * emotions: {
371
+ * normal: peter_the_great
372
+ * }
373
+ * }
374
+ * },
375
+ * characterAssetSizes: {
376
+ * Peter: {
377
+ * width: 800,
378
+ * height: 1200
379
+ * }
380
+ * }
381
+ * })
382
+ * ```
383
+ */
384
+ characterAssetSizes?: CharacterAssetSizes<NoInfer<$Characters>>;
353
385
  /**
354
386
  * An object that provides access to the game's storage system.
355
387
  * @default localStorage // at key `novely-game-storage`
@@ -735,7 +767,7 @@ type ChoiceParams<T> = T extends TypeEssentials<infer $Lang, infer $State, any,
735
767
  type FunctionParams<T> = T extends TypeEssentials<infer $Lang, infer $State, any, any> ? FunctionActionProps<$Lang, $State> : never;
736
768
  type InputHandler<T> = T extends TypeEssentials<infer $Lang, infer $State, any, any> ? ActionInputOnInputMeta<$Lang, $State> : never;
737
769
 
738
- declare const novely: <$Language extends string, $Characters extends Record<string, Character<$Language>>, $State extends State, $Data extends Data, $Actions extends Record<string, (...args: any[]) => ValidAction>>({ characters, defaultEmotions, storage, storageDelay, renderer: createRenderer, initialScreen, translation, state: defaultState, data: defaultData, autosaves, migrations, throttleTimeout, getLanguage, overrideLanguage, askBeforeExit, preloadAssets, parallelAssetsDownloadLimit, fetch: request, saveOnUnload, startKey }: NovelyInit<$Language, $Characters, $State, $Data, $Actions>) => {
770
+ declare const novely: <$Language extends string, $Characters extends Record<string, Character<$Language>>, $State extends State, $Data extends Data, $Actions extends Record<string, (...args: any[]) => ValidAction>>({ characters, characterAssetSizes, defaultEmotions, storage, storageDelay, renderer: createRenderer, initialScreen, translation, state: defaultState, data: defaultData, autosaves, migrations, throttleTimeout, getLanguage, overrideLanguage, askBeforeExit, preloadAssets, parallelAssetsDownloadLimit, fetch: request, saveOnUnload, startKey }: NovelyInit<$Language, $Characters, $State, $Data, $Actions>) => {
739
771
  /**
740
772
  * Function to set game script
741
773
  *
@@ -1128,6 +1128,7 @@ var Novely = (() => {
1128
1128
  var import_p_limit = __toESM(require_p_limit(), 1);
1129
1129
  var novely = ({
1130
1130
  characters,
1131
+ characterAssetSizes = {},
1131
1132
  defaultEmotions = {},
1132
1133
  storage = localStorageStorage({ key: "novely-game-storage" }),
1133
1134
  storageDelay = Promise.resolve(),
@@ -1564,6 +1565,7 @@ var Novely = (() => {
1564
1565
  const renderer = createRenderer({
1565
1566
  mainContextKey: MAIN_CONTEXT_KEY,
1566
1567
  characters,
1568
+ characterAssetSizes,
1567
1569
  set,
1568
1570
  restore,
1569
1571
  save,