UNPKG

@drincs/pixi-vn

Version:

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

1 lines 10.3 kB
{"version":3,"sources":["../src/characters/classes/CharacterStoredClass.ts","../src/characters/classes/CharacterBaseModel.ts","../src/characters/decorators/character-decorator.ts"],"names":["EMOTION_SEPARATOR","CharacterStoredClass","StoredClassModel","id","emotion","SYSTEM_RESERVED_STORAGE_KEYS","__publicField","propertyName","value","CharacterBaseModel","props","registeredCharacters","CachedMap","RegisteredCharacters","get","character","logger","e","add","c","values","has","keys","character_decorator_default"],"mappings":"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","file":"characters.mjs","sourcesContent":["import { SYSTEM_RESERVED_STORAGE_KEYS } from \"../../constants\";\nimport { StorageElementType, StoredClassModel } from \"../../storage\";\n\nconst EMOTION_SEPARATOR = \"@\";\nexport default class CharacterStoredClass extends StoredClassModel {\n private sourceId: string;\n constructor(id: string, emotion: string = \"\") {\n super(SYSTEM_RESERVED_STORAGE_KEYS.CHARACTER_CATEGORY_KEY, id + (emotion ? EMOTION_SEPARATOR + emotion : \"\"));\n this.sourceId = id;\n this.migrateOldStorage(\"___character___\");\n }\n\n override getStorageProperty<T extends StorageElementType>(propertyName: string): T | undefined {\n let value = super.getStorageProperty<T>(propertyName);\n if (value === undefined) {\n value = super.getStorageProperty<T>(propertyName, this.sourceId);\n }\n return value;\n }\n}\n","import { default as RegisteredCharacters } from \"../decorators/character-decorator\";\nimport CharacterBaseModelProps from \"../interfaces/CharacterBaseModelProps\";\nimport CharacterStoredClass from \"./CharacterStoredClass\";\n\n/**\n * CharacterBaseModel is a class that is used to create a character model.\n * You must use the {@link RegisteredCharacters.add} function to save the character in the game.\n * It is raccomended to create your own class Character, read more here: https://pixi-vn.web.app/start/character.html#custom-character\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 * RegisteredCharacters.add([liam, alice]);\n * ```\n */\nexport default class CharacterBaseModel extends CharacterStoredClass {\n /**\n * @param id The id of the character.\n * @param props The properties of the character.\n */\n constructor(id: string | { id: string; emotion: string }, props: CharacterBaseModelProps) {\n super(typeof id === \"string\" ? id : id.id, typeof id === \"string\" ? \"\" : id.emotion);\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 || this.id;\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","import { CharacterInterface } from \"@drincs/pixi-vn\";\nimport { CachedMap } from \"../../classes\";\nimport { logger } from \"../../utils/log-utility\";\n\nexport const registeredCharacters = new CachedMap<string, CharacterInterface>({ cacheSize: 10 });\n\nnamespace RegisteredCharacters {\n /**\n * is a function that returns the character by the id\n * @param id is the id of the character\n * @returns the character\n * @example\n * ```typescript\n * const liam = RegisteredCharacters.get('liam');\n * ```\n */\n export function get<T = CharacterInterface>(id: string): T | undefined {\n try {\n let character = registeredCharacters.get(id);\n if (!character) {\n logger.warn(\n `Character \"${id}\" not found, did you forget to register it with the RegisteredCharacters.add?`\n );\n return;\n }\n return character as T;\n } catch (e) {\n logger.error(`Error while getting Character \"${id}\"`, e);\n return;\n }\n }\n\n /**\n * Is a function that saves the character. If the character already exists, it will be overwritten.\n * @param character is the character to save\n * @returns\n * @example\n * ```typescript\n * export const liam = new CharacterBaseModel('liam', { name: 'Liam'});\n * export const alice = new CharacterBaseModel('alice', { name: 'Alice'});\n * RegisteredCharacters.add([liam, alice]);\n * ```\n */\n export function add(character: CharacterInterface | CharacterInterface[]) {\n if (Array.isArray(character)) {\n character.forEach((c) => add(c));\n return;\n }\n if (registeredCharacters.get(character.id)) {\n logger.info(`Character id \"${character.id}\" already exists, it will be overwritten`);\n }\n registeredCharacters.set(character.id, character);\n }\n\n /**\n * is a function that returns all characters\n * @returns all characters\n * @example\n * ```typescript\n * const allCharacters = RegisteredCharacters.values();\n * ```\n */\n export function values<T extends CharacterInterface>(): T[] {\n return Array.from(registeredCharacters.values()) as T[];\n }\n\n /**\n * Check if a character is registered.\n * @param id is the id of the character\n * @returns true if the character exists, false otherwise\n */\n export function has(id: string): boolean {\n return registeredCharacters.has(id);\n }\n\n /**\n * Get a list of all character ids registered.\n * @returns An array of label ids.\n */\n export function keys(): string[] {\n return Array.from(registeredCharacters.keys());\n }\n}\nexport default RegisteredCharacters;\n"]}