UNPKG

@drincs/pixi-vn

Version:

Pixi'VN is a npm package that provides various features for creating visual novels.

1 lines 109 kB
{"version":3,"sources":["../../src/classes/ticker/TickerBase.ts","../../src/constants.ts","../../src/decorators/TickerDecorator.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/functions/CanvasUtility.ts","../../src/functions/EasterEgg.ts","../../src/functions/ExportUtility.ts","../../src/types/ticker/TagToRemoveAfterType.ts","../../src/managers/WindowManager.ts"],"names":["Container","Sprite","tagToRemoveAfter","tag","ticker"],"mappings":"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","file":"WindowManager.mjs","sourcesContent":["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 { PauseType, RepeatType } from \"./types\"\n\nexport const PIXIVN_VERSION = '0.6.14'\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 { 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 { 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 { 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","export function asciiArtLog() {\n console.info(`\n ____ _ _ ___ ___ _ \n | _ \\\\(_)_ _(_| ) \\\\ / / \\\\ | |\n | |_) | \\\\ \\\\/ / |/ \\\\ \\\\ / /| \\\\| |\n | __/| |> <| | \\\\ V / | |\\\\ |\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","export const tagToRemoveAfter = \"tagToRemoveAfter\";\nexport type tagToRemoveAfterType = \"tagToRemoveAfter\";\n","import { initDevtools } from '@pixi/devtools';\nimport 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 initDevtools({ app: GameWindowManager._app });\n\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"]}