@drincs/pixi-vn 0.6.7 → 0.6.8
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/classes/CharacterBaseModel.js.map +1 -1
- package/dist/classes/CharacterBaseModel.mjs.map +1 -1
- package/dist/classes/ChoiceMenuOption.js.map +1 -1
- package/dist/classes/ChoiceMenuOption.mjs.map +1 -1
- package/dist/classes/LabelJson.d.mts +0 -4
- package/dist/classes/LabelJson.d.ts +0 -4
- package/dist/classes/LabelJson.js +4 -1
- package/dist/classes/LabelJson.js.map +1 -1
- package/dist/classes/LabelJson.mjs +4 -1
- package/dist/classes/LabelJson.mjs.map +1 -1
- package/dist/classes/StoredClassModel.js.map +1 -1
- package/dist/classes/StoredClassModel.mjs.map +1 -1
- package/dist/classes/index.d.mts +0 -1
- package/dist/classes/index.d.ts +0 -1
- package/dist/classes/index.js +4 -1
- package/dist/classes/index.js.map +1 -1
- package/dist/classes/index.mjs +4 -1
- package/dist/classes/index.mjs.map +1 -1
- package/dist/classes/ticker/FadeAlphaTicker.js.map +1 -1
- package/dist/classes/ticker/FadeAlphaTicker.mjs.map +1 -1
- package/dist/classes/ticker/MoveTicker.js.map +1 -1
- package/dist/classes/ticker/MoveTicker.mjs.map +1 -1
- package/dist/classes/ticker/RotateTicker.js.map +1 -1
- package/dist/classes/ticker/RotateTicker.mjs.map +1 -1
- package/dist/classes/ticker/ZoomTicker.js.map +1 -1
- package/dist/classes/ticker/ZoomTicker.mjs.map +1 -1
- package/dist/classes/ticker/index.js.map +1 -1
- package/dist/classes/ticker/index.mjs.map +1 -1
- package/dist/constants.d.mts +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.js +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/constants.mjs +1 -1
- package/dist/constants.mjs.map +1 -1
- package/dist/decorators/LabelDecorator.d.mts +0 -3
- package/dist/decorators/LabelDecorator.d.ts +0 -3
- package/dist/decorators/LabelDecorator.js.map +1 -1
- package/dist/decorators/LabelDecorator.mjs.map +1 -1
- package/dist/decorators/index.d.mts +0 -3
- package/dist/decorators/index.d.ts +0 -3
- package/dist/decorators/index.js.map +1 -1
- package/dist/decorators/index.mjs.map +1 -1
- package/dist/functions/DialogueUtility.js.map +1 -1
- package/dist/functions/DialogueUtility.mjs.map +1 -1
- package/dist/functions/FlagsUtility.js.map +1 -1
- package/dist/functions/FlagsUtility.mjs.map +1 -1
- package/dist/functions/GameUtility.js.map +1 -1
- package/dist/functions/GameUtility.mjs.map +1 -1
- package/dist/functions/ImageUtility.js.map +1 -1
- package/dist/functions/ImageUtility.mjs.map +1 -1
- package/dist/functions/Importer.d.mts +0 -9
- package/dist/functions/Importer.d.ts +0 -9
- package/dist/functions/Importer.js +4 -1
- package/dist/functions/Importer.js.map +1 -1
- package/dist/functions/Importer.mjs +4 -1
- package/dist/functions/Importer.mjs.map +1 -1
- package/dist/functions/SavesUtility.js +1 -1
- package/dist/functions/SavesUtility.js.map +1 -1
- package/dist/functions/SavesUtility.mjs +1 -1
- package/dist/functions/SavesUtility.mjs.map +1 -1
- package/dist/functions/index.js +5 -2
- package/dist/functions/index.js.map +1 -1
- package/dist/functions/index.mjs +5 -2
- package/dist/functions/index.mjs.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +5 -2
- package/dist/index.mjs.map +1 -1
- package/dist/interface/IHistoryStep.d.mts +1 -1
- package/dist/interface/IHistoryStep.d.ts +1 -1
- package/dist/labels/BaseCanvasElementTestLabel.js.map +1 -1
- package/dist/labels/BaseCanvasElementTestLabel.mjs.map +1 -1
- package/dist/labels/CanvasEventsTestLabel.js.map +1 -1
- package/dist/labels/CanvasEventsTestLabel.mjs.map +1 -1
- package/dist/labels/CustomTickerCanvasElementTestLabel.js.map +1 -1
- package/dist/labels/CustomTickerCanvasElementTestLabel.mjs.map +1 -1
- package/dist/labels/ImagesAnimationsTestLabel.js.map +1 -1
- package/dist/labels/ImagesAnimationsTestLabel.mjs.map +1 -1
- package/dist/labels/MarkdownTest.js.map +1 -1
- package/dist/labels/MarkdownTest.mjs.map +1 -1
- package/dist/labels/StartLabel.js +1 -1
- package/dist/labels/StartLabel.js.map +1 -1
- package/dist/labels/StartLabel.mjs +1 -1
- package/dist/labels/StartLabel.mjs.map +1 -1
- package/dist/labels/StepLabelTest.js.map +1 -1
- package/dist/labels/StepLabelTest.mjs.map +1 -1
- package/dist/labels/TestConstant.js.map +1 -1
- package/dist/labels/TestConstant.mjs.map +1 -1
- package/dist/labels/index.js +1 -1
- package/dist/labels/index.js.map +1 -1
- package/dist/labels/index.mjs +1 -1
- package/dist/labels/index.mjs.map +1 -1
- package/dist/managers/StepManager.d.mts +1 -1
- package/dist/managers/StepManager.d.ts +1 -1
- package/dist/managers/StepManager.js.map +1 -1
- package/dist/managers/StepManager.mjs.map +1 -1
- package/dist/managers/WindowManager.js.map +1 -1
- package/dist/managers/WindowManager.mjs.map +1 -1
- package/dist/managers/index.js.map +1 -1
- package/dist/managers/index.mjs.map +1 -1
- package/dist/types/LabelJsonType.d.mts +0 -9
- package/dist/types/LabelJsonType.d.ts +0 -9
- package/dist/types/StepLabelJsonType.d.mts +9 -13
- package/dist/types/StepLabelJsonType.d.ts +9 -13
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/functions/CanvasUtility.ts","../../src/classes/canvas/CanvasContainer.ts","../../src/functions/TextureUtility.ts","../../src/decorators/EventDecorator.ts","../../src/classes/canvas/CanvasSprite.ts","../../src/classes/canvas/CanvasImage.ts","../../src/classes/canvas/CanvasText.ts","../../src/decorators/CanvasElementDecorator.ts","../../src/decorators/TickerDecorator.ts","../../src/classes/ticker/TickerBase.ts","../../src/classes/ticker/FadeAlphaTicker.ts","../../src/functions/TickerUtility.ts","../../src/classes/ticker/MoveTicker.ts","../../src/classes/ticker/RotateTicker.ts","../../src/classes/ticker/ZoomTicker.ts","../../src/constants.ts","../../src/classes/StoredClassModel.ts","../../src/functions/ExportUtility.ts","../../src/managers/StorageManager.ts","../../src/functions/EasterEgg.ts","../../src/types/ticker/TagToRemoveAfterType.ts","../../src/managers/WindowManager.ts","../../src/classes/CharacterBaseModel.ts"],"names":["Container","Assets","Texture","Sprite","Text","tagToRemoveAfter","Application","sha1","tag","ticker","CharacterBaseModel"],"mappings":"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","file":"CharacterBaseModel.js","sourcesContent":["import { Texture } from \"pixi.js\";\nimport { CanvasBase } from \"../classes/canvas\";\nimport { getCanvasElementInstanceById } from \"../decorators/CanvasElementDecorator\";\nimport { ICanvasBaseMemory, ITextureMemory } from \"../interface/canvas\";\n\n/**\n * Get the memory object of the PixiJS texture\n * @param texture PixiJS Texture object\n * @returns Memory object of the texture\n */\nexport function getTextureMemory(texture: Texture): ITextureMemory {\n let sourceTexture = texture.source\n let textureMemory: ITextureMemory = {\n image: sourceTexture.label\n }\n return textureMemory\n}\n\n/**\n * Export a Canvas element to a memory object\n * @param element Canvas element\n * @returns Memory object of the canvas\n */\nexport function exportCanvasElement<T extends CanvasBase<any>>(\n element: T,\n): ICanvasBaseMemory {\n return element.memory\n}\n\n/**\n * Import a Canvas element from a memory object\n * @param memory Memory object of the canvas\n * @returns Canvas element\n */\nexport function importCanvasElement<T extends CanvasBase<any>>(\n memory: ICanvasBaseMemory,\n): T {\n let element = getCanvasElementInstanceById<T>(memory.pixivnId)\n if (element) {\n element.memory = memory\n }\n else {\n throw new Error(\"[Pixi'VN] The element \" + memory.pixivnId + \" could not be created\")\n }\n\n return element\n}\n","import { Container, ContainerOptions } from \"pixi.js\";\nimport { exportCanvasElement, importCanvasElement } from \"../../functions/CanvasUtility\";\nimport ICanvasContainerMemory from \"../../interface/canvas/ICanvasContainerMemory\";\nimport CanvasBase from \"./CanvasBase\";\n\nexport const CANVAS_CONTAINER_ID = \"CanvasContainer\"\n\n/**\n * This class is a extension of the [PIXI.Container class](https://pixijs.com/8.x/examples/basic/container), it has the same properties and methods, \n * but it has the ability to be saved and loaded by the Pixi'VN library.\n * @example\n * ```typescript\n * const container = new CanvasContainer();\n * GameWindowManager.addCanvasElement(container);\n * const texture = await Assets.load('https://pixijs.com/assets/bunny.png');\n * for (let i = 0; i < 25; i++)\n * {\n * const bunny = new CanvasSprite(texture);\n * bunny.x = (i % 5) * 40;\n * bunny.y = Math.floor(i / 5) * 40;\n * container.addChild(bunny);\n * }\n * ```\n */\nexport default class CanvasContainer extends Container implements CanvasBase<ICanvasContainerMemory> {\n constructor(options?: ContainerOptions) {\n super(options)\n this.pixivnId = this.constructor.prototype.pixivnId || CANVAS_CONTAINER_ID\n }\n pixivnId: string = CANVAS_CONTAINER_ID\n get memory(): ICanvasContainerMemory {\n let memory = getMemoryContainer(this)\n this.children.forEach(child => {\n memory.elements.push(exportCanvasElement(child as CanvasBase<any>))\n })\n return memory\n }\n set memory(value: ICanvasContainerMemory) {\n setMemoryContainer(this, value)\n value.elements.forEach(child => {\n this.addChild(importCanvasElement(child))\n })\n }\n}\n\nexport function getMemoryContainer<T extends Container>(element: T): ICanvasContainerMemory {\n let className = \"CanvasContainer\"\n if (element.hasOwnProperty(\"pixivnId\")) {\n className = (element as any).pixivnId\n }\n return {\n pixivnId: className,\n elements: [],\n\n width: element.width,\n height: element.height,\n\n isRenderGroup: element.isRenderGroup,\n blendMode: element.blendMode,\n tint: element.tint,\n alpha: element.alpha,\n angle: element.angle,\n renderable: element.renderable,\n rotation: element.rotation,\n scale: { x: element.scale.x, y: element.scale.y },\n pivot: { x: element.pivot.x, y: element.pivot.y },\n position: { x: element.position.x, y: element.position.y },\n skew: { x: element.skew.x, y: element.skew.y },\n visible: element.visible,\n x: element.x,\n y: element.y,\n boundsArea: element.boundsArea,\n\n cursor: element.cursor,\n eventMode: element.eventMode,\n interactive: element.interactive,\n interactiveChildren: element.interactiveChildren,\n hitArea: element.hitArea\n }\n}\n\nexport function setMemoryContainer<T extends Container>(element: T | Container, memory: ContainerOptions) {\n memory.isRenderGroup && (element.isRenderGroup = memory.isRenderGroup)\n memory.blendMode && (element.blendMode = memory.blendMode)\n memory.tint && (element.tint = memory.tint)\n memory.alpha && (element.alpha = memory.alpha)\n memory.angle && (element.angle = memory.angle)\n memory.renderable && (element.renderable = memory.renderable)\n memory.rotation && (element.rotation = memory.rotation)\n if (memory.scale) {\n if (typeof memory.scale === \"number\") {\n element.scale.set(memory.scale, memory.scale)\n }\n else {\n element.scale.set(memory.scale.x, memory.scale.y)\n }\n }\n if (memory.pivot) {\n if (typeof memory.pivot === \"number\") {\n element.pivot.set(memory.pivot, memory.pivot)\n }\n else {\n element.pivot.set(memory.pivot.x, memory.pivot.y)\n }\n }\n memory.position && (element.position.set(memory.position.x, memory.position.y))\n memory.skew && (element.skew.set(memory.skew.x, memory.skew.y))\n memory.visible && (element.visible = memory.visible)\n memory.x && (element.x = memory.x)\n memory.y && (element.y = memory.y)\n memory.boundsArea && (element.boundsArea = memory.boundsArea)\n\n memory.cursor && (element.cursor = memory.cursor)\n memory.eventMode && (element.eventMode = memory.eventMode)\n memory.interactive && (element.interactive = memory.interactive)\n memory.interactiveChildren && (element.interactiveChildren = memory.interactiveChildren)\n memory.hitArea && (element.hitArea = memory.hitArea)\n\n // end\n // width and height must be set after the scale\n memory.width && (element.width = memory.width)\n memory.height && (element.height = memory.height)\n}\n","import { Assets, ColorSource, FillGradient, FillPattern, StrokeStyle, TextStyle, TextStyleOptions, Texture } from 'pixi.js';\n\n/**\n * Get a texture from a url.\n * @param imageUrl is the url of the image.\n * @returns the texture of the image, or a text with the error.\n */\nexport async function getTexture(imageUrl: string): Promise<Texture | void> {\n if (Assets.cache.has(imageUrl)) {\n return Assets.get(imageUrl)\n }\n return Assets.load(imageUrl)\n .then((texture) => {\n if (!texture) {\n console.error(\"[Pixi'VN] Texture not found\", imageUrl)\n return\n }\n // if texture not is a Texture, then it is a TextureResource\n if (!(texture instanceof Texture)) {\n console.error(\"[Pixi'VN] File not is a image\", imageUrl)\n return\n }\n\n return texture\n })\n .catch((e) => {\n console.error(\"[Pixi'VN] Error loading image\", e)\n return\n })\n}\n\nfunction getFillGradientFillPattern(prop: ColorSource | FillGradient | FillPattern | StrokeStyle, propName: keyof TextStyle) {\n if (!(prop instanceof Object)) {\n return prop\n }\n // TODO: FillGradient and FillPattern are not supported yet\n console.warn(`[Pixi'VN] CanvasText.style.${propName} is a FillGradient or FillPattern, this is not supported yet.`, prop)\n return undefined\n}\n\nexport function getTextStyle(style: TextStyle): TextStyleOptions {\n return {\n align: style.align,\n breakWords: style.breakWords,\n dropShadow: style.dropShadow,\n fill: getFillGradientFillPattern(style.stroke, \"fill\"),\n fontFamily: style.fontFamily,\n fontSize: style.fontSize,\n fontStyle: style.fontStyle,\n fontVariant: style.fontVariant,\n fontWeight: style.fontWeight,\n leading: style.leading,\n letterSpacing: style.letterSpacing,\n lineHeight: style.lineHeight,\n padding: style.padding,\n stroke: getFillGradientFillPattern(style.stroke, \"stroke\"),\n textBaseline: style.textBaseline,\n trim: style.trim,\n whiteSpace: style.whiteSpace,\n wordWrap: style.wordWrap,\n wordWrapWidth: style.wordWrapWidth,\n }\n}\n","import { CanvasEvent } from \"../classes\"\nimport CanvasBase from \"../classes/canvas/CanvasBase\"\nimport { CanvasEventNamesType } from \"../types\"\nimport { EventIdType } from \"../types/EventIdType\"\n\n/**\n * Canvas Event Register\n */\nexport const registeredEvents: { [name: EventIdType]: typeof CanvasEvent<CanvasEventNamesType> } = {}\n/**\n * Is a decorator that register a event in the game.\n * Is a required decorator for use the event in the game.\n * Thanks to this decoration the game has the possibility of updating the events to the latest modification and saving the game.\n * @param name is th identifier of the event, by default is the name of the class\n * @returns \n */\nexport default function eventDecorator(name?: EventIdType) {\n return function (target: typeof CanvasEvent<any>) {\n if (!name) {\n name = target.name\n }\n if (registeredEvents[name]) {\n console.info(`[Pixi'VN] Event ${name} already exists, it will be overwritten`)\n }\n target.prototype.id = name\n registeredEvents[name] = target\n }\n}\n\n/**\n * Get an event by the id.\n * @param eventId The id of the event.\n * @returns The event type.\n */\nexport function getEventTypeById<T = typeof CanvasEvent<CanvasBase<any>>>(eventId: EventIdType): T | undefined {\n try {\n let eventType = registeredEvents[eventId]\n if (!eventType) {\n console.error(`[Pixi'VN] Event ${eventId} not found`)\n return\n }\n new eventType()\n return eventType as T\n }\n catch (e) {\n console.error(`[Pixi'VN] Error while getting Event ${eventId}`, e)\n return\n }\n}\n\n/**\n * Get an event instance by the id.\n * @param eventId The id of the event.\n * @returns The event instance.\n */\nexport function getEventInstanceById<T = CanvasEvent<CanvasBase<any>>>(eventId: EventIdType): T | undefined {\n try {\n let eventType = registeredEvents[eventId]\n if (!eventType) {\n console.error(`[Pixi'VN] Event ${eventId} not found`)\n return\n }\n let event = new eventType()\n return event as T\n }\n catch (e) {\n console.error(`[Pixi'VN] Error while getting Event ${eventId}`, e)\n return\n }\n}\n","import { ContainerChild, ContainerEvents, EventEmitter, Sprite, SpriteOptions, Texture, TextureSourceLike } from \"pixi.js\";\nimport { getEventInstanceById, getEventTypeById } from \"../../decorators/EventDecorator\";\nimport { getTextureMemory } from \"../../functions/CanvasUtility\";\nimport { getTexture } from \"../../functions/TextureUtility\";\nimport ICanvasBaseMemory from \"../../interface/canvas/ICanvasBaseMemory\";\nimport ICanvasSpriteMemory, { ICanvasSpriteBaseMemory } from \"../../interface/canvas/ICanvasSpriteMemory\";\nimport { CanvasEventNamesType } from \"../../types\";\nimport { EventIdType } from \"../../types/EventIdType\";\nimport CanvasEvent from \"../CanvasEvent\";\nimport CanvasBase from \"./CanvasBase\";\nimport { getMemoryContainer, setMemoryContainer } from \"./CanvasContainer\";\n\nexport const CANVAS_SPRITE_ID = \"CanvasSprite\"\n\n/**\n * This class is a extension of the [PIXI.Sprite class](https://pixijs.com/8.x/examples/sprite/basic), it has the same properties and methods,\n * but it has the ability to be saved and loaded by the Pixi'VN library.\n * @example\n * ```typescript\n * const texture = await Assets.load('https://pixijs.com/assets/bunny.png');\n * const sprite = CanvasSprite.from(texture);\n *\n * sprite.anchor.set(0.5);\n * sprite.x = GameWindowManager.screen.width / 2;\n * sprite.y = GameWindowManager.screen.height / 2;\n *\n * sprite.eventMode = 'static';\n * sprite.cursor = 'pointer';\n * sprite.onEvent('pointerdown', EventTest);\n *\n * GameWindowManager.addCanvasElement(\"bunny\", sprite);\n * ```\n */\nexport default class CanvasSprite<Memory extends SpriteOptions & ICanvasBaseMemory = ICanvasSpriteMemory> extends Sprite implements CanvasBase<Memory | ICanvasSpriteMemory> {\n constructor(options?: SpriteOptions | Texture) {\n super(options)\n this.pixivnId = this.constructor.prototype.pixivnId || CANVAS_SPRITE_ID\n }\n pixivnId: string = CANVAS_SPRITE_ID\n get memory(): Memory | ICanvasSpriteMemory {\n return getMemorySprite(this)\n }\n set memory(value: ICanvasSpriteMemory) {\n setMemorySprite(this, value)\n }\n private _onEvents: { [name: CanvasEventNamesType]: EventIdType } = {}\n get onEvents() {\n return this._onEvents\n }\n /**\n * is same function as on(), but it keeps in memory the children.\n * @param event The event type, e.g., 'click', 'mousedown', 'mouseup', 'pointerdown', etc.\n * @param eventClass The class that extends CanvasEvent.\n * @returns \n * @example\n * ```typescript\n * \\@eventDecorator()\n * export class EventTest extends CanvasEvent<CanvasSprite> {\n * override fn(event: CanvasEventNamesType, sprite: CanvasSprite): void {\n * if (event === 'pointerdown') {\n * sprite.scale.x *= 1.25;\n * sprite.scale.y *= 1.25;\n * }\n * }\n * }\n * ```\n * \n * ```typescript\n * let sprite = addImage(\"alien\", 'https://pixijs.com/assets/eggHead.png')\n * await sprite.load()\n *\n * sprite.eventMode = 'static';\n * sprite.cursor = 'pointer';\n * sprite.onEvent('pointerdown', EventTest);\n *\n * GameWindowManager.addCanvasElement(\"bunny\", sprite);\n * ```\n */\n onEvent<T extends CanvasEventNamesType, T2 extends typeof CanvasEvent<typeof this>>(event: T, eventClass: T2) {\n let id = eventClass.prototype.id\n let instance = getEventInstanceById(id)\n this._onEvents[event] = id\n if (instance) {\n super.on(event, () => {\n (instance as CanvasEvent<CanvasBase<any>>).fn(event, this)\n })\n }\n return this\n }\n /**\n * on() does not keep in memory the event class, use onEvent() instead\n * @deprecated\n * @private\n * @param event \n * @param fn \n * @param context \n */\n override on<T extends keyof ContainerEvents<ContainerChild> | keyof { [K: symbol]: any;[K: {} & string]: any; }>(event: T, fn: (...args: EventEmitter.ArgumentMap<ContainerEvents<ContainerChild> & { [K: symbol]: any;[K: {} & string]: any; }>[Extract<T, keyof ContainerEvents<ContainerChild> | keyof { [K: symbol]: any;[K: {} & string]: any; }>]) => void, context?: any): this {\n return super.on(event, fn, context)\n }\n static override from(source: Texture | TextureSourceLike, skipCache?: boolean): CanvasSprite<any> {\n let sprite = Sprite.from(source, skipCache)\n let mySprite = new CanvasSprite()\n mySprite.texture = sprite.texture\n return mySprite\n }\n}\n\nexport function getMemorySprite<T extends CanvasSprite<any>>(element: T | CanvasSprite<any>): ICanvasSpriteMemory {\n let temp = getMemoryContainer(element)\n return {\n ...temp,\n pixivnId: element.pixivnId,\n textureImage: getTextureMemory((element as any).texture),\n anchor: { x: element.anchor.x, y: element.anchor.y },\n roundPixels: element.roundPixels,\n onEvents: element.onEvents,\n }\n}\n\nexport function setMemorySprite<Memory extends ICanvasSpriteBaseMemory>(element: CanvasSprite<any>, memory: Memory) {\n setMemoryContainer(element, memory)\n getTexture(memory.textureImage.image).then((texture) => {\n if (texture) {\n element.texture = texture\n }\n })\n if (memory.anchor) {\n if (typeof memory.anchor === \"number\") {\n element.anchor.set(memory.anchor, memory.anchor)\n }\n else {\n element.anchor.set(memory.anchor.x, memory.anchor.y)\n }\n }\n memory.roundPixels && (element.roundPixels = memory.roundPixels)\n for (let event in memory.onEvents) {\n let id = memory.onEvents[event]\n let instance = getEventTypeById(id)\n if (instance) {\n element.onEvent(event, instance)\n }\n }\n}\n","import { Sprite, SpriteOptions, Texture, TextureSourceLike } from \"pixi.js\";\nimport { addImage, loadImage, showWithDissolveTransition } from \"../../functions\";\nimport { getTexture } from \"../../functions/TextureUtility\";\nimport ICanvasImageMemory from \"../../interface/canvas/ICanvasImageMemory\";\nimport CanvasSprite, { getMemorySprite, setMemorySprite } from \"./CanvasSprite\";\n\nexport const CANVAS_IMAGE_ID = \"CanvasImage\"\n\n/**\n * This class is a extension of the CanvasSprite class, it has the same properties and methods,\n * but it has some features that make texture management easier.\n * You need to use CanvasImage.load() to show the image in the canvas.\n * This class is used for functions like {@link addImage}, {@link loadImage} and {@link showWithDissolveTransition}.\n * @example\n * ```typescript\n * let alien = new CanvasImage({\n * anchor: { x: 0.5, y: 0.5 },\n * x: 100,\n * y: 100,\n * }, 'https://pixijs.com/assets/eggHead.png')\n * await alien.load()\n * GameWindowManager.addCanvasElement(\"alien\", alien)\n * ```\n * @example\n * ```typescript\n * let alien = addImage(\"alien\", 'https://pixijs.com/assets/eggHead.png')\n * alien.anchor.set(0.5);\n * alien.x = 100\n * alien.y = 100\n * await alien.load()\n * ```\n */\nexport default class CanvasImage extends CanvasSprite<ICanvasImageMemory> {\n pixivnId: string = CANVAS_IMAGE_ID\n constructor(options?: SpriteOptions | Texture | undefined, imageLink?: string) {\n super(options)\n if (imageLink) {\n this.imageLink = imageLink\n }\n }\n override get memory(): ICanvasImageMemory {\n return {\n ...getMemorySprite(this),\n pixivnId: this.pixivnId,\n imageLink: this.imageLink,\n }\n }\n override set memory(memory: ICanvasImageMemory) {\n setMemorySprite(this, memory)\n this.imageLink = memory.imageLink\n }\n imageLink: string = \"\"\n static override from(source: Texture | TextureSourceLike, skipCache?: boolean) {\n let sprite = Sprite.from(source, skipCache)\n let mySprite = new CanvasImage()\n mySprite.texture = sprite.texture\n return mySprite\n }\n /** \n * Load the image from the link and set the texture of the sprite.\n * @param image The link of the image. If it is not set, it will use the imageLink property.\n * @returns A promise that resolves when the image is loaded.\n */\n async load(image?: string) {\n if (!image) {\n image = this.imageLink\n }\n return getTexture(this.imageLink)\n .then((texture) => {\n if (texture) {\n this.texture = texture\n }\n })\n .catch((e) => {\n console.error(\"[Pixi'VN] Error into CanvasImage.load()\", e)\n })\n }\n}\n","import { ContainerChild, ContainerEvents, EventEmitter, Text, TextOptions } from \"pixi.js\";\nimport { getEventInstanceById, getEventTypeById } from \"../../decorators/EventDecorator\";\nimport { getTextStyle } from \"../../functions/TextureUtility\";\nimport ICanvasTextMemory from \"../../interface/canvas/ICanvasTextTextMemory\";\nimport { CanvasEventNamesType } from \"../../types\";\nimport { EventIdType } from \"../../types/EventIdType\";\nimport CanvasEvent from \"../CanvasEvent\";\nimport CanvasBase from \"./CanvasBase\";\nimport { getMemoryContainer, setMemoryContainer } from \"./CanvasContainer\";\n\nexport const CANVAS_TEXT_ID = \"CanvasText\"\n\n/**\n * This class is a extension of the [PIXI.Text class](https://pixijs.com/8.x/examples/text/pixi-text), it has the same properties and methods,\n * but it has the ability to be saved and loaded by the Pixi'VN library.\n * @example\n * ```typescript\n * const text = new CanvasText();\n * text.text = \"Hello World\"\n * GameWindowManager.addCanvasElement(\"text\", text);\n * ```\n */\nexport default class CanvasText extends Text implements CanvasBase<ICanvasTextMemory> {\n constructor(options?: TextOptions) {\n super(options)\n this.pixivnId = this.constructor.prototype.pixivnId || CANVAS_TEXT_ID\n }\n pixivnId: string = CANVAS_TEXT_ID\n get memory(): ICanvasTextMemory {\n return getMemoryText(this)\n }\n set memory(value: ICanvasTextMemory) {\n setMemoryText(this, value)\n }\n private _onEvents: { [name: CanvasEventNamesType]: EventIdType } = {}\n get onEvents() {\n return this._onEvents\n }\n /**\n * is same function as on(), but it keeps in memory the children.\n * @param event The event type, e.g., 'click', 'mousedown', 'mouseup', 'pointerdown', etc.\n * @param eventClass The class that extends CanvasEvent.\n * @returns \n * @example\n * ```typescript\n * \\@eventDecorator()\n * export class EventTest extends CanvasEvent<CanvasText> {\n * override fn(event: CanvasEventNamesType, text: CanvasText): void {\n * if (event === 'pointerdown') {\n * text.scale.x *= 1.25;\n * text.scale.y *= 1.25;\n * }\n * }\n * }\n * ```\n * \n * ```typescript\n * const text = new CanvasText();\n * text.text = \"Hello World\"\n *\n * text.eventMode = 'static';\n * text.cursor = 'pointer';\n * text.onEvent('pointerdown', EventTest);\n *\n * GameWindowManager.addCanvasElement(\"text\", text);\n * ```\n */\n onEvent<T extends CanvasEventNamesType, T2 extends typeof CanvasEvent<typeof this>>(event: T, eventClass: T2) {\n let id = eventClass.prototype.id\n let instance = getEventInstanceById(id)\n this._onEvents[event] = id\n if (instance) {\n super.on(event, () => {\n (instance as CanvasEvent<CanvasBase<any>>).fn(event, this)\n })\n }\n return this\n }\n /**\n * on() does not keep in memory the event class, use onEvent() instead\n * @deprecated\n * @private\n * @param event \n * @param fn \n * @param context \n */\n override on<T extends keyof ContainerEvents<ContainerChild> | keyof { [K: symbol]: any;[K: {} & string]: any; }>(event: T, fn: (...args: EventEmitter.ArgumentMap<ContainerEvents<ContainerChild> & { [K: symbol]: any;[K: {} & string]: any; }>[Extract<T, keyof ContainerEvents<ContainerChild> | keyof { [K: symbol]: any;[K: {} & string]: any; }>]) => void, context?: any): this {\n return super.on(event, fn, context)\n }\n}\n\nexport function getMemoryText<T extends CanvasText>(element: T | CanvasText): ICanvasTextMemory {\n let temp = getMemoryContainer(element)\n return {\n ...temp,\n pixivnId: element.pixivnId,\n anchor: { x: element.anchor.x, y: element.anchor.y },\n text: element.text,\n resolution: element.resolution,\n style: getTextStyle(element.style),\n roundPixels: element.roundPixels,\n onEvents: element.onEvents,\n }\n}\n\nexport function setMemoryText(element: CanvasText, memory: ICanvasTextMemory) {\n setMemoryContainer(element, memory)\n if (memory.anchor) {\n if (typeof memory.anchor === \"number\") {\n element.anchor.set(memory.anchor, memory.anchor)\n }\n else {\n element.anchor.set(memory.anchor.x, memory.anchor.y)\n }\n }\n memory.text && (element.text = memory.text)\n memory.resolution && (element.resolution = memory.resolution)\n memory.style && (element.style = memory.style)\n memory.roundPixels && (element.roundPixels = memory.roundPixels)\n for (let event in memory.onEvents) {\n let id = memory.onEvents[event]\n let instance = getEventTypeById(id)\n if (instance) {\n element.onEvent(event as CanvasEventNamesType, instance)\n }\n }\n}\n","import { CanvasContainer, CanvasImage, CanvasSprite, CanvasText } from \"../classes/canvas\"\nimport CanvasBase from \"../classes/canvas/CanvasBase\"\nimport { CANVAS_CONTAINER_ID } from \"../classes/canvas/CanvasContainer\"\nimport { CANVAS_IMAGE_ID } from \"../classes/canvas/CanvasImage\"\nimport { CANVAS_SPRITE_ID } from \"../classes/canvas/CanvasSprite\"\nimport { CANVAS_TEXT_ID } from \"../classes/canvas/CanvasText\"\nimport { CanvasElementTagType } from \"../types/CanvasElementTagType\"\n\nexport const registeredCanvasElement: { [name: CanvasElementTagType]: typeof CanvasBase<any> } = {}\n/**\n * Is a decorator that register a canvas element in the game.\n * @param name Name of the canvas element, by default it will use the class name. If the name is already registered, it will show a warning\n * @returns \n */\nexport default function canvasElementDecorator(name?: CanvasElementTagType) {\n return function (target: typeof CanvasBase<any>) {\n if (!name) {\n name = target.name\n }\n if (registeredCanvasElement[name]) {\n console.warn(`[Pixi'VN] CanvasElement ${name} already registered`)\n }\n target.prototype.pixivnId = name\n registeredCanvasElement[name] = target\n }\n}\n\nexport function getCanvasElementTypeById<T extends typeof CanvasBase<any>>(canvasId: CanvasElementTagType): T | undefined {\n try {\n let eventType = registeredCanvasElement[canvasId]\n if (!eventType) {\n console.error(`[Pixi'VN] CanvasElement ${canvasId} not found`)\n return\n }\n new eventType()\n return eventType as T\n }\n catch (e) {\n console.error(`[Pixi'VN] Error while getting CanvasElement ${canvasId}`, e)\n return\n }\n}\n\nexport function getCanvasElementInstanceById<T extends CanvasBase<any>>(canvasId: CanvasElementTagType): T | undefined {\n try {\n let eventType = registeredCanvasElement[canvasId]\n if (!eventType) {\n if (canvasId === CANVAS_CONTAINER_ID) {\n eventType = CanvasContainer\n }\n else if (canvasId === CANVAS_IMAGE_ID) {\n eventType = CanvasImage\n }\n else if (canvasId === CANVAS_SPRITE_ID) {\n eventType = CanvasSprite\n }\n else if (canvasId === CANVAS_TEXT_ID) {\n eventType = CanvasText\n }\n }\n\n if (!eventType) {\n console.error(`[Pixi'VN] CanvasElement ${canvasId} not found`)\n return\n }\n let canvasElement = new eventType()\n return canvasElement as T\n }\n catch (e) {\n console.error(`[Pixi'VN] Error while getting CanvasElement ${canvasId}`, e)\n return\n }\n}\n","import { UPDATE_PRIORITY } from \"pixi.js\"\nimport TickerBase, { TickerArgsType } from \"../classes/ticker/TickerBase\"\nimport { TickerIdType } from \"../types/TickerIdType\"\n\n/**\n * A dictionary that contains all tickers registered and avvailable to be used.\n */\nexport const registeredTickers: { [name: TickerIdType]: typeof TickerBase } = {}\n/**\n * Is a decorator that register a ticker in the game.\n * Is a required decorator for use the ticker in the game.\n * Thanks to this decoration the game has the possibility of updating the tickers to the latest modification and saving the game.\n * @param name is th identifier of the label, by default is the name of the class\n * @returns \n */\nexport default function tickerDecorator(name?: TickerIdType) {\n return function (target: typeof TickerBase<any>) {\n if (!name) {\n name = target.name\n }\n if (registeredTickers[name]) {\n console.info(`[Pixi'VN] Ticker ${name} already exists, it will be overwritten`)\n }\n target.prototype.id = name\n registeredTickers[name] = target\n }\n}\n\n/**\n * Get a ticker instance by the id.\n * @param tickerId The id of the ticker.\n * @param args The arguments that you want to pass to the ticker.\n * @param duration The duration of the ticker. If is undefined, the ticker will be called every frame.\n * @param priority The priority of the ticker. If is undefined, the priority will be UPDATE_PRIORITY.NORMAL.\n * @returns The instance of the ticker\n */\nexport function geTickerInstanceById<TArgs extends TickerArgsType>(tickerId: TickerIdType, args: TArgs, duration?: number, priority?: UPDATE_PRIORITY): TickerBase<TArgs> | undefined {\n try {\n let ticker = registeredTickers[tickerId]\n if (!ticker) {\n console.error(`[Pixi'VN] Ticker ${tickerId} not found`)\n return\n }\n return new ticker(args, duration, priority)\n }\n catch (e) {\n console.error(`[Pixi'VN] Error while getting Ticker ${tickerId}`, e)\n return\n }\n}\n","import { Ticker, UPDATE_PRIORITY } from \"pixi.js\"\nimport { tickerDecorator } from \"../../decorators\"\nimport { geTickerInstanceById } from \"../../decorators/TickerDecorator\"\nimport ITicker from \"../../interface/ITicker\"\nimport { GameWindowManager } from \"../../managers\"\nimport { StorageElementType } from \"../../types/StorageElementType\"\nimport { TickerIdType } from \"../../types/TickerIdType\"\n\nexport type TickerArgsType = { [id: string]: StorageElementType } | {\n tagToRemoveAfter?: string[] | string,\n [id: string]: StorageElementType\n}[]\n\n/**\n * A class is used to create a ticker element to add into a Pixi Application.\n * You can use GameWindowManager.addTicker() to add this element into the application.\n * This class should be extended and the fn method should be overridden.\n * You must use the {@link tickerDecorator} to register the ticker in the game.\n * In Ren'Py is a transform.\n * @example\n * ```typescript\n * \\@tickerDecorator() // this is equivalent to tickerDecorator(\"RotateTicker\")\n * export class RotateTicker extends TickerBase<{ speed?: number }> {\n * override fn(\n * t: Ticker, // the ticker that is calling this method\n * args: { // the arguments that you passed when you added the ticker\n * speed?: number,\n * },\n * tags: string[], // the tags of the canvas elements that are connected to this ticker\n * tickerId: string, // the id of the ticker. You can use this to get the ticker from the GameWindowManager.currentTickers\n * ): void {\n * let speed = args.speed === undefined ? 0.1 : args.speed\n * tags.forEach((tag) => {\n * let element = GameWindowManager.getCanvasElement(tag)\n * if (element && element instanceof Container) {\n * if (clockwise)\n * element.rotation += speed * t.deltaTime\n * else\n * element.rotation -= speed * t.deltaTime\n * }\n * })\n * }\n * }\n * ```\n */\nexport default class TickerBase<TArgs extends TickerArgsType> implements ITicker<TArgs> {\n /**\n * @param args The arguments that you want to pass to the ticker.\n * @param duration The duration of the ticker in seconds. If is undefined, the step will end only when the animation is finished (if the animation doesn't have a goal to reach then it won't finish). @default undefined\n * @param priority The priority of the ticker. @default UPDATE_PRIORITY.NORMAL\n */\n constructor(args: TArgs, duration?: number, priority?: UPDATE_PRIORITY) {\n this.args = args\n this.duration = duration\n this.priority = priority\n this.id = this.constructor.prototype.id\n }\n /**\n * Get the id of the ticker. This variable is used in the system to get the ticker by id, {@link geTickerInstanceById}\n */\n id: TickerIdType = 'ticker_id_not_set'\n args: TArgs\n duration?: number\n priority?: UPDATE_PRIORITY\n /**\n * The method that will be called every frame.\n * This method should be overridden and you can use GameWindowManager.addCanvasElement() to get the canvas element of the canvas, and edit them.\n * @param _ticker The ticker that is calling this method\n * @param _args The arguments that you passed when you added the ticker\n * @param _tags The tags of the canvas elements that are connected to this ticker\n * @param _tickerId The id of the ticker. You can use this to get the ticker from the {@link GameWindowManager.currentTickers}\n */\n fn(_ticker: Ticker, _args: TArgs, _tags: string | string[], _tickerId: string): void { throw new Error(\"[Pixi'VN] The method TickerBase.fn() must be overridden\") }\n}\n","import { Container, Sprite, Ticker } from \"pixi.js\";\nimport { tickerDecorator } from \"../../decorators\";\nimport { GameWindowManager } from \"../../managers\";\nimport { FadeAlphaTickerProps } from \"../../types/ticker/FadeAlphaTickerProps\";\nimport TickerBase from \"./TickerBase\";\n\n/**\n * A ticker that fades the alpha of the canvas element of the canvas.\n * This ticker can be used on all canvas elements that extend the {@link Container} class.\n * @example\n * ```typescript\n * let bunny = addImage(\"bunny1\", \"https://pixijs.com/assets/eggHead.png\")\n * await bunny.load()\n * GameWindowManager.addCanvasElement(\"bunny\", bunny);\n * // ...\n * const ticker = new FadeAlphaTicker({\n * duration: 4, // 4 seconds\n * type: \"hide\",\n * }),\n * GameWindowManager.addTicker(\"bunny\", ticker)\n * ```\n */\n@tickerDecorator()\nexport default class FadeAlphaTicker extends TickerBase<FadeAlphaTickerProps> {\n override fn(\n ticker: Ticker,\n args: FadeAlphaTickerProps,\n tags: string[],\n tickerId: string\n ): void {\n let type = args.type === undefined ? \"hide\" : args.type\n let duration = args.duration === undefined ? 1 : args.duration\n let speed = 1 / (duration * 60)\n let limit = args.limit === undefined ? type === \"hide\" ? 0 : 1 : args.limit\n let tagToRemoveAfter = args.tagToRemoveAfter || []\n if (typeof tagToRemoveAfter === \"string\") {\n tagToRemoveAfter = [tagToRemoveAfter]\n }\n if (type === \"hide\" && limit < 0) {\n limit = 0\n }\n if (type === \"show\" && limit > 1) {\n limit = 1\n }\n tags\n .filter((tag) => {\n let element = GameWindowManager.getCanvasElement(tag)\n if (args.startOnlyIfHaveTexture) {\n if (element && element instanceof Sprite && element.texture?.label == \"EMPTY\") {\n return false\n }\n }\n return true\n })\n .forEach((tag) => {\n let element = GameWindowManager.getCanvasElement(tag)\n if (element && element instanceof Container) {\n if (type === \"show\" && element.alpha < limit) {\n element.alpha += speed * ticker.deltaTime\n }\n else if (type === \"hide\" && element.alpha > limit) {\n element.alpha -= speed * ticker.deltaTime\n }\n if (type === \"show\" && element.alpha >= limit) {\n element.alpha = limit\n GameWindowManager.onEndOfTicker(tag, this, tagToRemoveAfter, tickerId)\n }\n else if (type === \"hide\" && element.alpha <= limit) {\n element.alpha = limit\n GameWindowManager.onEndOfTicker(tag, this, tagToRemoveAfter, tickerId)\n }\n }\n })\n }\n}\n","import { ITickerProgrationExponential, ITickerProgrationLinear, TickerProgrationType } from \"../interface/TickerProgrationType\";\n\n/**\n * This function updates the progression of the ticker.\n * For example, if the speed of the ticker is 0.1 and the progression is 0.01, then the speed will be 0.11.\n * @param args The arguments that are passed to the ticker\n * @param propertyName The property name that will be updated \n * @param progression The progression of the ticker\n * @param valueConvert The function that converts the amount and limit of progression\n * @returns \n */\nexport function updateTickerProgression<T extends {}>(args: T, propertyName: keyof T, progression: TickerProgrationType, valueConvert?: (value: number) => number) {\n let limit = valueConvert && progression.limit ? valueConvert(progression.limit) : progression.limit\n if (args[propertyName] === undefined\n || !progression\n || args[propertyName] === limit\n ) {\n return\n }\n if (typeof args[propertyName] === \"number\") {\n if (progression.type === \"linear\") {\n (args as any)[propertyName] = getLinearProgression(args[propertyName], progression)\n }\n else if (progression.type === \"exponential\") {\n (args as any)[propertyName] = getExponentialProgression(args[propertyName], progression)\n }\n }\n // args[propertyName] is { x: number, y: number }\n else if (\n args[propertyName] !== undefined &&\n typeof args[propertyName] === \"object\" &&\n (args as any)[propertyName].haveOwnProperty(\"x\") &&\n (args as any)[propertyName].haveOwnProperty(\"y\") &&\n typeof (args as any)[propertyName].x === \"number\" &&\n typeof (args as any)[propertyName].y === \"number\"\n ) {\n if (progression.type === \"linear\") {\n (args as any)[propertyName].x = getLinearProgression((args as any)[propertyName].x, progression);\n (args as any)[propertyName].y = getLinearProgression((args as any)[propertyName].y, progression)\n }\n else if (progression.type === \"exponential\") {\n (args as any)[propertyName].x = getExponentialProgression((args as any)[propertyName].x, progression);\n (args as any)[propertyName].y = getExponentialProgression((args as any)[propertyName].y, progression)\n }\n }\n}\n\nfunction getLinearProgression(number: number, progression: ITickerProgrationLinear, valueConvert?: (value: number) => number): number {\n let limit = valueConvert && progression.limit ? valueConvert(progression.limit) : progression.limit\n let amt = valueConvert ? valueConvert(progression.amt) : progression.amt\n if (limit !== undefined) {\n if (number > limit && amt > 0) {\n return limit\n }\n else if (number < limit && amt < 0) {\n return limit\n }\n }\n return number + amt\n}\n\nfunction getExponentialProgression(number: number, progression: ITickerProgrationExponential, valueConvert?: (value: number) => number): number {\n let limit = valueConvert && progression.limit ? valueConvert(progression.limit) : progression.limit\n if (limit !== undefined) {\n if (number > limit && progression.percentage > 0) {\n return limit\n }\n else if (number < limit && progression.percentage < 0) {\n return limit\n }\n }\n return number + number * progression.percentage\n}\n","import { Container, Sprite, Ticker } from \"pixi.js\";\nimport { tickerDecorator } from \"../../decorators\";\nimport { updateTickerProgression } from \"../../functions/TickerUtility\";\nimport { GameWindowManager } from \"../../managers\";\nimport { MoveTickerProps } from \"../../types/ticker\";\nimport TickerBase from \"./TickerBase\";\n\n/**\n * A ticker that moves the canvas element of the canvas.\n * This ticker can be used on all canvas elements that extend the {@link Container} class.\n * @example\n * ```typescript\n * let alien = addImage(\"alien\", 'https://pixijs.com/assets/eggHead.png')\n * GameWindowManager.addCanvasElement(\"alien\", alien);\n * const ticker = new MoveTicker({\n * speed: 0.1,\n * destination: { x: 100, y: 100 },\n * }),\n * ```\n */\n@tickerDecorator()\nexport default class MoveTicker extends TickerBase<MoveTickerProps> {\n override fn(\n ticker: Ticker,\n args: MoveTickerProps,\n tags: string[],\n tickerId: string\n ): void {\n let xSpeed = 1\n let ySpeed = 1\n if (args.speed) {\n if (typeof args.speed === \"number\") {\n xSpeed = this.speedConvert(args.speed)\n ySpeed = this.speedConvert(args.speed)\n }\n else {\n xSpeed = this.speedConvert(args.speed.x)\n ySpeed = this.speedConvert(args.speed.y)\n }\n }\n let destination = args.destination\n let tagToRemoveAfter = args.tagToRemoveAfter || []\n if (typeof tagToRemoveAfter === \"string\") {\n tagToRemoveAfter = [tagToRemoveAfter]\n }\n tags\n .filter((tag) => {\n let element = GameWindowManager.getCanvasElement(tag)\n if (args.startOnlyIfHaveTexture) {\n if (element && element instanceof Sprite && element.texture?.label == \"EMPTY\") {\n return false\n }\n }\n return true\n })\n .forEach((tag) => {\n let element = GameWindowManager.getCanvasElement(tag)\n if (element && element instanceof Container) {\n let xDistance = (destination.x - element.x) > 0 ? 1 : -1\n if (xDistance != 0) {\n element.x += xDistance * xSpeed * ticker.deltaTime\n let newDistance = destination.x - element.x\n if (xDistance < 0 && newDistance > 0 ||\n xDistance > 0 && newDistance < 0\n ) {\n element.x = destination.x\n }\n }\n let yDistance = (destination.y - element.y) > 0 ? 1 : -1\n if (yDistance != 0) {\n element.y += yDistance * ySpeed * ticker.deltaTime\n let newDistance = destination.y - element.y\n if (yDistance < 0 && newDistance > 0 ||\n yDistance > 0 && newDistance < 0\n ) {\n element.y = destination.y\n }\n }\n if (element.x == destination.x && element.y == destination.y) {\n GameWindowManager.onEndOfTicker(tag, this, tagToRemoveAfter, tickerId)\n }\n }\n })\n if (args.speedProgression)\n updateTickerProgression(args, \"speed\", args.speedProgression, this.speedConvert)\n }\n private speedConvert(speed: number): number {\n return speed / 6\n }\n}\n","import { Container, Sprite, Ticker } from \"pixi.js\";\nimport { tickerDecorator } from \"../../decorators\";\nimport { updateTickerProgression } from \"../../functions/TickerUtility\";\nimport { GameWindowManager } from \"../../managers\";\nimport { RotateTickerProps } from \"../../types/ticker/RotateTickerProps\";\nimport TickerBase from \"./TickerBase\";\n\n/**\n * A ticker that rotates the canvas element of the canvas. For centre rotation, set the anchor of the canvas element to 0.5.\n * This ticker can be used on all canvas elements that extend the {@link Container} class.\n * @example\n * ```typescript\n * let alien = addImage(\"alien\", 'https://pixijs.com/assets/eggHead.png')\n * alien.anchor.set(0.5);\n * GameWindowManager.addCanvasElement(\"alien\", alien);\n * const ticker = new RotateTicker({\n * speed: 0.1,\n * clockwise: true,\n * }),\n * GameWindowManager.addTicker(\"alien\", ticker)\n * ```\n */\n@tickerDecorator()\nexport default class RotateTicker extends TickerBase<RotateTickerProps> {\n override fn(\n ticker: Ticker,\n args: RotateTickerProps,\n tags: string[],\n tickerId: string\n ): void {\n let speed = this.speedConvert(args.speed === undefined ? 1 : args.speed)\n let clockwise = args.clockwise === undefined ? true : args.clockwise\n let tagToRemoveAfter = args.tagToRemoveAfter || []\n if (typeof tagToRemoveAfter === \"string\") {\n tagToRemoveAfter = [tagToRemoveAfter]\n }\n tags\n .filter((tag) => {\n let element = GameWindowManager.getCanvasElement(tag)\n if (args.startOnlyIfHaveTexture) {\n if (element && element instanceof Sprite && element.texture?.label == \"EMPTY\") {\n return false\n }\n }\n return true\n })\n .forEach((tag) => {\n let element = GameWindowManager.getCanvasElement(tag)\n if (element && element instanceof Container) {\n if (clockwise)\n element.rotation += speed * ticker.deltaTime\n else\n element.rotation -= speed * ticker.deltaTime\n if (speed < 0.00001 && !(args.speedProgression && args.speedProgression.type == \"linear\" && args.speedProgression.amt != 0)) {\n GameWindowManager.onEndOfTicker(tag, this, tagToRemoveAfter, tickerId)\n }\n }\n })\n if (args.speedProgression)\n updateTickerProgression(args, \"speed\", args.speedProgression, this.speedConvert)\n }\n private speedConvert(speed: number): number {\n return speed / 60\n }\n}\n","import { Container, ContainerChild, Sprite, Ticker, UPDATE_PRIORITY } from \"pixi.js\";\nimport { tickerDecorator } from \"../../decorators\";\nimport { updateTickerProgression } from \"../../functions/TickerUtility\";\nimport { GameWindowManager } from \"../../managers\";\nimport { ZoomTickerProps } from \"../../types/ticker\";\nimport TickerBase from \"./TickerBase\";\n\n/**\n * A ticker that zooms the canvas element of the canvas.\n * This ticker can be used on all canvas elements that extend the {@link Container} class.\n * @example\n * ```typescript\n * let alien = addImage(\"alien\", 'https://pixijs.com/assets/eggHead.png')\n * alien.anchor.set(0.5);\n * GameWindowManager.addCanvasElement(\"alien\", alien);\n * const ticker = new ZoomTicker({\n * speed: 0.1,\n * }),\n * GameWindowManager.addTicker(\"alien\", ticker)\n * ```\n */\n@tickerDecorator()\nexport default class ZoomTicker extends TickerBase<ZoomTickerProps> {\n override fn(\n ticker: Ticker,\n args: ZoomTickerProps,\n tags: string[],\n tickerId: string\n ): void {\n let xSpeed = 0.1\n let ySpeed = 0.1\n if (args.speed) {\n if (typeof args.speed === \"number\") {\n xSpeed = this.speedConvert(args.speed)\n ySpeed = this.speedConvert(args.speed)\n }\n else {\n xSpeed = this.speedConvert(args.speed.x)\n ySpeed = this.speedConvert(args.speed.y)\n }\n }\n let tagToRemoveAfter = args.tagToRemoveAfter || []\n if (typeof tagToRemoveAfter === \"string\") {\n tagToRemoveAfter = [tagToRemoveAfter]\n }\n let type = args.type || \"zoom\"\n let xLimit = type === \"zoom\" ? Infinity : 0\n let yLimit = type === \"zoom\" ? Infinity : 0\n if (args.limit) {\n if (typeof args.limit === \"number\") {\n xLimit = args.limit\n yLimit = args.limit\n }\n else {\n xLimit = args.limit.x\n yLimit = args.limit.y\n }\n }\n tags\n .filter((tag) => {\n let element = GameWindowManager.getCanvasElement(tag)\n if (args.startOnlyIfHaveTexture) {\n if (element && element instanceof Sprite && element.texture?.label == \"EMPTY\") {\n return false\n }\n }\n return true\n })\n .forEach((tag) => {\n let element = GameWindowManager.getCanvasElement(tag)\n if (element && element instanceof Container) {\n if (\n type === \"zoom\"\n && (element.scale.x < xLimit || element.scale.y < yLimit)\n ) {\n element.scale.x += xSpeed * ticker.deltaTime\n element.scale.y += ySpeed * ticker.deltaTime\n }\n else if (\n type === \"unzoom\"\n && (element.scale.x > xLimit || element.scale.y > yLimit)\n ) {\n element.scale.x -= xSpeed * ticker.deltaTime\n element.scale.y -= ySpeed * ticker.deltaTime\n }\n if (type === \"zoom\") {\n if (element.scale.x > xLimit) {\n element.scale.x = xLimit\n }\n if (element.scale.y > yLimit) {\n element.scale.y = yLimit\n }\n if (element.scale.x >= xLimit && element.scale.y >= yLimit) {\n element.scale.x = xLimit\n element.scale.y = yLimit\n this.onEndOfTicker(tag, tickerId, element, tagToRemoveAfter)\n }\n }\n else if (type === \"unzoom\") {\n if (element.scale.x < xLimit) {\n element.scale.x = xLimit\n }\n if (element.scale.y < yLimit) {\n element.scale.y = yLimit\n }\n if (element.scale.x <= xLimit && element.scale.y <= yLimit) {\n element.scale.x = xLimit\n element.scale.y = yLimit\n this.onEndOfTicker(tag, tickerId, element, tagToRemoveAfter)\n }\n }\n if (xSpeed < 0.00001 && ySpeed < 0.00001 && !(args.speedProgression && args.speedProgression.type == \"linear\" && args.speedProgression.amt != 0)) {\n this.onEndOfTicker(tag, tickerId, element, tagToRemoveAfter)\n }\n }\n })\n if (args.speedProgression)\n updateTickerProgression(args, \"speed\", args.speedProgression, this.speedConvert)\n }\n private speedConvert(speed: number): number {\n return speed / 60\n }\n\n onEndOfTicker<T extends Container = Container>(\n tag: string,\n tickerId: string,\n _element: T,\n tagToRemoveAfter: string[] | string,\n ): void {\n GameWindowManager.onEndOfTicker(tag, this, tagToRemoveAfter, tickerId)\n }\n}\n\n\nexport class ZoomInOutTicker extends ZoomTicker {\n constructor(props: ZoomTickerProps, duration?: number, priority?: UPDATE_PRIORITY) {\n super(props, duration, priority)\n }\n override onEndOfTicker<T extends Container = Container<ContainerChild>>(tag: string, tickerId: string, element: T, tagToRemoveAfter: string[] | string): void {\n if (element.children.length > 0) {\n let elementChild = element.children[0]\n GameWindowManager.addCanvasElement(tag, elementChild as any)\n }\n super.onEndOfTicker(tag, tickerId, element, tagToRemoveAfter)\n }\n}\n","import { PauseType, RepeatType } from \"./types\"\n\nexport const PIXIVN_VERSION = '0.6.7'\nexport const Repeat: RepeatType = \"repeat\"\n/**\n * Pause the tickers for a duration.\n * @param duration Duration in seconds\n * @returns The pause object\n */\nexport function Pause(duration: number): PauseType {\n return {\n type: \"pause\",\n duration: duration,\n }\n}\n","import { GameStorageManager } from \"../managers\"\n\n/**\n * StoredClassModel is a abstract class that contains the methods to store a class in the game.\n * I suggest you extend this class to create your own stored class.\n * @example\n * ```typescript\n * export class CharacterBaseModel extends StoredClassModel implements CharacterBaseModelProps {\n * constructor(id: string, props: CharacterBaseModelProps) {\n * super(\"___character___\", id)\n * this.defaultName = props.name\n * this.defaultSurname = props.surname\n * }\n * private defaultName: string = \"\"\n * get name(): string {\n * return this.getStorageProperty<string>(\"name\") || this.defaultName\n * }\n * set name(value: string) {\n * this.setStorageProperty<string>(\"name\", value)\n * }\n * private defaultSurname?: string\n * get surname(): string | undefined {\n * return this.getStorageProperty<string>(\"surname\") || this.defaultSurname\n * }\n * set surname(value: string | undefined) {\n * this.setStorageProperty<string>(\"surname\", value)\n * }\n * }\n * ```\n */\nexport default class StoredClassModel {\n /**\n * @param categoryId The id of the category. For example if you are storing a character class, you can use \"characters\" as categoryId. so all instances of the character class will be stored in the \"characters\" category.\n * @param id The id of instance of the class. This id must be unique for the category.\n */\n constructor(categoryId: string, id: string) {\n this.categoryId = categoryId\n this._id = id\n }\n private _id: string\n /**\n * Is id of the stored class. is unique for this class.\n */\n get id(): string {\n return this._id\n }\n private categoryId: string\n /**\n * Update a property in the storage.\n * @param propertyName The name of the property to set.\n * @param value The value to set. If is undefined, the property will be removed from the storage.\n */\n protected setStorageProperty<T>(propertyName: string, value: T | undefined): void {\n let storage = GameStorageManager.getVariable<any>(this.categoryId)\n if (!storage) {\n storage = {}\n }\n // if storage not have a key with the id\n if (!storage.hasOwnProperty(this.id)) {\n storage[this.id] = {}\n }\n\n if (value === undefined || value === null) {\n if (storage[this.id].hasOwnProperty(propertyName)) {\n delete storage[this.id][propertyName]\n }\n }\n else {\n storage[this.id] = { ...storage[this.id], [propertyName]: value }\n }\n\n if (Object.keys(storage[this.id]).length === 0) {\n delete storage[this.id]\n }\n\n GameStorageManager.setVariable(this.categoryId, storage)\n }\n /**\n * Get a property from the storage.\n * @param propertyName The name of the property to get.\n * @returns The value of the property. If the property is not found, returns undefined.\n */\n protected getStorageProperty<T>(propertyName: string): T | undefined {\n let storage = GameStorageManager.getVariable<any>(this.categoryId)\n if (storage && storage.hasOwnProperty(this.id) && storage[this.id].hasOwnProperty(propertyName)) {\n return storage[this.id][propertyName]\n }\n return undefined\n }\n}\n","/**\n * This function is used to create a deep copy of the element\n * @param element The element to be copied\n * @returns The copied element\n */\nexport function createExportableElement<T>(element: T): T {\n try {\n let elementString = JSON.stringify(element)\n return JSON.parse(elementString)\n }\n catch (e) {\n console.error(\"[Pixi'VN] Error creating exportable element\", e)\n throw new Error(\"[Pixi'VN] Error creating exportable element\")\n }\n}\n","import { createExportableElement } from \"../functions/ExportUtility\"\nimport { ExportedStorage } from \"../interface/export\"\nimport { StorageElementType } from \"../types/StorageElementType\"\n\nexport default class GameStorageManager {\n private static storage: { [key: string]: StorageElementType } = {}\n private constructor() { }\n public static get keysSystem() {\n return {\n CURRENT_DIALOGUE_MEMORY_KEY: \"___current_dialogue_memory___\",\n LAST_DIALOGUE_ADDED_IN_STEP_MEMORY_KEY: \"___last_dialogue_added_in_step_memory___\",\n CURRENT_MENU_OPTIONS_MEMORY_KEY: \"___current_menu_options_memory___\",\n LAST_MENU_OPTIONS_ADDED_IN_STEP_MEMORY_KEY: \"___last_menu_options_added_in_step_memory___\",\n CHARACTER_CATEGORY_KEY: \"___character___\",\n FLAGS_CATEGORY_KEY: \"___flags___\",\n }\n }\n /**\n * Set a variable in the storage\n * @param key The key of the variable\n * @param value The value of the variable. If undefined, the variable will be removed\n * @returns\n */\n public static setVariable(key: string, value: StorageElementType) {\n key = key.toLowerCase()\n if (value === undefined || value === null) {\n if (GameStorageManager.storage.hasOwnProperty(key)) {\n delete GameStorageManager.storage[key]\n }\n return\n }\n GameStorageManager.storage[key] = value\n }\n /**\n * Get a variable from the storage\n * @param key The key of the variable\n * @returns The value of the variable. If the variable does not exist, it will return undefined\n */\n public static getVariable<T extends StorageElementType>(key: string): T | undefined {\n key = key.toLowerCase()\n if (GameStorageManager.storage.hasOwnProperty(key)) {\n return GameStorageManager.storage[key] as T\n }\n return undefined\n }\n /**\n * Remove a variable from the storage\n * @param key The key of the variable\n * @returns\n */\n public static removeVariable(key: string) {\n key = key.toLowerCase()\n if (GameStorageManager.storage.hasOwnProperty(key)) {\n delete GameStorageManager.storage[key]\n }\n }\n /**\n * Clear the storage and the oidsUsed\n * @returns\n */\n public static clear() {\n GameStorageManager.storage = {}\n }\n public static exportJson(): string {\n return JSON.stringify(this.export())\n }\n public static export(): ExportedStorage {\n return createExportableElement(GameStorageManager.storage)\n }\n public static importJson(dataString: string) {\n GameStorageManager.import(JSON.parse(dataString))\n }\n public static import(data: object) {\n GameStorageManager.clear()\n try {\n if (data) {\n GameStorageManager.storage = (data as ExportedStorage)\n }\n else {\n console.warn(\"[Pixi'VN] No storage data found\")\n }\n }\n catch (e) {\n console.error(\"[Pixi'VN] Error importing data\", e)\n }\n }\n}\n","export function asciiArtLog() {\n console.info(`\n ____ _ _ ___ ___ _ \n | _ \\\\(_)_ _(_| ) \\\\ / / \\\\ | |\n | |_) | \\\\ \\\\/ / |/ \\\\ \\\\ / /| \\\\| |\n | __/| |> <| | \\\\ V / | |\\\\ |\n |_| |_/_/\\\\_\\\\_| \\\\_/ |_| \\\\_|\n `)\n}","export const tagToRemoveAfter = \"tagToRemoveAfter\";\nexport type tagToRemoveAfterType = \"tagToRemoveAfter\";\n","import sha1 from 'crypto-js/sha1';\nimport { Application, ApplicationOptions, Container, Ticker } from \"pixi.js\";\nimport CanvasBase from \"../classes/canvas/CanvasBase\";\nimport TickerBase, { TickerArgsType } from \"../classes/ticker/TickerBase\";\nimport { Repeat } from \"../constants\";\nimport { geTickerInstanceById } from \"../decorators/TickerDecorator\";\nimport { exportCanvasElement, importCanvasElement } from \"../functions/CanvasUtility\";\nimport { asciiArtLog } from \"../functions/EasterEgg\";\nimport { createExportableElement } from \"../functions/ExportUtility\";\nimport { ITicker, ITickersSteps, TickerHistory, TickerTimeoutHistory } from \"../interface\";\nimport { ITickersStep } from \"../interface/ITickersSteps\";\nimport { ICanvasBaseMemory } from \"../interface/canvas\";\nimport { ExportedCanvas } from \"../interface/export\";\nimport { PauseType } from \"../types/PauseType\";\nimport { RepeatType } from \"../types/RepeatType\";\nimport { TickerIdType } from \"../types/TickerIdType\";\nimport { tagToRemoveAfter } from '../types/ticker/TagToRemoveAfterType';\n\n/**\n * This class is responsible for managing the canvas, the tickers, the events, and the window size and the children of the window.\n */\nexport default class GameWindowManager {\n private constructor() { }\n\n private static _app: Application | undefined = undefined\n /**\n * The PIXI Application instance.\n * It not recommended to use this property directly.\n */\n static get app() {\n if (!GameWindowManager._app) {\n throw new Error(\"[Pixi'VN] GameWindowManager.app is undefined\")\n }\n return GameWindowManager._app\n }\n private static _isInitialized: boolean = false\n /**\n * If the manager is initialized.\n */\n static get isInitialized() {\n return GameWindowManager._isInitialized\n }\n /**\n * This is the div that have same size of the canvas.\n * This is useful to put interface elements.\n * You can use React or other framework to put elements in this div.\n */\n static htmlLayout: HTMLElement\n static canvasWidth: number\n static canvasHeight: number\n static get screen() {\n return GameWindowManager.app.screen\n }\n\n /**\n * Initialize the PIXI Application and the interface div.\n * This method should be called before any other method.\n * @param element The html element where I will put the canvas. Example: document.body\n * @param width The width of the canvas\n * @param height The height of the canvas\n * @param options The options of PIXI Application\n * @example\n * ```typescript\n * const body = document.body\n * if (!body) {\n * throw new Error('body element not found')\n * }\n * await GameWindowManager.initialize(body, 1920, 1080, {\n * backgroundColor: \"#303030\"\n * })\n * ```\n */\n public static async initialize(element: HTMLElement, width: number, height: number, options?: Partial<ApplicationOptions>): Promise<void> {\n GameWindowManager.canvasWidth = width\n GameWindowManager.canvasHeight = height\n GameWindowManager._app = new Application()\n return GameWindowManager.app.init({\n resolution: window.devicePixelRatio || 1,\n autoDensity: true,\n width: width,\n height: height,\n ...options\n }).then(() => {\n GameWindowManager._isInitialized = true\n // Manager.app.ticker.add(Manager.update)\n this.addCanvasIntoHTMLElement(element)\n // listen for the browser telling us that the screen size changed\n window.addEventListener(\"resize\", GameWindowManager.resize)\n\n // call it manually once so we are sure we are the correct size after starting\n GameWindowManager.resize()\n\n asciiArtLog()\n });\n }\n\n /**\n * Add the canvas into a html element.\n * @param element it is the html element where I will put the canvas. Example: document.body\n */\n private static addCanvasIntoHTMLElement(element: HTMLElement) {\n if (GameWindowManager.isInitialized) {\n element.appendChild(GameWindowManager.app.canvas as HTMLCanvasElement)\n }\n else {\n console.error(\"[Pixi'VN] GameWindowManager is not initialized\")\n }\n }\n /**\n * Initialize the interface div and add it into a html element.\n * @param element it is the html element where I will put the interface div. Example: document.getElementById('root')\n * @example\n * ```tsx\n * const root = document.getElementById('root')\n * if (!root) {\n * throw new Error('root element not found')\n * }\n * GameWindowManager.initializeHTMLLayout(root)\n * const reactRoot = createRoot(GameWindowManager.htmlLayout)\n * reactRoot.render(\n * <App />\n * )\n * ```\n */\n public static initializeHTMLLayout(element: HTMLElement) {\n let div = document.createElement('div')\n div.style.position = 'absolute'\n div.style.pointerEvents = 'none'\n element.appendChild(div)\n GameWindowManager.htmlLayout = div\n GameWindowManager.resize()\n }\n\n /* Resize Metods */\n\n /**\n * This method returns the scale of the screen.\n */\n public static get screenScale() {\n let screenWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0)\n let screenHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0)\n return Math.min(screenWidth / GameWindowManager.canvasWidth, screenHeight / GameWindowManager.canvasHeight)\n }\n /**\n * This method returns the width of the screen enlarged by the scale.\n */\n public static get screenWidth() {\n return Math.floor(GameWindowManager.screenScale * GameWindowManager.canvasWidth)\n }\n /**\n * This method returns the height of the screen enlarged by the scale.\n */\n public static get screenHeight() {\n return Math.floor(GameWindowManager.screenScale * GameWindowManager.canvasHeight)\n }\n /**\n * This method returns the horizontal margin of the screen.\n */\n public static get horizontalMargin() {\n let screenWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0)\n return (screenWidth - GameWindowManager.screenWidth) / 2\n }\n /**\n * This method returns the vertical margin of the screen.\n */\n public static get verticalMargin() {\n let screenHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0)\n return (screenHeight - GameWindowManager.screenHeight) / 2\n }\n /**\n * This method is called when the screen is resized.\n */\n private static resize(): void {\n // now we use css trickery to set the sizes and margins\n if (GameWindowManager.isInitialized) {\n let style = GameWindowManager.app.canvas.style;\n style.width = `${GameWindowManager.screenWidth}px`;\n style.height = `${GameWindowManager.screenHeight}px`;\n (style as any).marginLeft = `${GameWindowManager.horizontalMargin}px`;\n (style as any).marginRight = `${GameWindowManager.horizontalMargin}px`;\n (style as any).marginTop = `${GameWindowManager.verticalMargin}px`;\n (style as any).marginBottom = `${GameWindowManager.verticalMargin}px`;\n }\n\n if (GameWindowManager.htmlLayout) {\n GameWindowManager.htmlLayout.style.width = `${GameWindowManager.screenWidth}px`\n GameWindowManager.htmlLayout.style.height = `${GameWindowManager.screenHeight}px`\n GameWindowManager.htmlLayout.style.marginLeft = `${GameWindowManager.horizontalMargin}px`\n GameWindowManager.htmlLayout.style.marginRight = `${GameWindowManager.horizontalMargin}px`\n GameWindowManager.htmlLayout.style.marginTop = `${GameWindowManager.verticalMargin}px`\n GameWindowManager.htmlLayout.style.marginBottom = `${GameWindowManager.verticalMargin}px`\n }\n }\n\n /* Edit Canvas Elements Methods */\n\n /**\n * This is a dictionary that contains all Canvas Elements of Canvas, currently.\n */\n static get currentCanvasElements() {\n return GameWindowManager._children\n }\n private static _children: { [tag: string]: CanvasBase<any> } = {}\n /**\n * The order of the children tags.\n */\n private static childrenTagsOrder: string[] = []\n /**\n * Add a canvas element to the canvas.\n * If there is a canvas element with the same tag, it will be removed.\n * @param tag The tag of the canvas element.\n * @param canvasElement The canvas elements to be added.\n * @example\n * ```typescript\n * const texture = await Assets.load('https://pixijs.com/assets/bunny.png');\n * const sprite = CanvasSprite.from(texture);\n * GameWindowManager.addCanvasElement(\"bunny\", sprite);\n * ```\n */\n public static addCanvasElement(tag: string, canvasElement: CanvasBase<any>) {\n if (GameWindowManager._children[tag]) {\n GameWindowManager.removeCanvasElement(tag)\n }\n GameWindowManager.app.stage.addChild(canvasElement)\n GameWindowManager._children[tag] = canvasElement\n GameWindowManager.childrenTagsOrder.push(tag)\n }\n /**\n * Remove a canvas element from the canvas.\n * And remove all tickers that are not connected to any canvas element.\n * @param tags The tag of the canvas element to be removed.\n * @returns \n * @example\n * ```typescript\n * GameWindowManager.removeCanvasElement(\"bunny\");\n * ```\n */\n public static removeCanvasElement(tags: string | string[]) {\n if (typeof tags === \"string\") {\n tags = [tags]\n }\n tags.forEach((tag) => {\n if (GameWindowManager._children[tag]) {\n GameWindowManager.app.stage.removeChild(GameWindowManager._children[tag])\n delete GameWindowManager._children[tag]\n GameWindowManager.removeTickerByCanvasElement(tag)\n }\n })\n GameWindowManager.childrenTagsOrder = GameWindowManager.childrenTagsOrder.filter((t) => !tags.includes(t))\n }\n /**\n * Get a canvas element by the tag.\n * @param tag The tag of the canvas element.\n * @returns The canvas element.\n * @example\n * ```typescript\n * const sprite = GameWindowManager.getCanvasElement<CanvasSprite>(\"bunny\");\n * ```\n */\n public static getCanvasElement<T extends CanvasBase<any>>(tag: string): T | undefined {\n return GameWindowManager._children[tag] as T | undefined\n }\n /**\n * Check if a DisplayObject is on the canvas.\n * @param pixiElement The DisplayObject to be checked.\n * @returns If the DisplayObject is on the canvas.\n */\n public static canvasElementIsOnCanvas<T extends Container>(pixiElement: T) {\n return GameWindowManager.app.stage.children.includes(pixiElement)\n }\n /**\n * Remove all canvas elements from the canvas.\n * And remove all tickers that are not connected to any canvas element.\n */\n public static removeCanvasElements() {\n GameWindowManager.app.stage.removeChildren()\n GameWindowManager._children = {}\n GameWindowManager.childrenTagsOrder = []\n GameWindowManager.removeAllTickers()\n }\n /**\n * Edit the tag of a canvas element.\n * @param oldTag The old tag of the canvas element.\n * @param newTag The new tag of the canvas element.\n */\n public static editCanvasElementTag(oldTag: string, newTag: string) {\n if (GameWindowManager._children[oldTag]) {\n GameWindowManager._children[newTag] = GameWindowManager._children[oldTag]\n delete GameWindowManager._children[oldTag]\n }\n if (GameWindowManager._currentTickersSteps[oldTag]) {\n GameWindowManager._currentTickersSteps[newTag] = GameWindowManager._currentTickersSteps[oldTag]\n delete GameWindowManager._currentTickersSteps[oldTag]\n }\n for (let id in GameWindowManager._currentTickers) {\n let ticker = GameWindowManager._currentTickers[id]\n if (ticker.canvasElementTags.includes(oldTag)) {\n ticker.canvasElementTags = ticker.canvasElementTags.map((t) => t === oldTag ? newTag : t)\n if (ticker.args.hasOwnProperty(tagToRemoveAfter)) {\n let tagToRemoveAfter: string | string[] = ticker.args.tagToRemoveAfter\n if (typeof tagToRemoveAfter === \"string\") {\n tagToRemoveAfter = [tagToRemoveAfter]\n }\n if (Array.isArray(tagToRemoveAfter)) {\n ticker.args.tagToRemoveAfter = tagToRemoveAfter.map((t) => t === oldTag ? newTag : t)\n }\n }\n }\n }\n for (let timeout in GameWindowManager._currentTickersTimeouts) {\n let TickerTimeout = GameWindowManager._currentTickersTimeouts[timeout]\n if (TickerTimeout.tags.includes(oldTag)) {\n TickerTimeout.tags = TickerTimeout.tags.map((t) => t === oldTag ? newTag : t)\n }\n }\n }\n\n /** Edit Tickers Methods */\n\n /**\n * Currently tickers that are running.\n */\n public static get currentTickers() {\n return GameWindowManager._currentTickers\n }\n public static get currentTickersList() {\n return Object.values(GameWindowManager._currentTickers)\n }\n private static get currentTickersWithoutCreatedBySteps() {\n return Object.fromEntries(Object.entries(GameWindowManager._currentTickers).filter(([_, ticker]) => !ticker.createdByTicketStepsId))\n }\n private static _currentTickers: { [id: string]: TickerHistory<any> } = {}\n /**\n * The steps of the tickers\n */\n public static get currentTickersSteps() {\n return GameWindowManager._currentTickersSteps\n }\n private static _currentTickersSteps: { [tag: string]: ITickersSteps } = {}\n private static _currentTickersTimeouts: { [timeout: string]: TickerTimeoutHistory } = {}\n private static generateTickerId(tickerData: TickerHistory<any>): string {\n try {\n return sha1(JSON.stringify(tickerData)).toString() + \"_\" + Math.random().toString(36).substring(7)\n }\n catch (e) {\n throw new Error(`[Pixi'VN] Error to generate ticker id: ${e}`)\n }\n }\n /**\n * Run a ticker. You can run multiple addTicker with the same tag and different tickerClasses.\n * If you run a ticker with the same tag and tickerClass, the old ticker will be removed.\n * If already exists a sequence of tickers with the same tag, it will be removed.\n * @param canvasEslementTag The tag of the canvas element that will use the ticker.\n * @param ticker The ticker class to be run.\n * @param args The arguments to be used in the ticker.\n * @param duration The time to be used in the ticker. This number is in seconds. If it is undefined, the ticker will run forever.\n * @param priority The priority to be used in the ticker.\n * @returns \n * @example\n * ```typescript\n * GameWindowManager.addTicker(\"alien\", new RotateTicker({ speed: 0.2 }))\n * ```\n */\n static addTicker<TArgs extends TickerArgsType>(canvasElementTag: string | string[], ticker: TickerBase<TArgs>) {\n let tickerId: TickerIdType = ticker.id\n if (typeof canvasElementTag === \"string\") {\n canvasElementTag = [canvasElementTag]\n }\n if (!geTickerInstanceById<TArgs>(tickerId, ticker.args, ticker.duration, ticker.priority)) {\n console.error(`[Pixi'VN] Ticker ${tickerId} not found`)\n return\n }\n let tickerHistory: TickerHistory<TArgs> = {\n fn: () => { },\n id: tickerId,\n args: createExportableElement(ticker.args),\n canvasElementTags: canvasElementTag,\n priority: ticker.priority,\n duration: ticker.duration,\n }\n let id = GameWindowManager.generateTickerId(tickerHistory)\n GameWindowManager.pushTicker(id, tickerHistory, ticker)\n if (ticker.duration) {\n let timeout = setTimeout(() => {\n GameWindowManager.removeTickerTimeoutInfo(timeout)\n let tickerTimeoutInfo = GameWindowManager._currentTickersTimeouts[timeout.toString()]\n if (tickerTimeoutInfo) {\n GameWindowManager.removeTicker(id)\n }\n }, ticker.duration * 1000);\n GameWindowManager.addTickerTimeoutInfo(canvasElementTag, tickerId, timeout.toString(), true)\n }\n }\n private static pushTicker<TArgs extends TickerArgsType>(id: string, tickerData: TickerHistory<TArgs>, ticker: TickerBase<TArgs>) {\n GameWindowManager.removeAssociationBetweenTickerCanvasElement(tickerData.canvasElementTags, ticker)\n GameWindowManager._currentTickers[id] = tickerData\n tickerData.fn = (t: Ticker) => {\n let data = GameWindowManager._currentTickers[id]\n if (data) {\n ticker?.fn(t, data.args, data.canvasElementTags, id)\n }\n }\n GameWindowManager.app.ticker.add(tickerData.fn, undefined, tickerData.priority)\n }\n /**\n * Run a sequence of tickers. If exists a ticker steps with the same tag, it will be removed.\n * @param tag The tag of canvas element that will use the tickers.\n * @param steps The steps of the tickers.\n * @param currentStepNumber The current step number. It is used to continue the sequence of tickers.\n * @returns\n * @example\n * ```typescript\n * GameWindowManager.addTickersSteps(\"alien\", [\n * new RotateTicker({ speed: 0.1, clockwise: true }, 2), // 2 seconds\n * Pause(1), // 1 second\n * new RotateTicker({ speed: 0.2, clockwise: false }, 2),\n * Repeat,\n * ])\n * ```\n */\n static addTickersSteps<TArgs extends TickerArgsType>(tag: string, steps: (ITicker<TArgs> | RepeatType | PauseType)[], currentStepNumber = 0) {\n if (steps.length == 0) {\n console.warn(\"[Pixi'VN] The steps of the tickers is empty\")\n return\n }\n GameWindowManager.removeTickerStepByCanvasElement(tag)\n GameWindowManager._currentTickersSteps[tag] = {\n currentStepNumber: currentStepNumber,\n steps: steps.map((step) => {\n if (step === Repeat) {\n return step\n }\n if (step.hasOwnProperty(\"type\") && (step as PauseType).type === \"pause\") {\n return step as PauseType\n }\n let tickerId = (step as ITicker<TArgs>).id\n return {\n ticker: tickerId,\n args: createExportableElement((step as ITicker<TArgs>).args),\n duration: step.duration,\n }\n })\n }\n GameWindowManager.runTickersSteps(tag)\n }\n private static restoneTickersSteps(data: { [tag: string]: ITickersSteps }) {\n for (let tag in data) {\n let steps = data[tag]\n GameWindowManager._currentTickersSteps[tag] = steps\n GameWindowManager.runTickersSteps(tag)\n }\n }\n private static runTickersSteps<TArgs extends TickerArgsType>(tag: string) {\n let step = GameWindowManager._currentTickersSteps[tag].steps[GameWindowManager._currentTickersSteps[tag].currentStepNumber]\n if (step === Repeat) {\n step = GameWindowManager._currentTickersSteps[tag].steps[0]\n GameWindowManager._currentTickersSteps[tag].currentStepNumber = 0\n if (step === Repeat) {\n console.error(\"[Pixi'VN] TikersSteps has a RepeatType in the first step\")\n return\n }\n }\n if (step.hasOwnProperty(\"type\") && (step as PauseType).type === \"pause\") {\n let timeout = setTimeout(() => {\n let tickerTimeoutInfo = GameWindowManager._currentTickersTimeouts[timeout.toString()]\n if (tickerTimeoutInfo) {\n tickerTimeoutInfo.tags.forEach((tag) => {\n GameWindowManager.nextTickerStep(tag)\n })\n }\n GameWindowManager.removeTickerTimeoutInfo(timeout)\n }, (step as PauseType).duration * 1000);\n GameWindowManager.addTickerTimeoutInfo(tag, \"steps\", timeout.toString(), false)\n return\n }\n let ticker = geTickerInstanceById<TArgs>((step as ITickersStep<TArgs>).ticker, (step as ITickersStep<TArgs>).args, step.duration, (step as ITickersStep<TArgs>).priority)\n if (!ticker) {\n console.error(`[Pixi'VN] Ticker ${(step as ITickersStep<TArgs>).ticker} not found`)\n return\n }\n let tickerName: TickerIdType = ticker.id\n let tickerHistory: TickerHistory<TArgs> = {\n fn: () => { },\n id: tickerName,\n args: createExportableElement(ticker.args),\n canvasElementTags: [tag],\n priority: ticker.priority,\n duration: ticker.duration,\n createdByTicketStepsId: tag,\n }\n let id = GameWindowManager.generateTickerId(tickerHistory)\n GameWindowManager.pushTicker(id, tickerHistory, ticker)\n if (ticker.duration) {\n let timeout = setTimeout(() => {\n let tickerTimeoutInfo = GameWindowManager._currentTickersTimeouts[timeout.toString()]\n if (tickerTimeoutInfo) {\n GameWindowManager.removeTicker(id)\n tickerTimeoutInfo.tags.forEach((tag) => {\n GameWindowManager.nextTickerStep(tag)\n })\n }\n GameWindowManager.removeTickerTimeoutInfo(timeout)\n }, ticker.duration * 1000);\n GameWindowManager.addTickerTimeoutInfo(tag, tickerName, timeout.toString(), false)\n }\n }\n private static nextTickerStep(tag: string) {\n if (GameWindowManager._currentTickersSteps[tag]) {\n let steps = GameWindowManager._currentTickersSteps[tag]\n if (steps.currentStepNumber + 1 < steps.steps.length) {\n steps.currentStepNumber++\n GameWindowManager._currentTickersSteps[tag] = steps\n GameWindowManager.runTickersSteps(tag)\n }\n else {\n GameWindowManager.removeTickerStepByCanvasElement(tag)\n }\n }\n }\n public static onEndOfTicker(canvasElementTags: string | string[], ticker: typeof TickerBase<any> | TickerBase<any> | string, canvasElementTagsToDelete: string | string[], tickerId: string) {\n let tickerData = GameWindowManager._currentTickers[tickerId]\n GameWindowManager.removeAssociationBetweenTickerCanvasElement(canvasElementTags, ticker)\n GameWindowManager.removeCanvasElement(canvasElementTagsToDelete)\n if (tickerData) {\n GameWindowManager.removeTicker(tickerId)\n if (tickerData.duration == undefined && tickerData.createdByTicketStepsId) {\n GameWindowManager.nextTickerStep(tickerData.createdByTicketStepsId)\n }\n }\n }\n /**\n * Remove a connection between a canvas element and a ticker.\n * And remove the ticker if there is no canvas element connected to it.\n * @param tags The tag of the canvas element that will use the ticker.\n * @param ticker The ticker class to be removed.\n * @example\n * ```typescript\n * GameWindowManager.removeAssociationBetweenTickerCanvasElement(\"alien\", RotateTicker)\n * ```\n */\n public static removeAssociationBetweenTickerCanvasElement(tags: string | string[], ticker: typeof TickerBase<any> | TickerBase<any> | string) {\n let tickerId: TickerIdType\n if (typeof ticker === \"string\") {\n tickerId = ticker\n }\n else if (ticker instanceof TickerBase) {\n tickerId = ticker.id\n }\n else {\n tickerId = ticker.prototype.id\n }\n if (typeof tags === \"string\") {\n tags = [tags]\n }\n for (let id in GameWindowManager._currentTickers) {\n let ticker = GameWindowManager._currentTickers[id]\n if (ticker.id === tickerId) {\n GameWindowManager._currentTickers[id].canvasElementTags = ticker.canvasElementTags.filter((e) => !tags.includes(e))\n }\n }\n for (let timeout in GameWindowManager._currentTickersTimeouts) {\n let TickerTimeout = GameWindowManager._currentTickersTimeouts[timeout]\n if (TickerTimeout.ticker === tickerId && TickerTimeout.canBeDeletedBeforeEnd) {\n GameWindowManager._currentTickersTimeouts[timeout].tags = TickerTimeout.tags.filter((t) => !tags.includes(t))\n }\n }\n GameWindowManager.removeTickersWithoutAssociatedCanvasElement()\n }\n /**\n * Remove all tickers that are not connected to any existing canvas element.\n */\n private static removeTickersWithoutAssociatedCanvasElement() {\n for (let id in GameWindowManager._currentTickers) {\n let ticker = GameWindowManager._currentTickers[id]\n ticker.canvasElementTags = ticker.canvasElementTags.filter((e) => GameWindowManager._children[e])\n if (ticker.canvasElementTags.length === 0) {\n GameWindowManager.removeTicker(id)\n }\n }\n for (let tag in GameWindowManager._currentTickersSteps) {\n if (GameWindowManager._children[tag] === undefined) {\n delete GameWindowManager._currentTickersSteps[tag]\n }\n }\n Object.entries(GameWindowManager._currentTickersTimeouts).forEach(([timeout, { tags }]) => {\n if (tags.length === 0) {\n GameWindowManager.removeTickerTimeout(timeout)\n }\n })\n }\n private static addTickerTimeoutInfo(tags: string | string[], ticker: string, timeout: string, canBeDeletedBeforeEnd: boolean) {\n if (typeof tags === \"string\") {\n tags = [tags]\n }\n GameWindowManager._currentTickersTimeouts[timeout] = {\n tags: tags,\n ticker: ticker,\n canBeDeletedBeforeEnd: canBeDeletedBeforeEnd\n }\n }\n private static removeTickerTimeoutInfo(timeout: NodeJS.Timeout | string) {\n if (typeof timeout !== \"string\") {\n timeout = timeout.toString()\n }\n if (GameWindowManager._currentTickersTimeouts[timeout]) {\n delete GameWindowManager._currentTickersTimeouts[timeout]\n }\n }\n private static removeTickerTimeout(timeout: NodeJS.Timeout | string) {\n if (typeof timeout !== \"string\") {\n timeout = timeout.toString()\n }\n clearTimeout(Number(timeout))\n GameWindowManager.removeTickerTimeoutInfo(timeout)\n }\n private static removeTickerTimeoutsByTag(tag: string, checkCanBeDeletedBeforeEnd: boolean) {\n for (let timeout in GameWindowManager._currentTickersTimeouts) {\n let tagsWithoutTagToRemove = GameWindowManager._currentTickersTimeouts[timeout].tags.filter((t) => t !== tag)\n if (tagsWithoutTagToRemove.length === 0) {\n let canBeDeletedBeforeEnd = GameWindowManager._currentTickersTimeouts[timeout].canBeDeletedBeforeEnd\n if (!checkCanBeDeletedBeforeEnd || canBeDeletedBeforeEnd) {\n GameWindowManager.removeTickerTimeout(timeout)\n }\n }\n else {\n GameWindowManager._currentTickersTimeouts[timeout].tags = tagsWithoutTagToRemove\n }\n }\n }\n /**\n * Remove all tickers from the canvas.\n */\n public static removeAllTickers() {\n GameWindowManager._currentTickersSteps = {}\n Object.keys(GameWindowManager._currentTickers).forEach((id) => {\n GameWindowManager.removeTicker(id)\n })\n GameWindowManager._currentTickers = {}\n for (let timeout in GameWindowManager._currentTickersTimeouts) {\n GameWindowManager.removeTickerTimeout(timeout)\n }\n }\n /**\n * Remove all tickers from a canvas element.\n * @param tag The tag of the canvas element that will use the ticker.\n */\n private static removeTickerByCanvasElement(tag: string | string[]) {\n if (typeof tag === \"string\") {\n tag = [tag]\n }\n tag.forEach((tag) => {\n for (let id in GameWindowManager._currentTickers) {\n let ticker = GameWindowManager._currentTickers[id]\n if (ticker.canvasElementTags.includes(tag)) {\n GameWindowManager.removeTicker(id)\n }\n }\n if (GameWindowManager._currentTickersSteps[tag]) {\n delete GameWindowManager._currentTickersSteps[tag]\n }\n GameWindowManager.removeTickerTimeoutsByTag(tag, false)\n delete GameWindowManager._currentTickersSteps[tag]\n })\n }\n private static removeTickerStepByCanvasElement(tag: string) {\n if (GameWindowManager._currentTickersSteps[tag]) {\n delete GameWindowManager._currentTickersSteps[tag]\n }\n for (let id in GameWindowManager._currentTickers) {\n let ticker = GameWindowManager._currentTickers[id]\n if (ticker.createdByTicketStepsId === tag) {\n GameWindowManager.removeTicker(id)\n }\n }\n }\n private static removeTicker(tickerId: string) {\n let ticker = GameWindowManager._currentTickers[tickerId]\n if (ticker) {\n if (ticker.args.hasOwnProperty(tagToRemoveAfter)) {\n let tagToRemoveAfter: string | string[] = ticker.args.tagToRemoveAfter\n GameWindowManager.removeCanvasElement(tagToRemoveAfter)\n }\n GameWindowManager.app.ticker.remove(ticker.fn)\n delete GameWindowManager._currentTickers[tickerId]\n }\n }\n\n /**\n * Clear the canvas and the tickers.\n */\n static clear() {\n GameWindowManager.removeCanvasElements()\n }\n\n /* Export and Import Methods */\n\n /**\n * Export the canvas and the tickers to a JSON string.\n * @returns The JSON string.\n */\n public static exportJson(): string {\n return JSON.stringify(this.export())\n }\n /**\n * Export the canvas and the tickers to an object.\n * @returns The object.\n */\n public static export(): ExportedCanvas {\n let currentElements: { [tag: string]: ICanvasBaseMemory } = {}\n for (let tag in GameWindowManager._children) {\n currentElements[tag] = exportCanvasElement(GameWindowManager._children[tag])\n }\n return {\n currentTickers: createExportableElement(GameWindowManager.currentTickersWithoutCreatedBySteps),\n currentTickersSteps: createExportableElement(GameWindowManager._currentTickersSteps),\n currentElements: createExportableElement(currentElements),\n childrenTagsOrder: createExportableElement(GameWindowManager.childrenTagsOrder),\n }\n }\n /**\n * Import the canvas and the tickers from a JSON string.\n * @param dataString The JSON string.\n */\n public static importJson(dataString: string) {\n GameWindowManager.import(JSON.parse(dataString))\n }\n /**\n * Import the canvas and the tickers from an object.\n * @param data The object.\n */\n public static import(data: object) {\n GameWindowManager.clear()\n try {\n if (data.hasOwnProperty(\"childrenTagsOrder\") && data.hasOwnProperty(\"currentElements\")) {\n let currentElements = (data as ExportedCanvas)[\"currentElements\"]\n let childrenTagsOrder = (data as ExportedCanvas)[\"childrenTagsOrder\"]\n childrenTagsOrder.forEach((tag) => {\n if (currentElements[tag]) {\n let element = importCanvasElement(currentElements[tag])\n GameWindowManager.addCanvasElement(tag, element)\n GameWindowManager.childrenTagsOrder.push(tag)\n }\n })\n }\n else {\n console.error(\"[Pixi'VN] The data does not have the properties childrenTagsOrder and currentElements\")\n return\n }\n if (data.hasOwnProperty(\"currentTickers\")) {\n let currentTickers = (data as ExportedCanvas)[\"currentTickers\"]\n for (let id in currentTickers) {\n let t = currentTickers[id]\n let tags: string[] = t.canvasElementTags\n let ticker = geTickerInstanceById(t.id, t.args, t.duration, t.priority)\n if (ticker) {\n GameWindowManager.addTicker(tags, ticker)\n }\n else {\n console.error(`[Pixi'VN] Ticker ${t.id} not found`)\n }\n }\n }\n if (data.hasOwnProperty(\"currentTickersSteps\")) {\n let currentTickersSteps = (data as ExportedCanvas)[\"currentTickersSteps\"]\n GameWindowManager.restoneTickersSteps(currentTickersSteps)\n }\n }\n catch (e) {\n console.error(\"[Pixi'VN] Error importing data\", e)\n }\n }\n}\n","import { saveCharacter } from \"../decorators\"\nimport { CharacterBaseModelProps } from \"../interface\"\nimport { GameStorageManager } from \"../managers\"\nimport StoredClassModel from \"./StoredClassModel\"\n\n/**\n * CharacterBaseModel is a class that is used to create a character model.\n * I suggest you extend this class to create your own character models.\n * You must use the {@link saveCharacter} function to save the character in the game.\n * @example\n * ```typescript\n * export const liam = new CharacterBaseModel('liam', {\n * name: 'Liam',\n * surname: 'Smith',\n * age: 25,\n * icon: \"https://pixijs.com/assets/eggHead.png\",\n * color: \"#9e2e12\"\n * });\n * export const alice = new CharacterBaseModel('alice', {\n * name: 'Alice',\n * surname: 'Smith',\n * age: 25,\n * icon: \"https://pixijs.com/assets/eggHead.png\",\n * color: \"#9e2e12\"\n * });\n * saveCharacter([liam, alice]);\n * ```\n */\nexport default class CharacterBaseModel extends StoredClassModel implements CharacterBaseModelProps {\n /**\n * @param id The id of the character.\n * @param props The properties of the character.\n */\n constructor(id: string, props: CharacterBaseModelProps) {\n super(GameStorageManager.keysSystem.CHARACTER_CATEGORY_KEY, id)\n this.defaultName = props.name\n this.defaultSurname = props.surname\n this.defaultAge = props.age\n this._icon = props.icon\n this._color = props.color\n }\n private defaultName: string = \"\"\n /***\n * The name of the character.\n * If you set undefined, it will return the default name.\n */\n get name(): string {\n return this.getStorageProperty<string>(\"name\") || this.defaultName\n }\n set name(value: string | undefined) {\n this.setStorageProperty<string>(\"name\", value)\n }\n private defaultSurname?: string\n /**\n * The surname of the character.\n * If you set undefined, it will return the default surname.\n */\n get surname(): string | undefined {\n return this.getStorageProperty<string>(\"surname\") || this.defaultSurname\n }\n set surname(value: string | undefined) {\n this.setStorageProperty<string>(\"surname\", value)\n }\n private defaultAge?: number | undefined\n /**\n * The age of the character.\n * If you set undefined, it will return the default age.\n */\n get age(): number | undefined {\n return this.getStorageProperty<number>(\"age\") || this.defaultAge\n }\n set age(value: number | undefined) {\n this.setStorageProperty<number>(\"age\", value)\n }\n private _icon?: string\n /**\n * The icon of the character.\n */\n get icon(): string | undefined {\n return this._icon\n }\n private _color?: string | undefined\n /**\n * The color of the character.\n */\n get color(): string | undefined {\n return this._color\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/functions/CanvasUtility.ts","../../src/classes/canvas/CanvasContainer.ts","../../src/functions/TextureUtility.ts","../../src/decorators/EventDecorator.ts","../../src/classes/canvas/CanvasSprite.ts","../../src/classes/canvas/CanvasImage.ts","../../src/classes/canvas/CanvasText.ts","../../src/decorators/CanvasElementDecorator.ts","../../src/decorators/TickerDecorator.ts","../../src/classes/ticker/TickerBase.ts","../../src/classes/ticker/FadeAlphaTicker.ts","../../src/functions/TickerUtility.ts","../../src/classes/ticker/MoveTicker.ts","../../src/classes/ticker/RotateTicker.ts","../../src/classes/ticker/ZoomTicker.ts","../../src/constants.ts","../../src/classes/StoredClassModel.ts","../../src/functions/ExportUtility.ts","../../src/managers/StorageManager.ts","../../src/functions/EasterEgg.ts","../../src/types/ticker/TagToRemoveAfterType.ts","../../src/managers/WindowManager.ts","../../src/classes/CharacterBaseModel.ts"],"names":["Container","Assets","Texture","Sprite","Text","tagToRemoveAfter","Application","sha1","tag","ticker","CharacterBaseModel"],"mappings":"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","file":"CharacterBaseModel.js","sourcesContent":["import { Texture } from \"pixi.js\";\nimport { CanvasBase } from \"../classes/canvas\";\nimport { getCanvasElementInstanceById } from \"../decorators/CanvasElementDecorator\";\nimport { ICanvasBaseMemory, ITextureMemory } from \"../interface/canvas\";\n\n/**\n * Get the memory object of the PixiJS texture\n * @param texture PixiJS Texture object\n * @returns Memory object of the texture\n */\nexport function getTextureMemory(texture: Texture): ITextureMemory {\n let sourceTexture = texture.source\n let textureMemory: ITextureMemory = {\n image: sourceTexture.label\n }\n return textureMemory\n}\n\n/**\n * Export a Canvas element to a memory object\n * @param element Canvas element\n * @returns Memory object of the canvas\n */\nexport function exportCanvasElement<T extends CanvasBase<any>>(\n element: T,\n): ICanvasBaseMemory {\n return element.memory\n}\n\n/**\n * Import a Canvas element from a memory object\n * @param memory Memory object of the canvas\n * @returns Canvas element\n */\nexport function importCanvasElement<T extends CanvasBase<any>>(\n memory: ICanvasBaseMemory,\n): T {\n let element = getCanvasElementInstanceById<T>(memory.pixivnId)\n if (element) {\n element.memory = memory\n }\n else {\n throw new Error(\"[Pixi'VN] The element \" + memory.pixivnId + \" could not be created\")\n }\n\n return element\n}\n","import { Container, ContainerOptions } from \"pixi.js\";\nimport { exportCanvasElement, importCanvasElement } from \"../../functions/CanvasUtility\";\nimport ICanvasContainerMemory from \"../../interface/canvas/ICanvasContainerMemory\";\nimport CanvasBase from \"./CanvasBase\";\n\nexport const CANVAS_CONTAINER_ID = \"CanvasContainer\"\n\n/**\n * This class is a extension of the [PIXI.Container class](https://pixijs.com/8.x/examples/basic/container), it has the same properties and methods, \n * but it has the ability to be saved and loaded by the Pixi'VN library.\n * @example\n * ```typescript\n * const container = new CanvasContainer();\n * GameWindowManager.addCanvasElement(container);\n * const texture = await Assets.load('https://pixijs.com/assets/bunny.png');\n * for (let i = 0; i < 25; i++)\n * {\n * const bunny = new CanvasSprite(texture);\n * bunny.x = (i % 5) * 40;\n * bunny.y = Math.floor(i / 5) * 40;\n * container.addChild(bunny);\n * }\n * ```\n */\nexport default class CanvasContainer extends Container implements CanvasBase<ICanvasContainerMemory> {\n constructor(options?: ContainerOptions) {\n super(options)\n this.pixivnId = this.constructor.prototype.pixivnId || CANVAS_CONTAINER_ID\n }\n pixivnId: string = CANVAS_CONTAINER_ID\n get memory(): ICanvasContainerMemory {\n let memory = getMemoryContainer(this)\n this.children.forEach(child => {\n memory.elements.push(exportCanvasElement(child as CanvasBase<any>))\n })\n return memory\n }\n set memory(value: ICanvasContainerMemory) {\n setMemoryContainer(this, value)\n value.elements.forEach(child => {\n this.addChild(importCanvasElement(child))\n })\n }\n}\n\nexport function getMemoryContainer<T extends Container>(element: T): ICanvasContainerMemory {\n let className = \"CanvasContainer\"\n if (element.hasOwnProperty(\"pixivnId\")) {\n className = (element as any).pixivnId\n }\n return {\n pixivnId: className,\n elements: [],\n\n width: element.width,\n height: element.height,\n\n isRenderGroup: element.isRenderGroup,\n blendMode: element.blendMode,\n tint: element.tint,\n alpha: element.alpha,\n angle: element.angle,\n renderable: element.renderable,\n rotation: element.rotation,\n scale: { x: element.scale.x, y: element.scale.y },\n pivot: { x: element.pivot.x, y: element.pivot.y },\n position: { x: element.position.x, y: element.position.y },\n skew: { x: element.skew.x, y: element.skew.y },\n visible: element.visible,\n x: element.x,\n y: element.y,\n boundsArea: element.boundsArea,\n\n cursor: element.cursor,\n eventMode: element.eventMode,\n interactive: element.interactive,\n interactiveChildren: element.interactiveChildren,\n hitArea: element.hitArea\n }\n}\n\nexport function setMemoryContainer<T extends Container>(element: T | Container, memory: ContainerOptions) {\n memory.isRenderGroup && (element.isRenderGroup = memory.isRenderGroup)\n memory.blendMode && (element.blendMode = memory.blendMode)\n memory.tint && (element.tint = memory.tint)\n memory.alpha && (element.alpha = memory.alpha)\n memory.angle && (element.angle = memory.angle)\n memory.renderable && (element.renderable = memory.renderable)\n memory.rotation && (element.rotation = memory.rotation)\n if (memory.scale) {\n if (typeof memory.scale === \"number\") {\n element.scale.set(memory.scale, memory.scale)\n }\n else {\n element.scale.set(memory.scale.x, memory.scale.y)\n }\n }\n if (memory.pivot) {\n if (typeof memory.pivot === \"number\") {\n element.pivot.set(memory.pivot, memory.pivot)\n }\n else {\n element.pivot.set(memory.pivot.x, memory.pivot.y)\n }\n }\n memory.position && (element.position.set(memory.position.x, memory.position.y))\n memory.skew && (element.skew.set(memory.skew.x, memory.skew.y))\n memory.visible && (element.visible = memory.visible)\n memory.x && (element.x = memory.x)\n memory.y && (element.y = memory.y)\n memory.boundsArea && (element.boundsArea = memory.boundsArea)\n\n memory.cursor && (element.cursor = memory.cursor)\n memory.eventMode && (element.eventMode = memory.eventMode)\n memory.interactive && (element.interactive = memory.interactive)\n memory.interactiveChildren && (element.interactiveChildren = memory.interactiveChildren)\n memory.hitArea && (element.hitArea = memory.hitArea)\n\n // end\n // width and height must be set after the scale\n memory.width && (element.width = memory.width)\n memory.height && (element.height = memory.height)\n}\n","import { Assets, ColorSource, FillGradient, FillPattern, StrokeStyle, TextStyle, TextStyleOptions, Texture } from 'pixi.js';\n\n/**\n * Get a texture from a url.\n * @param imageUrl is the url of the image.\n * @returns the texture of the image, or a text with the error.\n */\nexport async function getTexture(imageUrl: string): Promise<Texture | void> {\n if (Assets.cache.has(imageUrl)) {\n return Assets.get(imageUrl)\n }\n return Assets.load(imageUrl)\n .then((texture) => {\n if (!texture) {\n console.error(\"[Pixi'VN] Texture not found\", imageUrl)\n return\n }\n // if texture not is a Texture, then it is a TextureResource\n if (!(texture instanceof Texture)) {\n console.error(\"[Pixi'VN] File not is a image\", imageUrl)\n return\n }\n\n return texture\n })\n .catch((e) => {\n console.error(\"[Pixi'VN] Error loading image\", e)\n return\n })\n}\n\nfunction getFillGradientFillPattern(prop: ColorSource | FillGradient | FillPattern | StrokeStyle, propName: keyof TextStyle) {\n if (!(prop instanceof Object)) {\n return prop\n }\n // TODO: FillGradient and FillPattern are not supported yet\n console.warn(`[Pixi'VN] CanvasText.style.${propName} is a FillGradient or FillPattern, this is not supported yet.`, prop)\n return undefined\n}\n\nexport function getTextStyle(style: TextStyle): TextStyleOptions {\n return {\n align: style.align,\n breakWords: style.breakWords,\n dropShadow: style.dropShadow,\n fill: getFillGradientFillPattern(style.stroke, \"fill\"),\n fontFamily: style.fontFamily,\n fontSize: style.fontSize,\n fontStyle: style.fontStyle,\n fontVariant: style.fontVariant,\n fontWeight: style.fontWeight,\n leading: style.leading,\n letterSpacing: style.letterSpacing,\n lineHeight: style.lineHeight,\n padding: style.padding,\n stroke: getFillGradientFillPattern(style.stroke, \"stroke\"),\n textBaseline: style.textBaseline,\n trim: style.trim,\n whiteSpace: style.whiteSpace,\n wordWrap: style.wordWrap,\n wordWrapWidth: style.wordWrapWidth,\n }\n}\n","import { CanvasEvent } from \"../classes\"\nimport CanvasBase from \"../classes/canvas/CanvasBase\"\nimport { CanvasEventNamesType } from \"../types\"\nimport { EventIdType } from \"../types/EventIdType\"\n\n/**\n * Canvas Event Register\n */\nexport const registeredEvents: { [name: EventIdType]: typeof CanvasEvent<CanvasEventNamesType> } = {}\n/**\n * Is a decorator that register a event in the game.\n * Is a required decorator for use the event in the game.\n * Thanks to this decoration the game has the possibility of updating the events to the latest modification and saving the game.\n * @param name is th identifier of the event, by default is the name of the class\n * @returns \n */\nexport default function eventDecorator(name?: EventIdType) {\n return function (target: typeof CanvasEvent<any>) {\n if (!name) {\n name = target.name\n }\n if (registeredEvents[name]) {\n console.info(`[Pixi'VN] Event ${name} already exists, it will be overwritten`)\n }\n target.prototype.id = name\n registeredEvents[name] = target\n }\n}\n\n/**\n * Get an event by the id.\n * @param eventId The id of the event.\n * @returns The event type.\n */\nexport function getEventTypeById<T = typeof CanvasEvent<CanvasBase<any>>>(eventId: EventIdType): T | undefined {\n try {\n let eventType = registeredEvents[eventId]\n if (!eventType) {\n console.error(`[Pixi'VN] Event ${eventId} not found`)\n return\n }\n new eventType()\n return eventType as T\n }\n catch (e) {\n console.error(`[Pixi'VN] Error while getting Event ${eventId}`, e)\n return\n }\n}\n\n/**\n * Get an event instance by the id.\n * @param eventId The id of the event.\n * @returns The event instance.\n */\nexport function getEventInstanceById<T = CanvasEvent<CanvasBase<any>>>(eventId: EventIdType): T | undefined {\n try {\n let eventType = registeredEvents[eventId]\n if (!eventType) {\n console.error(`[Pixi'VN] Event ${eventId} not found`)\n return\n }\n let event = new eventType()\n return event as T\n }\n catch (e) {\n console.error(`[Pixi'VN] Error while getting Event ${eventId}`, e)\n return\n }\n}\n","import { ContainerChild, ContainerEvents, EventEmitter, Sprite, SpriteOptions, Texture, TextureSourceLike } from \"pixi.js\";\nimport { getEventInstanceById, getEventTypeById } from \"../../decorators/EventDecorator\";\nimport { getTextureMemory } from \"../../functions/CanvasUtility\";\nimport { getTexture } from \"../../functions/TextureUtility\";\nimport ICanvasBaseMemory from \"../../interface/canvas/ICanvasBaseMemory\";\nimport ICanvasSpriteMemory, { ICanvasSpriteBaseMemory } from \"../../interface/canvas/ICanvasSpriteMemory\";\nimport { CanvasEventNamesType } from \"../../types\";\nimport { EventIdType } from \"../../types/EventIdType\";\nimport CanvasEvent from \"../CanvasEvent\";\nimport CanvasBase from \"./CanvasBase\";\nimport { getMemoryContainer, setMemoryContainer } from \"./CanvasContainer\";\n\nexport const CANVAS_SPRITE_ID = \"CanvasSprite\"\n\n/**\n * This class is a extension of the [PIXI.Sprite class](https://pixijs.com/8.x/examples/sprite/basic), it has the same properties and methods,\n * but it has the ability to be saved and loaded by the Pixi'VN library.\n * @example\n * ```typescript\n * const texture = await Assets.load('https://pixijs.com/assets/bunny.png');\n * const sprite = CanvasSprite.from(texture);\n *\n * sprite.anchor.set(0.5);\n * sprite.x = GameWindowManager.screen.width / 2;\n * sprite.y = GameWindowManager.screen.height / 2;\n *\n * sprite.eventMode = 'static';\n * sprite.cursor = 'pointer';\n * sprite.onEvent('pointerdown', EventTest);\n *\n * GameWindowManager.addCanvasElement(\"bunny\", sprite);\n * ```\n */\nexport default class CanvasSprite<Memory extends SpriteOptions & ICanvasBaseMemory = ICanvasSpriteMemory> extends Sprite implements CanvasBase<Memory | ICanvasSpriteMemory> {\n constructor(options?: SpriteOptions | Texture) {\n super(options)\n this.pixivnId = this.constructor.prototype.pixivnId || CANVAS_SPRITE_ID\n }\n pixivnId: string = CANVAS_SPRITE_ID\n get memory(): Memory | ICanvasSpriteMemory {\n return getMemorySprite(this)\n }\n set memory(value: ICanvasSpriteMemory) {\n setMemorySprite(this, value)\n }\n private _onEvents: { [name: CanvasEventNamesType]: EventIdType } = {}\n get onEvents() {\n return this._onEvents\n }\n /**\n * is same function as on(), but it keeps in memory the children.\n * @param event The event type, e.g., 'click', 'mousedown', 'mouseup', 'pointerdown', etc.\n * @param eventClass The class that extends CanvasEvent.\n * @returns \n * @example\n * ```typescript\n * \\@eventDecorator()\n * export class EventTest extends CanvasEvent<CanvasSprite> {\n * override fn(event: CanvasEventNamesType, sprite: CanvasSprite): void {\n * if (event === 'pointerdown') {\n * sprite.scale.x *= 1.25;\n * sprite.scale.y *= 1.25;\n * }\n * }\n * }\n * ```\n * \n * ```typescript\n * let sprite = addImage(\"alien\", 'https://pixijs.com/assets/eggHead.png')\n * await sprite.load()\n *\n * sprite.eventMode = 'static';\n * sprite.cursor = 'pointer';\n * sprite.onEvent('pointerdown', EventTest);\n *\n * GameWindowManager.addCanvasElement(\"bunny\", sprite);\n * ```\n */\n onEvent<T extends CanvasEventNamesType, T2 extends typeof CanvasEvent<typeof this>>(event: T, eventClass: T2) {\n let id = eventClass.prototype.id\n let instance = getEventInstanceById(id)\n this._onEvents[event] = id\n if (instance) {\n super.on(event, () => {\n (instance as CanvasEvent<CanvasBase<any>>).fn(event, this)\n })\n }\n return this\n }\n /**\n * on() does not keep in memory the event class, use onEvent() instead\n * @deprecated\n * @private\n * @param event \n * @param fn \n * @param context \n */\n override on<T extends keyof ContainerEvents<ContainerChild> | keyof { [K: symbol]: any;[K: {} & string]: any; }>(event: T, fn: (...args: EventEmitter.ArgumentMap<ContainerEvents<ContainerChild> & { [K: symbol]: any;[K: {} & string]: any; }>[Extract<T, keyof ContainerEvents<ContainerChild> | keyof { [K: symbol]: any;[K: {} & string]: any; }>]) => void, context?: any): this {\n return super.on(event, fn, context)\n }\n static override from(source: Texture | TextureSourceLike, skipCache?: boolean): CanvasSprite<any> {\n let sprite = Sprite.from(source, skipCache)\n let mySprite = new CanvasSprite()\n mySprite.texture = sprite.texture\n return mySprite\n }\n}\n\nexport function getMemorySprite<T extends CanvasSprite<any>>(element: T | CanvasSprite<any>): ICanvasSpriteMemory {\n let temp = getMemoryContainer(element)\n return {\n ...temp,\n pixivnId: element.pixivnId,\n textureImage: getTextureMemory((element as any).texture),\n anchor: { x: element.anchor.x, y: element.anchor.y },\n roundPixels: element.roundPixels,\n onEvents: element.onEvents,\n }\n}\n\nexport function setMemorySprite<Memory extends ICanvasSpriteBaseMemory>(element: CanvasSprite<any>, memory: Memory) {\n setMemoryContainer(element, memory)\n getTexture(memory.textureImage.image).then((texture) => {\n if (texture) {\n element.texture = texture\n }\n })\n if (memory.anchor) {\n if (typeof memory.anchor === \"number\") {\n element.anchor.set(memory.anchor, memory.anchor)\n }\n else {\n element.anchor.set(memory.anchor.x, memory.anchor.y)\n }\n }\n memory.roundPixels && (element.roundPixels = memory.roundPixels)\n for (let event in memory.onEvents) {\n let id = memory.onEvents[event]\n let instance = getEventTypeById(id)\n if (instance) {\n element.onEvent(event, instance)\n }\n }\n}\n","import { Sprite, SpriteOptions, Texture, TextureSourceLike } from \"pixi.js\";\nimport { addImage, loadImage, showWithDissolveTransition } from \"../../functions\";\nimport { getTexture } from \"../../functions/TextureUtility\";\nimport ICanvasImageMemory from \"../../interface/canvas/ICanvasImageMemory\";\nimport CanvasSprite, { getMemorySprite, setMemorySprite } from \"./CanvasSprite\";\n\nexport const CANVAS_IMAGE_ID = \"CanvasImage\"\n\n/**\n * This class is a extension of the CanvasSprite class, it has the same properties and methods,\n * but it has some features that make texture management easier.\n * You need to use CanvasImage.load() to show the image in the canvas.\n * This class is used for functions like {@link addImage}, {@link loadImage} and {@link showWithDissolveTransition}.\n * @example\n * ```typescript\n * let alien = new CanvasImage({\n * anchor: { x: 0.5, y: 0.5 },\n * x: 100,\n * y: 100,\n * }, 'https://pixijs.com/assets/eggHead.png')\n * await alien.load()\n * GameWindowManager.addCanvasElement(\"alien\", alien)\n * ```\n * @example\n * ```typescript\n * let alien = addImage(\"alien\", 'https://pixijs.com/assets/eggHead.png')\n * alien.anchor.set(0.5);\n * alien.x = 100\n * alien.y = 100\n * await alien.load()\n * ```\n */\nexport default class CanvasImage extends CanvasSprite<ICanvasImageMemory> {\n pixivnId: string = CANVAS_IMAGE_ID\n constructor(options?: SpriteOptions | Texture | undefined, imageLink?: string) {\n super(options)\n if (imageLink) {\n this.imageLink = imageLink\n }\n }\n override get memory(): ICanvasImageMemory {\n return {\n ...getMemorySprite(this),\n pixivnId: this.pixivnId,\n imageLink: this.imageLink,\n }\n }\n override set memory(memory: ICanvasImageMemory) {\n setMemorySprite(this, memory)\n this.imageLink = memory.imageLink\n }\n imageLink: string = \"\"\n static override from(source: Texture | TextureSourceLike, skipCache?: boolean) {\n let sprite = Sprite.from(source, skipCache)\n let mySprite = new CanvasImage()\n mySprite.texture = sprite.texture\n return mySprite\n }\n /** \n * Load the image from the link and set the texture of the sprite.\n * @param image The link of the image. If it is not set, it will use the imageLink property.\n * @returns A promise that resolves when the image is loaded.\n */\n async load(image?: string) {\n if (!image) {\n image = this.imageLink\n }\n return getTexture(this.imageLink)\n .then((texture) => {\n if (texture) {\n this.texture = texture\n }\n })\n .catch((e) => {\n console.error(\"[Pixi'VN] Error into CanvasImage.load()\", e)\n })\n }\n}\n","import { ContainerChild, ContainerEvents, EventEmitter, Text, TextOptions } from \"pixi.js\";\nimport { getEventInstanceById, getEventTypeById } from \"../../decorators/EventDecorator\";\nimport { getTextStyle } from \"../../functions/TextureUtility\";\nimport ICanvasTextMemory from \"../../interface/canvas/ICanvasTextTextMemory\";\nimport { CanvasEventNamesType } from \"../../types\";\nimport { EventIdType } from \"../../types/EventIdType\";\nimport CanvasEvent from \"../CanvasEvent\";\nimport CanvasBase from \"./CanvasBase\";\nimport { getMemoryContainer, setMemoryContainer } from \"./CanvasContainer\";\n\nexport const CANVAS_TEXT_ID = \"CanvasText\"\n\n/**\n * This class is a extension of the [PIXI.Text class](https://pixijs.com/8.x/examples/text/pixi-text), it has the same properties and methods,\n * but it has the ability to be saved and loaded by the Pixi'VN library.\n * @example\n * ```typescript\n * const text = new CanvasText();\n * text.text = \"Hello World\"\n * GameWindowManager.addCanvasElement(\"text\", text);\n * ```\n */\nexport default class CanvasText extends Text implements CanvasBase<ICanvasTextMemory> {\n constructor(options?: TextOptions) {\n super(options)\n this.pixivnId = this.constructor.prototype.pixivnId || CANVAS_TEXT_ID\n }\n pixivnId: string = CANVAS_TEXT_ID\n get memory(): ICanvasTextMemory {\n return getMemoryText(this)\n }\n set memory(value: ICanvasTextMemory) {\n setMemoryText(this, value)\n }\n private _onEvents: { [name: CanvasEventNamesType]: EventIdType } = {}\n get onEvents() {\n return this._onEvents\n }\n /**\n * is same function as on(), but it keeps in memory the children.\n * @param event The event type, e.g., 'click', 'mousedown', 'mouseup', 'pointerdown', etc.\n * @param eventClass The class that extends CanvasEvent.\n * @returns \n * @example\n * ```typescript\n * \\@eventDecorator()\n * export class EventTest extends CanvasEvent<CanvasText> {\n * override fn(event: CanvasEventNamesType, text: CanvasText): void {\n * if (event === 'pointerdown') {\n * text.scale.x *= 1.25;\n * text.scale.y *= 1.25;\n * }\n * }\n * }\n * ```\n * \n * ```typescript\n * const text = new CanvasText();\n * text.text = \"Hello World\"\n *\n * text.eventMode = 'static';\n * text.cursor = 'pointer';\n * text.onEvent('pointerdown', EventTest);\n *\n * GameWindowManager.addCanvasElement(\"text\", text);\n * ```\n */\n onEvent<T extends CanvasEventNamesType, T2 extends typeof CanvasEvent<typeof this>>(event: T, eventClass: T2) {\n let id = eventClass.prototype.id\n let instance = getEventInstanceById(id)\n this._onEvents[event] = id\n if (instance) {\n super.on(event, () => {\n (instance as CanvasEvent<CanvasBase<any>>).fn(event, this)\n })\n }\n return this\n }\n /**\n * on() does not keep in memory the event class, use onEvent() instead\n * @deprecated\n * @private\n * @param event \n * @param fn \n * @param context \n */\n override on<T extends keyof ContainerEvents<ContainerChild> | keyof { [K: symbol]: any;[K: {} & string]: any; }>(event: T, fn: (...args: EventEmitter.ArgumentMap<ContainerEvents<ContainerChild> & { [K: symbol]: any;[K: {} & string]: any; }>[Extract<T, keyof ContainerEvents<ContainerChild> | keyof { [K: symbol]: any;[K: {} & string]: any; }>]) => void, context?: any): this {\n return super.on(event, fn, context)\n }\n}\n\nexport function getMemoryText<T extends CanvasText>(element: T | CanvasText): ICanvasTextMemory {\n let temp = getMemoryContainer(element)\n return {\n ...temp,\n pixivnId: element.pixivnId,\n anchor: { x: element.anchor.x, y: element.anchor.y },\n text: element.text,\n resolution: element.resolution,\n style: getTextStyle(element.style),\n roundPixels: element.roundPixels,\n onEvents: element.onEvents,\n }\n}\n\nexport function setMemoryText(element: CanvasText, memory: ICanvasTextMemory) {\n setMemoryContainer(element, memory)\n if (memory.anchor) {\n if (typeof memory.anchor === \"number\") {\n element.anchor.set(memory.anchor, memory.anchor)\n }\n else {\n element.anchor.set(memory.anchor.x, memory.anchor.y)\n }\n }\n memory.text && (element.text = memory.text)\n memory.resolution && (element.resolution = memory.resolution)\n memory.style && (element.style = memory.style)\n memory.roundPixels && (element.roundPixels = memory.roundPixels)\n for (let event in memory.onEvents) {\n let id = memory.onEvents[event]\n let instance = getEventTypeById(id)\n if (instance) {\n element.onEvent(event as CanvasEventNamesType, instance)\n }\n }\n}\n","import { CanvasContainer, CanvasImage, CanvasSprite, CanvasText } from \"../classes/canvas\"\nimport CanvasBase from \"../classes/canvas/CanvasBase\"\nimport { CANVAS_CONTAINER_ID } from \"../classes/canvas/CanvasContainer\"\nimport { CANVAS_IMAGE_ID } from \"../classes/canvas/CanvasImage\"\nimport { CANVAS_SPRITE_ID } from \"../classes/canvas/CanvasSprite\"\nimport { CANVAS_TEXT_ID } from \"../classes/canvas/CanvasText\"\nimport { CanvasElementTagType } from \"../types/CanvasElementTagType\"\n\nexport const registeredCanvasElement: { [name: CanvasElementTagType]: typeof CanvasBase<any> } = {}\n/**\n * Is a decorator that register a canvas element in the game.\n * @param name Name of the canvas element, by default it will use the class name. If the name is already registered, it will show a warning\n * @returns \n */\nexport default function canvasElementDecorator(name?: CanvasElementTagType) {\n return function (target: typeof CanvasBase<any>) {\n if (!name) {\n name = target.name\n }\n if (registeredCanvasElement[name]) {\n console.warn(`[Pixi'VN] CanvasElement ${name} already registered`)\n }\n target.prototype.pixivnId = name\n registeredCanvasElement[name] = target\n }\n}\n\nexport function getCanvasElementTypeById<T extends typeof CanvasBase<any>>(canvasId: CanvasElementTagType): T | undefined {\n try {\n let eventType = registeredCanvasElement[canvasId]\n if (!eventType) {\n console.error(`[Pixi'VN] CanvasElement ${canvasId} not found`)\n return\n }\n new eventType()\n return eventType as T\n }\n catch (e) {\n console.error(`[Pixi'VN] Error while getting CanvasElement ${canvasId}`, e)\n return\n }\n}\n\nexport function getCanvasElementInstanceById<T extends CanvasBase<any>>(canvasId: CanvasElementTagType): T | undefined {\n try {\n let eventType = registeredCanvasElement[canvasId]\n if (!eventType) {\n if (canvasId === CANVAS_CONTAINER_ID) {\n eventType = CanvasContainer\n }\n else if (canvasId === CANVAS_IMAGE_ID) {\n eventType = CanvasImage\n }\n else if (canvasId === CANVAS_SPRITE_ID) {\n eventType = CanvasSprite\n }\n else if (canvasId === CANVAS_TEXT_ID) {\n eventType = CanvasText\n }\n }\n\n if (!eventType) {\n console.error(`[Pixi'VN] CanvasElement ${canvasId} not found`)\n return\n }\n let canvasElement = new eventType()\n return canvasElement as T\n }\n catch (e) {\n console.error(`[Pixi'VN] Error while getting CanvasElement ${canvasId}`, e)\n return\n }\n}\n","import { UPDATE_PRIORITY } from \"pixi.js\"\nimport TickerBase, { TickerArgsType } from \"../classes/ticker/TickerBase\"\nimport { TickerIdType } from \"../types/TickerIdType\"\n\n/**\n * A dictionary that contains all tickers registered and avvailable to be used.\n */\nexport const registeredTickers: { [name: TickerIdType]: typeof TickerBase } = {}\n/**\n * Is a decorator that register a ticker in the game.\n * Is a required decorator for use the ticker in the game.\n * Thanks to this decoration the game has the possibility of updating the tickers to the latest modification and saving the game.\n * @param name is th identifier of the label, by default is the name of the class\n * @returns \n */\nexport default function tickerDecorator(name?: TickerIdType) {\n return function (target: typeof TickerBase<any>) {\n if (!name) {\n name = target.name\n }\n if (registeredTickers[name]) {\n console.info(`[Pixi'VN] Ticker ${name} already exists, it will be overwritten`)\n }\n target.prototype.id = name\n registeredTickers[name] = target\n }\n}\n\n/**\n * Get a ticker instance by the id.\n * @param tickerId The id of the ticker.\n * @param args The arguments that you want to pass to the ticker.\n * @param duration The duration of the ticker. If is undefined, the ticker will be called every frame.\n * @param priority The priority of the ticker. If is undefined, the priority will be UPDATE_PRIORITY.NORMAL.\n * @returns The instance of the ticker\n */\nexport function geTickerInstanceById<TArgs extends TickerArgsType>(tickerId: TickerIdType, args: TArgs, duration?: number, priority?: UPDATE_PRIORITY): TickerBase<TArgs> | undefined {\n try {\n let ticker = registeredTickers[tickerId]\n if (!ticker) {\n console.error(`[Pixi'VN] Ticker ${tickerId} not found`)\n return\n }\n return new ticker(args, duration, priority)\n }\n catch (e) {\n console.error(`[Pixi'VN] Error while getting Ticker ${tickerId}`, e)\n return\n }\n}\n","import { Ticker, UPDATE_PRIORITY } from \"pixi.js\"\nimport { tickerDecorator } from \"../../decorators\"\nimport { geTickerInstanceById } from \"../../decorators/TickerDecorator\"\nimport ITicker from \"../../interface/ITicker\"\nimport { GameWindowManager } from \"../../managers\"\nimport { StorageElementType } from \"../../types/StorageElementType\"\nimport { TickerIdType } from \"../../types/TickerIdType\"\n\nexport type TickerArgsType = { [id: string]: StorageElementType } | {\n tagToRemoveAfter?: string[] | string,\n [id: string]: StorageElementType\n}[]\n\n/**\n * A class is used to create a ticker element to add into a Pixi Application.\n * You can use GameWindowManager.addTicker() to add this element into the application.\n * This class should be extended and the fn method should be overridden.\n * You must use the {@link tickerDecorator} to register the ticker in the game.\n * In Ren'Py is a transform.\n * @example\n * ```typescript\n * \\@tickerDecorator() // this is equivalent to tickerDecorator(\"RotateTicker\")\n * export class RotateTicker extends TickerBase<{ speed?: number }> {\n * override fn(\n * t: Ticker, // the ticker that is calling this method\n * args: { // the arguments that you passed when you added the ticker\n * speed?: number,\n * },\n * tags: string[], // the tags of the canvas elements that are connected to this ticker\n * tickerId: string, // the id of the ticker. You can use this to get the ticker from the GameWindowManager.currentTickers\n * ): void {\n * let speed = args.speed === undefined ? 0.1 : args.speed\n * tags.forEach((tag) => {\n * let element = GameWindowManager.getCanvasElement(tag)\n * if (element && element instanceof Container) {\n * if (clockwise)\n * element.rotation += speed * t.deltaTime\n * else\n * element.rotation -= speed * t.deltaTime\n * }\n * })\n * }\n * }\n * ```\n */\nexport default class TickerBase<TArgs extends TickerArgsType> implements ITicker<TArgs> {\n /**\n * @param args The arguments that you want to pass to the ticker.\n * @param duration The duration of the ticker in seconds. If is undefined, the step will end only when the animation is finished (if the animation doesn't have a goal to reach then it won't finish). @default undefined\n * @param priority The priority of the ticker. @default UPDATE_PRIORITY.NORMAL\n */\n constructor(args: TArgs, duration?: number, priority?: UPDATE_PRIORITY) {\n this.args = args\n this.duration = duration\n this.priority = priority\n this.id = this.constructor.prototype.id\n }\n /**\n * Get the id of the ticker. This variable is used in the system to get the ticker by id, {@link geTickerInstanceById}\n */\n id: TickerIdType = 'ticker_id_not_set'\n args: TArgs\n duration?: number\n priority?: UPDATE_PRIORITY\n /**\n * The method that will be called every frame.\n * This method should be overridden and you can use GameWindowManager.addCanvasElement() to get the canvas element of the canvas, and edit them.\n * @param _ticker The ticker that is calling this method\n * @param _args The arguments that you passed when you added the ticker\n * @param _tags The tags of the canvas elements that are connected to this ticker\n * @param _tickerId The id of the ticker. You can use this to get the ticker from the {@link GameWindowManager.currentTickers}\n */\n fn(_ticker: Ticker, _args: TArgs, _tags: string | string[], _tickerId: string): void { throw new Error(\"[Pixi'VN] The method TickerBase.fn() must be overridden\") }\n}\n","import { Container, Sprite, Ticker } from \"pixi.js\";\nimport { tickerDecorator } from \"../../decorators\";\nimport { GameWindowManager } from \"../../managers\";\nimport { FadeAlphaTickerProps } from \"../../types/ticker/FadeAlphaTickerProps\";\nimport TickerBase from \"./TickerBase\";\n\n/**\n * A ticker that fades the alpha of the canvas element of the canvas.\n * This ticker can be used on all canvas elements that extend the {@link Container} class.\n * @example\n * ```typescript\n * let bunny = addImage(\"bunny1\", \"https://pixijs.com/assets/eggHead.png\")\n * await bunny.load()\n * GameWindowManager.addCanvasElement(\"bunny\", bunny);\n * // ...\n * const ticker = new FadeAlphaTicker({\n * duration: 4, // 4 seconds\n * type: \"hide\",\n * }),\n * GameWindowManager.addTicker(\"bunny\", ticker)\n * ```\n */\n@tickerDecorator()\nexport default class FadeAlphaTicker extends TickerBase<FadeAlphaTickerProps> {\n override fn(\n ticker: Ticker,\n args: FadeAlphaTickerProps,\n tags: string[],\n tickerId: string\n ): void {\n let type = args.type === undefined ? \"hide\" : args.type\n let duration = args.duration === undefined ? 1 : args.duration\n let speed = 1 / (duration * 60)\n let limit = args.limit === undefined ? type === \"hide\" ? 0 : 1 : args.limit\n let tagToRemoveAfter = args.tagToRemoveAfter || []\n if (typeof tagToRemoveAfter === \"string\") {\n tagToRemoveAfter = [tagToRemoveAfter]\n }\n if (type === \"hide\" && limit < 0) {\n limit = 0\n }\n if (type === \"show\" && limit > 1) {\n limit = 1\n }\n tags\n .filter((tag) => {\n let element = GameWindowManager.getCanvasElement(tag)\n if (args.startOnlyIfHaveTexture) {\n if (element && element instanceof Sprite && element.texture?.label == \"EMPTY\") {\n return false\n }\n }\n return true\n })\n .forEach((tag) => {\n let element = GameWindowManager.getCanvasElement(tag)\n if (element && element instanceof Container) {\n if (type === \"show\" && element.alpha < limit) {\n element.alpha += speed * ticker.deltaTime\n }\n else if (type === \"hide\" && element.alpha > limit) {\n element.alpha -= speed * ticker.deltaTime\n }\n if (type === \"show\" && element.alpha >= limit) {\n element.alpha = limit\n GameWindowManager.onEndOfTicker(tag, this, tagToRemoveAfter, tickerId)\n }\n else if (type === \"hide\" && element.alpha <= limit) {\n element.alpha = limit\n GameWindowManager.onEndOfTicker(tag, this, tagToRemoveAfter, tickerId)\n }\n }\n })\n }\n}\n","import { ITickerProgrationExponential, ITickerProgrationLinear, TickerProgrationType } from \"../interface/TickerProgrationType\";\n\n/**\n * This function updates the progression of the ticker.\n * For example, if the speed of the ticker is 0.1 and the progression is 0.01, then the speed will be 0.11.\n * @param args The arguments that are passed to the ticker\n * @param propertyName The property name that will be updated \n * @param progression The progression of the ticker\n * @param valueConvert The function that converts the amount and limit of progression\n * @returns \n */\nexport function updateTickerProgression<T extends {}>(args: T, propertyName: keyof T, progression: TickerProgrationType, valueConvert?: (value: number) => number) {\n let limit = valueConvert && progression.limit ? valueConvert(progression.limit) : progression.limit\n if (args[propertyName] === undefined\n || !progression\n || args[propertyName] === limit\n ) {\n return\n }\n if (typeof args[propertyName] === \"number\") {\n if (progression.type === \"linear\") {\n (args as any)[propertyName] = getLinearProgression(args[propertyName], progression)\n }\n else if (progression.type === \"exponential\") {\n (args as any)[propertyName] = getExponentialProgression(args[propertyName], progression)\n }\n }\n // args[propertyName] is { x: number, y: number }\n else if (\n args[propertyName] !== undefined &&\n typeof args[propertyName] === \"object\" &&\n (args as any)[propertyName].haveOwnProperty(\"x\") &&\n (args as any)[propertyName].haveOwnProperty(\"y\") &&\n typeof (args as any)[propertyName].x === \"number\" &&\n typeof (args as any)[propertyName].y === \"number\"\n ) {\n if (progression.type === \"linear\") {\n (args as any)[propertyName].x = getLinearProgression((args as any)[propertyName].x, progression);\n (args as any)[propertyName].y = getLinearProgression((args as any)[propertyName].y, progression)\n }\n else if (progression.type === \"exponential\") {\n (args as any)[propertyName].x = getExponentialProgression((args as any)[propertyName].x, progression);\n (args as any)[propertyName].y = getExponentialProgression((args as any)[propertyName].y, progression)\n }\n }\n}\n\nfunction getLinearProgression(number: number, progression: ITickerProgrationLinear, valueConvert?: (value: number) => number): number {\n let limit = valueConvert && progression.limit ? valueConvert(progression.limit) : progression.limit\n let amt = valueConvert ? valueConvert(progression.amt) : progression.amt\n if (limit !== undefined) {\n if (number > limit && amt > 0) {\n return limit\n }\n else if (number < limit && amt < 0) {\n return limit\n }\n }\n return number + amt\n}\n\nfunction getExponentialProgression(number: number, progression: ITickerProgrationExponential, valueConvert?: (value: number) => number): number {\n let limit = valueConvert && progression.limit ? valueConvert(progression.limit) : progression.limit\n if (limit !== undefined) {\n if (number > limit && progression.percentage > 0) {\n return limit\n }\n else if (number < limit && progression.percentage < 0) {\n return limit\n }\n }\n return number + number * progression.percentage\n}\n","import { Container, Sprite, Ticker } from \"pixi.js\";\nimport { tickerDecorator } from \"../../decorators\";\nimport { updateTickerProgression } from \"../../functions/TickerUtility\";\nimport { GameWindowManager } from \"../../managers\";\nimport { MoveTickerProps } from \"../../types/ticker\";\nimport TickerBase from \"./TickerBase\";\n\n/**\n * A ticker that moves the canvas element of the canvas.\n * This ticker can be used on all canvas elements that extend the {@link Container} class.\n * @example\n * ```typescript\n * let alien = addImage(\"alien\", 'https://pixijs.com/assets/eggHead.png')\n * GameWindowManager.addCanvasElement(\"alien\", alien);\n * const ticker = new MoveTicker({\n * speed: 0.1,\n * destination: { x: 100, y: 100 },\n * }),\n * ```\n */\n@tickerDecorator()\nexport default class MoveTicker extends TickerBase<MoveTickerProps> {\n override fn(\n ticker: Ticker,\n args: MoveTickerProps,\n tags: string[],\n tickerId: string\n ): void {\n let xSpeed = 1\n let ySpeed = 1\n if (args.speed) {\n if (typeof args.speed === \"number\") {\n xSpeed = this.speedConvert(args.speed)\n ySpeed = this.speedConvert(args.speed)\n }\n else {\n xSpeed = this.speedConvert(args.speed.x)\n ySpeed = this.speedConvert(args.speed.y)\n }\n }\n let destination = args.destination\n let tagToRemoveAfter = args.tagToRemoveAfter || []\n if (typeof tagToRemoveAfter === \"string\") {\n tagToRemoveAfter = [tagToRemoveAfter]\n }\n tags\n .filter((tag) => {\n let element = GameWindowManager.getCanvasElement(tag)\n if (args.startOnlyIfHaveTexture) {\n if (element && element instanceof Sprite && element.texture?.label == \"EMPTY\") {\n return false\n }\n }\n return true\n })\n .forEach((tag) => {\n let element = GameWindowManager.getCanvasElement(tag)\n if (element && element instanceof Container) {\n let xDistance = (destination.x - element.x) > 0 ? 1 : -1\n if (xDistance != 0) {\n element.x += xDistance * xSpeed * ticker.deltaTime\n let newDistance = destination.x - element.x\n if (xDistance < 0 && newDistance > 0 ||\n xDistance > 0 && newDistance < 0\n ) {\n element.x = destination.x\n }\n }\n let yDistance = (destination.y - element.y) > 0 ? 1 : -1\n if (yDistance != 0) {\n element.y += yDistance * ySpeed * ticker.deltaTime\n let newDistance = destination.y - element.y\n if (yDistance < 0 && newDistance > 0 ||\n yDistance > 0 && newDistance < 0\n ) {\n element.y = destination.y\n }\n }\n if (element.x == destination.x && element.y == destination.y) {\n GameWindowManager.onEndOfTicker(tag, this, tagToRemoveAfter, tickerId)\n }\n }\n })\n if (args.speedProgression)\n updateTickerProgression(args, \"speed\", args.speedProgression, this.speedConvert)\n }\n private speedConvert(speed: number): number {\n return speed / 6\n }\n}\n","import { Container, Sprite, Ticker } from \"pixi.js\";\nimport { tickerDecorator } from \"../../decorators\";\nimport { updateTickerProgression } from \"../../functions/TickerUtility\";\nimport { GameWindowManager } from \"../../managers\";\nimport { RotateTickerProps } from \"../../types/ticker/RotateTickerProps\";\nimport TickerBase from \"./TickerBase\";\n\n/**\n * A ticker that rotates the canvas element of the canvas. For centre rotation, set the anchor of the canvas element to 0.5.\n * This ticker can be used on all canvas elements that extend the {@link Container} class.\n * @example\n * ```typescript\n * let alien = addImage(\"alien\", 'https://pixijs.com/assets/eggHead.png')\n * alien.anchor.set(0.5);\n * GameWindowManager.addCanvasElement(\"alien\", alien);\n * const ticker = new RotateTicker({\n * speed: 0.1,\n * clockwise: true,\n * }),\n * GameWindowManager.addTicker(\"alien\", ticker)\n * ```\n */\n@tickerDecorator()\nexport default class RotateTicker extends TickerBase<RotateTickerProps> {\n override fn(\n ticker: Ticker,\n args: RotateTickerProps,\n tags: string[],\n tickerId: string\n ): void {\n let speed = this.speedConvert(args.speed === undefined ? 1 : args.speed)\n let clockwise = args.clockwise === undefined ? true : args.clockwise\n let tagToRemoveAfter = args.tagToRemoveAfter || []\n if (typeof tagToRemoveAfter === \"string\") {\n tagToRemoveAfter = [tagToRemoveAfter]\n }\n tags\n .filter((tag) => {\n let element = GameWindowManager.getCanvasElement(tag)\n if (args.startOnlyIfHaveTexture) {\n if (element && element instanceof Sprite && element.texture?.label == \"EMPTY\") {\n return false\n }\n }\n return true\n })\n .forEach((tag) => {\n let element = GameWindowManager.getCanvasElement(tag)\n if (element && element instanceof Container) {\n if (clockwise)\n element.rotation += speed * ticker.deltaTime\n else\n element.rotation -= speed * ticker.deltaTime\n if (speed < 0.00001 && !(args.speedProgression && args.speedProgression.type == \"linear\" && args.speedProgression.amt != 0)) {\n GameWindowManager.onEndOfTicker(tag, this, tagToRemoveAfter, tickerId)\n }\n }\n })\n if (args.speedProgression)\n updateTickerProgression(args, \"speed\", args.speedProgression, this.speedConvert)\n }\n private speedConvert(speed: number): number {\n return speed / 60\n }\n}\n","import { Container, ContainerChild, Sprite, Ticker, UPDATE_PRIORITY } from \"pixi.js\";\nimport { tickerDecorator } from \"../../decorators\";\nimport { updateTickerProgression } from \"../../functions/TickerUtility\";\nimport { GameWindowManager } from \"../../managers\";\nimport { ZoomTickerProps } from \"../../types/ticker\";\nimport TickerBase from \"./TickerBase\";\n\n/**\n * A ticker that zooms the canvas element of the canvas.\n * This ticker can be used on all canvas elements that extend the {@link Container} class.\n * @example\n * ```typescript\n * let alien = addImage(\"alien\", 'https://pixijs.com/assets/eggHead.png')\n * alien.anchor.set(0.5);\n * GameWindowManager.addCanvasElement(\"alien\", alien);\n * const ticker = new ZoomTicker({\n * speed: 0.1,\n * }),\n * GameWindowManager.addTicker(\"alien\", ticker)\n * ```\n */\n@tickerDecorator()\nexport default class ZoomTicker extends TickerBase<ZoomTickerProps> {\n override fn(\n ticker: Ticker,\n args: ZoomTickerProps,\n tags: string[],\n tickerId: string\n ): void {\n let xSpeed = 0.1\n let ySpeed = 0.1\n if (args.speed) {\n if (typeof args.speed === \"number\") {\n xSpeed = this.speedConvert(args.speed)\n ySpeed = this.speedConvert(args.speed)\n }\n else {\n xSpeed = this.speedConvert(args.speed.x)\n ySpeed = this.speedConvert(args.speed.y)\n }\n }\n let tagToRemoveAfter = args.tagToRemoveAfter || []\n if (typeof tagToRemoveAfter === \"string\") {\n tagToRemoveAfter = [tagToRemoveAfter]\n }\n let type = args.type || \"zoom\"\n let xLimit = type === \"zoom\" ? Infinity : 0\n let yLimit = type === \"zoom\" ? Infinity : 0\n if (args.limit) {\n if (typeof args.limit === \"number\") {\n xLimit = args.limit\n yLimit = args.limit\n }\n else {\n xLimit = args.limit.x\n yLimit = args.limit.y\n }\n }\n tags\n .filter((tag) => {\n let element = GameWindowManager.getCanvasElement(tag)\n if (args.startOnlyIfHaveTexture) {\n if (element && element instanceof Sprite && element.texture?.label == \"EMPTY\") {\n return false\n }\n }\n return true\n })\n .forEach((tag) => {\n let element = GameWindowManager.getCanvasElement(tag)\n if (element && element instanceof Container) {\n if (\n type === \"zoom\"\n && (element.scale.x < xLimit || element.scale.y < yLimit)\n ) {\n element.scale.x += xSpeed * ticker.deltaTime\n element.scale.y += ySpeed * ticker.deltaTime\n }\n else if (\n type === \"unzoom\"\n && (element.scale.x > xLimit || element.scale.y > yLimit)\n ) {\n element.scale.x -= xSpeed * ticker.deltaTime\n element.scale.y -= ySpeed * ticker.deltaTime\n }\n if (type === \"zoom\") {\n if (element.scale.x > xLimit) {\n element.scale.x = xLimit\n }\n if (element.scale.y > yLimit) {\n element.scale.y = yLimit\n }\n if (element.scale.x >= xLimit && element.scale.y >= yLimit) {\n element.scale.x = xLimit\n element.scale.y = yLimit\n this.onEndOfTicker(tag, tickerId, element, tagToRemoveAfter)\n }\n }\n else if (type === \"unzoom\") {\n if (element.scale.x < xLimit) {\n element.scale.x = xLimit\n }\n if (element.scale.y < yLimit) {\n element.scale.y = yLimit\n }\n if (element.scale.x <= xLimit && element.scale.y <= yLimit) {\n element.scale.x = xLimit\n element.scale.y = yLimit\n this.onEndOfTicker(tag, tickerId, element, tagToRemoveAfter)\n }\n }\n if (xSpeed < 0.00001 && ySpeed < 0.00001 && !(args.speedProgression && args.speedProgression.type == \"linear\" && args.speedProgression.amt != 0)) {\n this.onEndOfTicker(tag, tickerId, element, tagToRemoveAfter)\n }\n }\n })\n if (args.speedProgression)\n updateTickerProgression(args, \"speed\", args.speedProgression, this.speedConvert)\n }\n private speedConvert(speed: number): number {\n return speed / 60\n }\n\n onEndOfTicker<T extends Container = Container>(\n tag: string,\n tickerId: string,\n _element: T,\n tagToRemoveAfter: string[] | string,\n ): void {\n GameWindowManager.onEndOfTicker(tag, this, tagToRemoveAfter, tickerId)\n }\n}\n\n\nexport class ZoomInOutTicker extends ZoomTicker {\n constructor(props: ZoomTickerProps, duration?: number, priority?: UPDATE_PRIORITY) {\n super(props, duration, priority)\n }\n override onEndOfTicker<T extends Container = Container<ContainerChild>>(tag: string, tickerId: string, element: T, tagToRemoveAfter: string[] | string): void {\n if (element.children.length > 0) {\n let elementChild = element.children[0]\n GameWindowManager.addCanvasElement(tag, elementChild as any)\n }\n super.onEndOfTicker(tag, tickerId, element, tagToRemoveAfter)\n }\n}\n","import { PauseType, RepeatType } from \"./types\"\n\nexport const PIXIVN_VERSION = '0.6.8'\nexport const Repeat: RepeatType = \"repeat\"\n/**\n * Pause the tickers for a duration.\n * @param duration Duration in seconds\n * @returns The pause object\n */\nexport function Pause(duration: number): PauseType {\n return {\n type: \"pause\",\n duration: duration,\n }\n}\n","import { GameStorageManager } from \"../managers\"\n\n/**\n * StoredClassModel is a abstract class that contains the methods to store a class in the game.\n * I suggest you extend this class to create your own stored class.\n * @example\n * ```typescript\n * export class CharacterBaseModel extends StoredClassModel implements CharacterBaseModelProps {\n * constructor(id: string, props: CharacterBaseModelProps) {\n * super(\"___character___\", id)\n * this.defaultName = props.name\n * this.defaultSurname = props.surname\n * }\n * private defaultName: string = \"\"\n * get name(): string {\n * return this.getStorageProperty<string>(\"name\") || this.defaultName\n * }\n * set name(value: string) {\n * this.setStorageProperty<string>(\"name\", value)\n * }\n * private defaultSurname?: string\n * get surname(): string | undefined {\n * return this.getStorageProperty<string>(\"surname\") || this.defaultSurname\n * }\n * set surname(value: string | undefined) {\n * this.setStorageProperty<string>(\"surname\", value)\n * }\n * }\n * ```\n */\nexport default class StoredClassModel {\n /**\n * @param categoryId The id of the category. For example if you are storing a character class, you can use \"characters\" as categoryId. so all instances of the character class will be stored in the \"characters\" category.\n * @param id The id of instance of the class. This id must be unique for the category.\n */\n constructor(categoryId: string, id: string) {\n this.categoryId = categoryId\n this._id = id\n }\n private _id: string\n /**\n * Is id of the stored class. is unique for this class.\n */\n get id(): string {\n return this._id\n }\n private categoryId: string\n /**\n * Update a property in the storage.\n * @param propertyName The name of the property to set.\n * @param value The value to set. If is undefined, the property will be removed from the storage.\n */\n protected setStorageProperty<T>(propertyName: string, value: T | undefined): void {\n let storage = GameStorageManager.getVariable<any>(this.categoryId)\n if (!storage) {\n storage = {}\n }\n // if storage not have a key with the id\n if (!storage.hasOwnProperty(this.id)) {\n storage[this.id] = {}\n }\n\n if (value === undefined || value === null) {\n if (storage[this.id].hasOwnProperty(propertyName)) {\n delete storage[this.id][propertyName]\n }\n }\n else {\n storage[this.id] = { ...storage[this.id], [propertyName]: value }\n }\n\n if (Object.keys(storage[this.id]).length === 0) {\n delete storage[this.id]\n }\n\n GameStorageManager.setVariable(this.categoryId, storage)\n }\n /**\n * Get a property from the storage.\n * @param propertyName The name of the property to get.\n * @returns The value of the property. If the property is not found, returns undefined.\n */\n protected getStorageProperty<T>(propertyName: string): T | undefined {\n let storage = GameStorageManager.getVariable<any>(this.categoryId)\n if (storage && storage.hasOwnProperty(this.id) && storage[this.id].hasOwnProperty(propertyName)) {\n return storage[this.id][propertyName]\n }\n return undefined\n }\n}\n","/**\n * This function is used to create a deep copy of the element\n * @param element The element to be copied\n * @returns The copied element\n */\nexport function createExportableElement<T>(element: T): T {\n try {\n let elementString = JSON.stringify(element)\n return JSON.parse(elementString)\n }\n catch (e) {\n console.error(\"[Pixi'VN] Error creating exportable element\", e)\n throw new Error(\"[Pixi'VN] Error creating exportable element\")\n }\n}\n","import { createExportableElement } from \"../functions/ExportUtility\"\nimport { ExportedStorage } from \"../interface/export\"\nimport { StorageElementType } from \"../types/StorageElementType\"\n\nexport default class GameStorageManager {\n private static storage: { [key: string]: StorageElementType } = {}\n private constructor() { }\n public static get keysSystem() {\n return {\n CURRENT_DIALOGUE_MEMORY_KEY: \"___current_dialogue_memory___\",\n LAST_DIALOGUE_ADDED_IN_STEP_MEMORY_KEY: \"___last_dialogue_added_in_step_memory___\",\n CURRENT_MENU_OPTIONS_MEMORY_KEY: \"___current_menu_options_memory___\",\n LAST_MENU_OPTIONS_ADDED_IN_STEP_MEMORY_KEY: \"___last_menu_options_added_in_step_memory___\",\n CHARACTER_CATEGORY_KEY: \"___character___\",\n FLAGS_CATEGORY_KEY: \"___flags___\",\n }\n }\n /**\n * Set a variable in the storage\n * @param key The key of the variable\n * @param value The value of the variable. If undefined, the variable will be removed\n * @returns\n */\n public static setVariable(key: string, value: StorageElementType) {\n key = key.toLowerCase()\n if (value === undefined || value === null) {\n if (GameStorageManager.storage.hasOwnProperty(key)) {\n delete GameStorageManager.storage[key]\n }\n return\n }\n GameStorageManager.storage[key] = value\n }\n /**\n * Get a variable from the storage\n * @param key The key of the variable\n * @returns The value of the variable. If the variable does not exist, it will return undefined\n */\n public static getVariable<T extends StorageElementType>(key: string): T | undefined {\n key = key.toLowerCase()\n if (GameStorageManager.storage.hasOwnProperty(key)) {\n return GameStorageManager.storage[key] as T\n }\n return undefined\n }\n /**\n * Remove a variable from the storage\n * @param key The key of the variable\n * @returns\n */\n public static removeVariable(key: string) {\n key = key.toLowerCase()\n if (GameStorageManager.storage.hasOwnProperty(key)) {\n delete GameStorageManager.storage[key]\n }\n }\n /**\n * Clear the storage and the oidsUsed\n * @returns\n */\n public static clear() {\n GameStorageManager.storage = {}\n }\n public static exportJson(): string {\n return JSON.stringify(this.export())\n }\n public static export(): ExportedStorage {\n return createExportableElement(GameStorageManager.storage)\n }\n public static importJson(dataString: string) {\n GameStorageManager.import(JSON.parse(dataString))\n }\n public static import(data: object) {\n GameStorageManager.clear()\n try {\n if (data) {\n GameStorageManager.storage = (data as ExportedStorage)\n }\n else {\n console.warn(\"[Pixi'VN] No storage data found\")\n }\n }\n catch (e) {\n console.error(\"[Pixi'VN] Error importing data\", e)\n }\n }\n}\n","export function asciiArtLog() {\n console.info(`\n ____ _ _ ___ ___ _ \n | _ \\\\(_)_ _(_| ) \\\\ / / \\\\ | |\n | |_) | \\\\ \\\\/ / |/ \\\\ \\\\ / /| \\\\| |\n | __/| |> <| | \\\\ V / | |\\\\ |\n |_| |_/_/\\\\_\\\\_| \\\\_/ |_| \\\\_|\n `)\n}","export const tagToRemoveAfter = \"tagToRemoveAfter\";\nexport type tagToRemoveAfterType = \"tagToRemoveAfter\";\n","import sha1 from 'crypto-js/sha1';\nimport { Application, ApplicationOptions, Container, Ticker } from \"pixi.js\";\nimport CanvasBase from \"../classes/canvas/CanvasBase\";\nimport TickerBase, { TickerArgsType } from \"../classes/ticker/TickerBase\";\nimport { Repeat } from \"../constants\";\nimport { geTickerInstanceById } from \"../decorators/TickerDecorator\";\nimport { exportCanvasElement, importCanvasElement } from \"../functions/CanvasUtility\";\nimport { asciiArtLog } from \"../functions/EasterEgg\";\nimport { createExportableElement } from \"../functions/ExportUtility\";\nimport { ITicker, ITickersSteps, TickerHistory, TickerTimeoutHistory } from \"../interface\";\nimport { ITickersStep } from \"../interface/ITickersSteps\";\nimport { ICanvasBaseMemory } from \"../interface/canvas\";\nimport { ExportedCanvas } from \"../interface/export\";\nimport { PauseType } from \"../types/PauseType\";\nimport { RepeatType } from \"../types/RepeatType\";\nimport { TickerIdType } from \"../types/TickerIdType\";\nimport { tagToRemoveAfter } from '../types/ticker/TagToRemoveAfterType';\n\n/**\n * This class is responsible for managing the canvas, the tickers, the events, and the window size and the children of the window.\n */\nexport default class GameWindowManager {\n private constructor() { }\n\n private static _app: Application | undefined = undefined\n /**\n * The PIXI Application instance.\n * It not recommended to use this property directly.\n */\n static get app() {\n if (!GameWindowManager._app) {\n throw new Error(\"[Pixi'VN] GameWindowManager.app is undefined\")\n }\n return GameWindowManager._app\n }\n private static _isInitialized: boolean = false\n /**\n * If the manager is initialized.\n */\n static get isInitialized() {\n return GameWindowManager._isInitialized\n }\n /**\n * This is the div that have same size of the canvas.\n * This is useful to put interface elements.\n * You can use React or other framework to put elements in this div.\n */\n static htmlLayout: HTMLElement\n static canvasWidth: number\n static canvasHeight: number\n static get screen() {\n return GameWindowManager.app.screen\n }\n\n /**\n * Initialize the PIXI Application and the interface div.\n * This method should be called before any other method.\n * @param element The html element where I will put the canvas. Example: document.body\n * @param width The width of the canvas\n * @param height The height of the canvas\n * @param options The options of PIXI Application\n * @example\n * ```typescript\n * const body = document.body\n * if (!body) {\n * throw new Error('body element not found')\n * }\n * await GameWindowManager.initialize(body, 1920, 1080, {\n * backgroundColor: \"#303030\"\n * })\n * ```\n */\n public static async initialize(element: HTMLElement, width: number, height: number, options?: Partial<ApplicationOptions>): Promise<void> {\n GameWindowManager.canvasWidth = width\n GameWindowManager.canvasHeight = height\n GameWindowManager._app = new Application()\n return GameWindowManager.app.init({\n resolution: window.devicePixelRatio || 1,\n autoDensity: true,\n width: width,\n height: height,\n ...options\n }).then(() => {\n GameWindowManager._isInitialized = true\n // Manager.app.ticker.add(Manager.update)\n this.addCanvasIntoHTMLElement(element)\n // listen for the browser telling us that the screen size changed\n window.addEventListener(\"resize\", GameWindowManager.resize)\n\n // call it manually once so we are sure we are the correct size after starting\n GameWindowManager.resize()\n\n asciiArtLog()\n });\n }\n\n /**\n * Add the canvas into a html element.\n * @param element it is the html element where I will put the canvas. Example: document.body\n */\n private static addCanvasIntoHTMLElement(element: HTMLElement) {\n if (GameWindowManager.isInitialized) {\n element.appendChild(GameWindowManager.app.canvas as HTMLCanvasElement)\n }\n else {\n console.error(\"[Pixi'VN] GameWindowManager is not initialized\")\n }\n }\n /**\n * Initialize the interface div and add it into a html element.\n * @param element it is the html element where I will put the interface div. Example: document.getElementById('root')\n * @example\n * ```tsx\n * const root = document.getElementById('root')\n * if (!root) {\n * throw new Error('root element not found')\n * }\n * GameWindowManager.initializeHTMLLayout(root)\n * const reactRoot = createRoot(GameWindowManager.htmlLayout)\n * reactRoot.render(\n * <App />\n * )\n * ```\n */\n public static initializeHTMLLayout(element: HTMLElement) {\n let div = document.createElement('div')\n div.style.position = 'absolute'\n div.style.pointerEvents = 'none'\n element.appendChild(div)\n GameWindowManager.htmlLayout = div\n GameWindowManager.resize()\n }\n\n /* Resize Metods */\n\n /**\n * This method returns the scale of the screen.\n */\n public static get screenScale() {\n let screenWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0)\n let screenHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0)\n return Math.min(screenWidth / GameWindowManager.canvasWidth, screenHeight / GameWindowManager.canvasHeight)\n }\n /**\n * This method returns the width of the screen enlarged by the scale.\n */\n public static get screenWidth() {\n return Math.floor(GameWindowManager.screenScale * GameWindowManager.canvasWidth)\n }\n /**\n * This method returns the height of the screen enlarged by the scale.\n */\n public static get screenHeight() {\n return Math.floor(GameWindowManager.screenScale * GameWindowManager.canvasHeight)\n }\n /**\n * This method returns the horizontal margin of the screen.\n */\n public static get horizontalMargin() {\n let screenWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0)\n return (screenWidth - GameWindowManager.screenWidth) / 2\n }\n /**\n * This method returns the vertical margin of the screen.\n */\n public static get verticalMargin() {\n let screenHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0)\n return (screenHeight - GameWindowManager.screenHeight) / 2\n }\n /**\n * This method is called when the screen is resized.\n */\n private static resize(): void {\n // now we use css trickery to set the sizes and margins\n if (GameWindowManager.isInitialized) {\n let style = GameWindowManager.app.canvas.style;\n style.width = `${GameWindowManager.screenWidth}px`;\n style.height = `${GameWindowManager.screenHeight}px`;\n (style as any).marginLeft = `${GameWindowManager.horizontalMargin}px`;\n (style as any).marginRight = `${GameWindowManager.horizontalMargin}px`;\n (style as any).marginTop = `${GameWindowManager.verticalMargin}px`;\n (style as any).marginBottom = `${GameWindowManager.verticalMargin}px`;\n }\n\n if (GameWindowManager.htmlLayout) {\n GameWindowManager.htmlLayout.style.width = `${GameWindowManager.screenWidth}px`\n GameWindowManager.htmlLayout.style.height = `${GameWindowManager.screenHeight}px`\n GameWindowManager.htmlLayout.style.marginLeft = `${GameWindowManager.horizontalMargin}px`\n GameWindowManager.htmlLayout.style.marginRight = `${GameWindowManager.horizontalMargin}px`\n GameWindowManager.htmlLayout.style.marginTop = `${GameWindowManager.verticalMargin}px`\n GameWindowManager.htmlLayout.style.marginBottom = `${GameWindowManager.verticalMargin}px`\n }\n }\n\n /* Edit Canvas Elements Methods */\n\n /**\n * This is a dictionary that contains all Canvas Elements of Canvas, currently.\n */\n static get currentCanvasElements() {\n return GameWindowManager._children\n }\n private static _children: { [tag: string]: CanvasBase<any> } = {}\n /**\n * The order of the children tags.\n */\n private static childrenTagsOrder: string[] = []\n /**\n * Add a canvas element to the canvas.\n * If there is a canvas element with the same tag, it will be removed.\n * @param tag The tag of the canvas element.\n * @param canvasElement The canvas elements to be added.\n * @example\n * ```typescript\n * const texture = await Assets.load('https://pixijs.com/assets/bunny.png');\n * const sprite = CanvasSprite.from(texture);\n * GameWindowManager.addCanvasElement(\"bunny\", sprite);\n * ```\n */\n public static addCanvasElement(tag: string, canvasElement: CanvasBase<any>) {\n if (GameWindowManager._children[tag]) {\n GameWindowManager.removeCanvasElement(tag)\n }\n GameWindowManager.app.stage.addChild(canvasElement)\n GameWindowManager._children[tag] = canvasElement\n GameWindowManager.childrenTagsOrder.push(tag)\n }\n /**\n * Remove a canvas element from the canvas.\n * And remove all tickers that are not connected to any canvas element.\n * @param tags The tag of the canvas element to be removed.\n * @returns \n * @example\n * ```typescript\n * GameWindowManager.removeCanvasElement(\"bunny\");\n * ```\n */\n public static removeCanvasElement(tags: string | string[]) {\n if (typeof tags === \"string\") {\n tags = [tags]\n }\n tags.forEach((tag) => {\n if (GameWindowManager._children[tag]) {\n GameWindowManager.app.stage.removeChild(GameWindowManager._children[tag])\n delete GameWindowManager._children[tag]\n GameWindowManager.removeTickerByCanvasElement(tag)\n }\n })\n GameWindowManager.childrenTagsOrder = GameWindowManager.childrenTagsOrder.filter((t) => !tags.includes(t))\n }\n /**\n * Get a canvas element by the tag.\n * @param tag The tag of the canvas element.\n * @returns The canvas element.\n * @example\n * ```typescript\n * const sprite = GameWindowManager.getCanvasElement<CanvasSprite>(\"bunny\");\n * ```\n */\n public static getCanvasElement<T extends CanvasBase<any>>(tag: string): T | undefined {\n return GameWindowManager._children[tag] as T | undefined\n }\n /**\n * Check if a DisplayObject is on the canvas.\n * @param pixiElement The DisplayObject to be checked.\n * @returns If the DisplayObject is on the canvas.\n */\n public static canvasElementIsOnCanvas<T extends Container>(pixiElement: T) {\n return GameWindowManager.app.stage.children.includes(pixiElement)\n }\n /**\n * Remove all canvas elements from the canvas.\n * And remove all tickers that are not connected to any canvas element.\n */\n public static removeCanvasElements() {\n GameWindowManager.app.stage.removeChildren()\n GameWindowManager._children = {}\n GameWindowManager.childrenTagsOrder = []\n GameWindowManager.removeAllTickers()\n }\n /**\n * Edit the tag of a canvas element.\n * @param oldTag The old tag of the canvas element.\n * @param newTag The new tag of the canvas element.\n */\n public static editCanvasElementTag(oldTag: string, newTag: string) {\n if (GameWindowManager._children[oldTag]) {\n GameWindowManager._children[newTag] = GameWindowManager._children[oldTag]\n delete GameWindowManager._children[oldTag]\n }\n if (GameWindowManager._currentTickersSteps[oldTag]) {\n GameWindowManager._currentTickersSteps[newTag] = GameWindowManager._currentTickersSteps[oldTag]\n delete GameWindowManager._currentTickersSteps[oldTag]\n }\n for (let id in GameWindowManager._currentTickers) {\n let ticker = GameWindowManager._currentTickers[id]\n if (ticker.canvasElementTags.includes(oldTag)) {\n ticker.canvasElementTags = ticker.canvasElementTags.map((t) => t === oldTag ? newTag : t)\n if (ticker.args.hasOwnProperty(tagToRemoveAfter)) {\n let tagToRemoveAfter: string | string[] = ticker.args.tagToRemoveAfter\n if (typeof tagToRemoveAfter === \"string\") {\n tagToRemoveAfter = [tagToRemoveAfter]\n }\n if (Array.isArray(tagToRemoveAfter)) {\n ticker.args.tagToRemoveAfter = tagToRemoveAfter.map((t) => t === oldTag ? newTag : t)\n }\n }\n }\n }\n for (let timeout in GameWindowManager._currentTickersTimeouts) {\n let TickerTimeout = GameWindowManager._currentTickersTimeouts[timeout]\n if (TickerTimeout.tags.includes(oldTag)) {\n TickerTimeout.tags = TickerTimeout.tags.map((t) => t === oldTag ? newTag : t)\n }\n }\n }\n\n /** Edit Tickers Methods */\n\n /**\n * Currently tickers that are running.\n */\n public static get currentTickers() {\n return GameWindowManager._currentTickers\n }\n public static get currentTickersList() {\n return Object.values(GameWindowManager._currentTickers)\n }\n private static get currentTickersWithoutCreatedBySteps() {\n return Object.fromEntries(Object.entries(GameWindowManager._currentTickers).filter(([_, ticker]) => !ticker.createdByTicketStepsId))\n }\n private static _currentTickers: { [id: string]: TickerHistory<any> } = {}\n /**\n * The steps of the tickers\n */\n public static get currentTickersSteps() {\n return GameWindowManager._currentTickersSteps\n }\n private static _currentTickersSteps: { [tag: string]: ITickersSteps } = {}\n private static _currentTickersTimeouts: { [timeout: string]: TickerTimeoutHistory } = {}\n private static generateTickerId(tickerData: TickerHistory<any>): string {\n try {\n return sha1(JSON.stringify(tickerData)).toString() + \"_\" + Math.random().toString(36).substring(7)\n }\n catch (e) {\n throw new Error(`[Pixi'VN] Error to generate ticker id: ${e}`)\n }\n }\n /**\n * Run a ticker. You can run multiple addTicker with the same tag and different tickerClasses.\n * If you run a ticker with the same tag and tickerClass, the old ticker will be removed.\n * If already exists a sequence of tickers with the same tag, it will be removed.\n * @param canvasEslementTag The tag of the canvas element that will use the ticker.\n * @param ticker The ticker class to be run.\n * @param args The arguments to be used in the ticker.\n * @param duration The time to be used in the ticker. This number is in seconds. If it is undefined, the ticker will run forever.\n * @param priority The priority to be used in the ticker.\n * @returns \n * @example\n * ```typescript\n * GameWindowManager.addTicker(\"alien\", new RotateTicker({ speed: 0.2 }))\n * ```\n */\n static addTicker<TArgs extends TickerArgsType>(canvasElementTag: string | string[], ticker: TickerBase<TArgs>) {\n let tickerId: TickerIdType = ticker.id\n if (typeof canvasElementTag === \"string\") {\n canvasElementTag = [canvasElementTag]\n }\n if (!geTickerInstanceById<TArgs>(tickerId, ticker.args, ticker.duration, ticker.priority)) {\n console.error(`[Pixi'VN] Ticker ${tickerId} not found`)\n return\n }\n let tickerHistory: TickerHistory<TArgs> = {\n fn: () => { },\n id: tickerId,\n args: createExportableElement(ticker.args),\n canvasElementTags: canvasElementTag,\n priority: ticker.priority,\n duration: ticker.duration,\n }\n let id = GameWindowManager.generateTickerId(tickerHistory)\n GameWindowManager.pushTicker(id, tickerHistory, ticker)\n if (ticker.duration) {\n let timeout = setTimeout(() => {\n GameWindowManager.removeTickerTimeoutInfo(timeout)\n let tickerTimeoutInfo = GameWindowManager._currentTickersTimeouts[timeout.toString()]\n if (tickerTimeoutInfo) {\n GameWindowManager.removeTicker(id)\n }\n }, ticker.duration * 1000);\n GameWindowManager.addTickerTimeoutInfo(canvasElementTag, tickerId, timeout.toString(), true)\n }\n }\n private static pushTicker<TArgs extends TickerArgsType>(id: string, tickerData: TickerHistory<TArgs>, ticker: TickerBase<TArgs>) {\n GameWindowManager.removeAssociationBetweenTickerCanvasElement(tickerData.canvasElementTags, ticker)\n GameWindowManager._currentTickers[id] = tickerData\n tickerData.fn = (t: Ticker) => {\n let data = GameWindowManager._currentTickers[id]\n if (data) {\n ticker?.fn(t, data.args, data.canvasElementTags, id)\n }\n }\n GameWindowManager.app.ticker.add(tickerData.fn, undefined, tickerData.priority)\n }\n /**\n * Run a sequence of tickers. If exists a ticker steps with the same tag, it will be removed.\n * @param tag The tag of canvas element that will use the tickers.\n * @param steps The steps of the tickers.\n * @param currentStepNumber The current step number. It is used to continue the sequence of tickers.\n * @returns\n * @example\n * ```typescript\n * GameWindowManager.addTickersSteps(\"alien\", [\n * new RotateTicker({ speed: 0.1, clockwise: true }, 2), // 2 seconds\n * Pause(1), // 1 second\n * new RotateTicker({ speed: 0.2, clockwise: false }, 2),\n * Repeat,\n * ])\n * ```\n */\n static addTickersSteps<TArgs extends TickerArgsType>(tag: string, steps: (ITicker<TArgs> | RepeatType | PauseType)[], currentStepNumber = 0) {\n if (steps.length == 0) {\n console.warn(\"[Pixi'VN] The steps of the tickers is empty\")\n return\n }\n GameWindowManager.removeTickerStepByCanvasElement(tag)\n GameWindowManager._currentTickersSteps[tag] = {\n currentStepNumber: currentStepNumber,\n steps: steps.map((step) => {\n if (step === Repeat) {\n return step\n }\n if (step.hasOwnProperty(\"type\") && (step as PauseType).type === \"pause\") {\n return step as PauseType\n }\n let tickerId = (step as ITicker<TArgs>).id\n return {\n ticker: tickerId,\n args: createExportableElement((step as ITicker<TArgs>).args),\n duration: step.duration,\n }\n })\n }\n GameWindowManager.runTickersSteps(tag)\n }\n private static restoneTickersSteps(data: { [tag: string]: ITickersSteps }) {\n for (let tag in data) {\n let steps = data[tag]\n GameWindowManager._currentTickersSteps[tag] = steps\n GameWindowManager.runTickersSteps(tag)\n }\n }\n private static runTickersSteps<TArgs extends TickerArgsType>(tag: string) {\n let step = GameWindowManager._currentTickersSteps[tag].steps[GameWindowManager._currentTickersSteps[tag].currentStepNumber]\n if (step === Repeat) {\n step = GameWindowManager._currentTickersSteps[tag].steps[0]\n GameWindowManager._currentTickersSteps[tag].currentStepNumber = 0\n if (step === Repeat) {\n console.error(\"[Pixi'VN] TikersSteps has a RepeatType in the first step\")\n return\n }\n }\n if (step.hasOwnProperty(\"type\") && (step as PauseType).type === \"pause\") {\n let timeout = setTimeout(() => {\n let tickerTimeoutInfo = GameWindowManager._currentTickersTimeouts[timeout.toString()]\n if (tickerTimeoutInfo) {\n tickerTimeoutInfo.tags.forEach((tag) => {\n GameWindowManager.nextTickerStep(tag)\n })\n }\n GameWindowManager.removeTickerTimeoutInfo(timeout)\n }, (step as PauseType).duration * 1000);\n GameWindowManager.addTickerTimeoutInfo(tag, \"steps\", timeout.toString(), false)\n return\n }\n let ticker = geTickerInstanceById<TArgs>((step as ITickersStep<TArgs>).ticker, (step as ITickersStep<TArgs>).args, step.duration, (step as ITickersStep<TArgs>).priority)\n if (!ticker) {\n console.error(`[Pixi'VN] Ticker ${(step as ITickersStep<TArgs>).ticker} not found`)\n return\n }\n let tickerName: TickerIdType = ticker.id\n let tickerHistory: TickerHistory<TArgs> = {\n fn: () => { },\n id: tickerName,\n args: createExportableElement(ticker.args),\n canvasElementTags: [tag],\n priority: ticker.priority,\n duration: ticker.duration,\n createdByTicketStepsId: tag,\n }\n let id = GameWindowManager.generateTickerId(tickerHistory)\n GameWindowManager.pushTicker(id, tickerHistory, ticker)\n if (ticker.duration) {\n let timeout = setTimeout(() => {\n let tickerTimeoutInfo = GameWindowManager._currentTickersTimeouts[timeout.toString()]\n if (tickerTimeoutInfo) {\n GameWindowManager.removeTicker(id)\n tickerTimeoutInfo.tags.forEach((tag) => {\n GameWindowManager.nextTickerStep(tag)\n })\n }\n GameWindowManager.removeTickerTimeoutInfo(timeout)\n }, ticker.duration * 1000);\n GameWindowManager.addTickerTimeoutInfo(tag, tickerName, timeout.toString(), false)\n }\n }\n private static nextTickerStep(tag: string) {\n if (GameWindowManager._currentTickersSteps[tag]) {\n let steps = GameWindowManager._currentTickersSteps[tag]\n if (steps.currentStepNumber + 1 < steps.steps.length) {\n steps.currentStepNumber++\n GameWindowManager._currentTickersSteps[tag] = steps\n GameWindowManager.runTickersSteps(tag)\n }\n else {\n GameWindowManager.removeTickerStepByCanvasElement(tag)\n }\n }\n }\n public static onEndOfTicker(canvasElementTags: string | string[], ticker: typeof TickerBase<any> | TickerBase<any> | string, canvasElementTagsToDelete: string | string[], tickerId: string) {\n let tickerData = GameWindowManager._currentTickers[tickerId]\n GameWindowManager.removeAssociationBetweenTickerCanvasElement(canvasElementTags, ticker)\n GameWindowManager.removeCanvasElement(canvasElementTagsToDelete)\n if (tickerData) {\n GameWindowManager.removeTicker(tickerId)\n if (tickerData.duration == undefined && tickerData.createdByTicketStepsId) {\n GameWindowManager.nextTickerStep(tickerData.createdByTicketStepsId)\n }\n }\n }\n /**\n * Remove a connection between a canvas element and a ticker.\n * And remove the ticker if there is no canvas element connected to it.\n * @param tags The tag of the canvas element that will use the ticker.\n * @param ticker The ticker class to be removed.\n * @example\n * ```typescript\n * GameWindowManager.removeAssociationBetweenTickerCanvasElement(\"alien\", RotateTicker)\n * ```\n */\n public static removeAssociationBetweenTickerCanvasElement(tags: string | string[], ticker: typeof TickerBase<any> | TickerBase<any> | string) {\n let tickerId: TickerIdType\n if (typeof ticker === \"string\") {\n tickerId = ticker\n }\n else if (ticker instanceof TickerBase) {\n tickerId = ticker.id\n }\n else {\n tickerId = ticker.prototype.id\n }\n if (typeof tags === \"string\") {\n tags = [tags]\n }\n for (let id in GameWindowManager._currentTickers) {\n let ticker = GameWindowManager._currentTickers[id]\n if (ticker.id === tickerId) {\n GameWindowManager._currentTickers[id].canvasElementTags = ticker.canvasElementTags.filter((e) => !tags.includes(e))\n }\n }\n for (let timeout in GameWindowManager._currentTickersTimeouts) {\n let TickerTimeout = GameWindowManager._currentTickersTimeouts[timeout]\n if (TickerTimeout.ticker === tickerId && TickerTimeout.canBeDeletedBeforeEnd) {\n GameWindowManager._currentTickersTimeouts[timeout].tags = TickerTimeout.tags.filter((t) => !tags.includes(t))\n }\n }\n GameWindowManager.removeTickersWithoutAssociatedCanvasElement()\n }\n /**\n * Remove all tickers that are not connected to any existing canvas element.\n */\n private static removeTickersWithoutAssociatedCanvasElement() {\n for (let id in GameWindowManager._currentTickers) {\n let ticker = GameWindowManager._currentTickers[id]\n ticker.canvasElementTags = ticker.canvasElementTags.filter((e) => GameWindowManager._children[e])\n if (ticker.canvasElementTags.length === 0) {\n GameWindowManager.removeTicker(id)\n }\n }\n for (let tag in GameWindowManager._currentTickersSteps) {\n if (GameWindowManager._children[tag] === undefined) {\n delete GameWindowManager._currentTickersSteps[tag]\n }\n }\n Object.entries(GameWindowManager._currentTickersTimeouts).forEach(([timeout, { tags }]) => {\n if (tags.length === 0) {\n GameWindowManager.removeTickerTimeout(timeout)\n }\n })\n }\n private static addTickerTimeoutInfo(tags: string | string[], ticker: string, timeout: string, canBeDeletedBeforeEnd: boolean) {\n if (typeof tags === \"string\") {\n tags = [tags]\n }\n GameWindowManager._currentTickersTimeouts[timeout] = {\n tags: tags,\n ticker: ticker,\n canBeDeletedBeforeEnd: canBeDeletedBeforeEnd\n }\n }\n private static removeTickerTimeoutInfo(timeout: NodeJS.Timeout | string) {\n if (typeof timeout !== \"string\") {\n timeout = timeout.toString()\n }\n if (GameWindowManager._currentTickersTimeouts[timeout]) {\n delete GameWindowManager._currentTickersTimeouts[timeout]\n }\n }\n private static removeTickerTimeout(timeout: NodeJS.Timeout | string) {\n if (typeof timeout !== \"string\") {\n timeout = timeout.toString()\n }\n clearTimeout(Number(timeout))\n GameWindowManager.removeTickerTimeoutInfo(timeout)\n }\n private static removeTickerTimeoutsByTag(tag: string, checkCanBeDeletedBeforeEnd: boolean) {\n for (let timeout in GameWindowManager._currentTickersTimeouts) {\n let tagsWithoutTagToRemove = GameWindowManager._currentTickersTimeouts[timeout].tags.filter((t) => t !== tag)\n if (tagsWithoutTagToRemove.length === 0) {\n let canBeDeletedBeforeEnd = GameWindowManager._currentTickersTimeouts[timeout].canBeDeletedBeforeEnd\n if (!checkCanBeDeletedBeforeEnd || canBeDeletedBeforeEnd) {\n GameWindowManager.removeTickerTimeout(timeout)\n }\n }\n else {\n GameWindowManager._currentTickersTimeouts[timeout].tags = tagsWithoutTagToRemove\n }\n }\n }\n /**\n * Remove all tickers from the canvas.\n */\n public static removeAllTickers() {\n GameWindowManager._currentTickersSteps = {}\n Object.keys(GameWindowManager._currentTickers).forEach((id) => {\n GameWindowManager.removeTicker(id)\n })\n GameWindowManager._currentTickers = {}\n for (let timeout in GameWindowManager._currentTickersTimeouts) {\n GameWindowManager.removeTickerTimeout(timeout)\n }\n }\n /**\n * Remove all tickers from a canvas element.\n * @param tag The tag of the canvas element that will use the ticker.\n */\n private static removeTickerByCanvasElement(tag: string | string[]) {\n if (typeof tag === \"string\") {\n tag = [tag]\n }\n tag.forEach((tag) => {\n for (let id in GameWindowManager._currentTickers) {\n let ticker = GameWindowManager._currentTickers[id]\n if (ticker.canvasElementTags.includes(tag)) {\n GameWindowManager.removeTicker(id)\n }\n }\n if (GameWindowManager._currentTickersSteps[tag]) {\n delete GameWindowManager._currentTickersSteps[tag]\n }\n GameWindowManager.removeTickerTimeoutsByTag(tag, false)\n delete GameWindowManager._currentTickersSteps[tag]\n })\n }\n private static removeTickerStepByCanvasElement(tag: string) {\n if (GameWindowManager._currentTickersSteps[tag]) {\n delete GameWindowManager._currentTickersSteps[tag]\n }\n for (let id in GameWindowManager._currentTickers) {\n let ticker = GameWindowManager._currentTickers[id]\n if (ticker.createdByTicketStepsId === tag) {\n GameWindowManager.removeTicker(id)\n }\n }\n }\n private static removeTicker(tickerId: string) {\n let ticker = GameWindowManager._currentTickers[tickerId]\n if (ticker) {\n if (ticker.args.hasOwnProperty(tagToRemoveAfter)) {\n let tagToRemoveAfter: string | string[] = ticker.args.tagToRemoveAfter\n GameWindowManager.removeCanvasElement(tagToRemoveAfter)\n }\n GameWindowManager.app.ticker.remove(ticker.fn)\n delete GameWindowManager._currentTickers[tickerId]\n }\n }\n\n /**\n * Clear the canvas and the tickers.\n */\n static clear() {\n GameWindowManager.removeCanvasElements()\n }\n\n /* Export and Import Methods */\n\n /**\n * Export the canvas and the tickers to a JSON string.\n * @returns The JSON string.\n */\n public static exportJson(): string {\n return JSON.stringify(this.export())\n }\n /**\n * Export the canvas and the tickers to an object.\n * @returns The object.\n */\n public static export(): ExportedCanvas {\n let currentElements: { [tag: string]: ICanvasBaseMemory } = {}\n for (let tag in GameWindowManager._children) {\n currentElements[tag] = exportCanvasElement(GameWindowManager._children[tag])\n }\n return {\n currentTickers: createExportableElement(GameWindowManager.currentTickersWithoutCreatedBySteps),\n currentTickersSteps: createExportableElement(GameWindowManager._currentTickersSteps),\n currentElements: createExportableElement(currentElements),\n childrenTagsOrder: createExportableElement(GameWindowManager.childrenTagsOrder),\n }\n }\n /**\n * Import the canvas and the tickers from a JSON string.\n * @param dataString The JSON string.\n */\n public static importJson(dataString: string) {\n GameWindowManager.import(JSON.parse(dataString))\n }\n /**\n * Import the canvas and the tickers from an object.\n * @param data The object.\n */\n public static import(data: object) {\n GameWindowManager.clear()\n try {\n if (data.hasOwnProperty(\"childrenTagsOrder\") && data.hasOwnProperty(\"currentElements\")) {\n let currentElements = (data as ExportedCanvas)[\"currentElements\"]\n let childrenTagsOrder = (data as ExportedCanvas)[\"childrenTagsOrder\"]\n childrenTagsOrder.forEach((tag) => {\n if (currentElements[tag]) {\n let element = importCanvasElement(currentElements[tag])\n GameWindowManager.addCanvasElement(tag, element)\n GameWindowManager.childrenTagsOrder.push(tag)\n }\n })\n }\n else {\n console.error(\"[Pixi'VN] The data does not have the properties childrenTagsOrder and currentElements\")\n return\n }\n if (data.hasOwnProperty(\"currentTickers\")) {\n let currentTickers = (data as ExportedCanvas)[\"currentTickers\"]\n for (let id in currentTickers) {\n let t = currentTickers[id]\n let tags: string[] = t.canvasElementTags\n let ticker = geTickerInstanceById(t.id, t.args, t.duration, t.priority)\n if (ticker) {\n GameWindowManager.addTicker(tags, ticker)\n }\n else {\n console.error(`[Pixi'VN] Ticker ${t.id} not found`)\n }\n }\n }\n if (data.hasOwnProperty(\"currentTickersSteps\")) {\n let currentTickersSteps = (data as ExportedCanvas)[\"currentTickersSteps\"]\n GameWindowManager.restoneTickersSteps(currentTickersSteps)\n }\n }\n catch (e) {\n console.error(\"[Pixi'VN] Error importing data\", e)\n }\n }\n}\n","import { saveCharacter } from \"../decorators\"\nimport { CharacterBaseModelProps } from \"../interface\"\nimport { GameStorageManager } from \"../managers\"\nimport StoredClassModel from \"./StoredClassModel\"\n\n/**\n * CharacterBaseModel is a class that is used to create a character model.\n * I suggest you extend this class to create your own character models.\n * You must use the {@link saveCharacter} function to save the character in the game.\n * @example\n * ```typescript\n * export const liam = new CharacterBaseModel('liam', {\n * name: 'Liam',\n * surname: 'Smith',\n * age: 25,\n * icon: \"https://pixijs.com/assets/eggHead.png\",\n * color: \"#9e2e12\"\n * });\n * export const alice = new CharacterBaseModel('alice', {\n * name: 'Alice',\n * surname: 'Smith',\n * age: 25,\n * icon: \"https://pixijs.com/assets/eggHead.png\",\n * color: \"#9e2e12\"\n * });\n * saveCharacter([liam, alice]);\n * ```\n */\nexport default class CharacterBaseModel extends StoredClassModel implements CharacterBaseModelProps {\n /**\n * @param id The id of the character.\n * @param props The properties of the character.\n */\n constructor(id: string, props: CharacterBaseModelProps) {\n super(GameStorageManager.keysSystem.CHARACTER_CATEGORY_KEY, id)\n this.defaultName = props.name\n this.defaultSurname = props.surname\n this.defaultAge = props.age\n this._icon = props.icon\n this._color = props.color\n }\n private defaultName: string = \"\"\n /***\n * The name of the character.\n * If you set undefined, it will return the default name.\n */\n get name(): string {\n return this.getStorageProperty<string>(\"name\") || this.defaultName\n }\n set name(value: string | undefined) {\n this.setStorageProperty<string>(\"name\", value)\n }\n private defaultSurname?: string\n /**\n * The surname of the character.\n * If you set undefined, it will return the default surname.\n */\n get surname(): string | undefined {\n return this.getStorageProperty<string>(\"surname\") || this.defaultSurname\n }\n set surname(value: string | undefined) {\n this.setStorageProperty<string>(\"surname\", value)\n }\n private defaultAge?: number | undefined\n /**\n * The age of the character.\n * If you set undefined, it will return the default age.\n */\n get age(): number | undefined {\n return this.getStorageProperty<number>(\"age\") || this.defaultAge\n }\n set age(value: number | undefined) {\n this.setStorageProperty<number>(\"age\", value)\n }\n private _icon?: string\n /**\n * The icon of the character.\n */\n get icon(): string | undefined {\n return this._icon\n }\n private _color?: string | undefined\n /**\n * The color of the character.\n */\n get color(): string | undefined {\n return this._color\n }\n}\n"]}
|