UNPKG

@drincs/pixi-vn

Version:

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

1 lines 40.7 kB
{"version":3,"sources":["../node_modules/microdiff/dist/index.js","../src/utils/diff-utility.ts","../src/history/HistoryManagerStatic.ts","../src/history/HistoryManager.ts","../src/history/index.ts"],"names":["richTypes","diff","obj","newObj","options","_stack","diffs","isObjArray","key","objKey","path","newObjKey","areCompatibleObjects","difference","isNewObjArray","restoreDiffChanges","data","differences","result","createExportableElement","restoreMicroDiffChanges","dataToEdit","index","logger","_HistoryManagerStatic","value","__publicField","CachedMap","HistoryManagerStatic","HistoryManager","stepIndex","item","steps","restoredStep","lastKey","GameUnifier","e","props","stepCounter","historyInfo","narrativeHistory","originalStepData","ignoreSameStep","currentStepData","lastStepHistory","lastNarrativeHistory","previousItem","previousNarrativeHistory","step","choiceIndexMade","inputValue","removeDialogue","dialogue","requiredChoices","choices","choice","hidden","onlyHaveNoChoice","a","b","keys","lastItem","openedLabels","currentStepIndex","label","info","openedLabelsTemp","itemsNumber","originalState","newState","lastStepDataOpenedLabelsString","historyStepOpenedLabelsString","limit","stepsHistory","moreInfo","res","stepHistory"],"mappings":"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","file":"history.mjs","sourcesContent":["const richTypes = { Date: true, RegExp: true, String: true, Number: true };\nexport default function diff(obj, newObj, options = { cyclesFix: true }, _stack = []) {\n let diffs = [];\n const isObjArray = Array.isArray(obj);\n for (const key in obj) {\n const objKey = obj[key];\n const path = isObjArray ? +key : key;\n if (!(key in newObj)) {\n diffs.push({\n type: \"REMOVE\",\n path: [path],\n oldValue: obj[key],\n });\n continue;\n }\n const newObjKey = newObj[key];\n const areCompatibleObjects = typeof objKey === \"object\" &&\n typeof newObjKey === \"object\" &&\n Array.isArray(objKey) === Array.isArray(newObjKey);\n if (objKey &&\n newObjKey &&\n areCompatibleObjects &&\n !richTypes[Object.getPrototypeOf(objKey)?.constructor?.name] &&\n (!options.cyclesFix || !_stack.includes(objKey))) {\n diffs.push.apply(diffs, diff(objKey, newObjKey, options, options.cyclesFix ? _stack.concat([objKey]) : []).map((difference) => {\n difference.path.unshift(path);\n return difference;\n }));\n }\n else if (objKey !== newObjKey &&\n // treat NaN values as equivalent\n !(Number.isNaN(objKey) && Number.isNaN(newObjKey)) &&\n !(areCompatibleObjects &&\n (isNaN(objKey)\n ? objKey + \"\" === newObjKey + \"\"\n : +objKey === +newObjKey))) {\n diffs.push({\n path: [path],\n type: \"CHANGE\",\n value: newObjKey,\n oldValue: objKey,\n });\n }\n }\n const isNewObjArray = Array.isArray(newObj);\n for (const key in newObj) {\n if (!(key in obj)) {\n diffs.push({\n type: \"CREATE\",\n path: [isNewObjArray ? +key : key],\n value: newObj[key],\n });\n }\n }\n return diffs;\n}\n","import { Difference } from \"microdiff\";\nimport { createExportableElement } from \"./export-utility\";\nimport { logger } from \"./log-utility\";\n\nexport function restoreDiffChanges<T extends object = object>(data: T, differences: Difference[]): T {\n let result = createExportableElement(data);\n if (differences.length > 1 && \"type\" in differences[0]) {\n differences = differences.slice().reverse();\n }\n differences.forEach((diff) => {\n restoreMicroDiffChanges<T>(result, diff);\n });\n return result;\n}\n\nfunction restoreMicroDiffChanges<T extends object = object>(result: T, diff: Difference) {\n let dataToEdit: any = result;\n if (diff.path && diff.path.length > 0) {\n diff.path.forEach((path, index) => {\n if (diff.path && index === diff.path.length - 1) {\n switch (diff.type) {\n case \"CHANGE\":\n case \"REMOVE\":\n dataToEdit[path] = diff.oldValue;\n break;\n case \"CREATE\":\n // if path is a number, dataToEdit is an array\n if (Array.isArray(dataToEdit) && typeof path === \"number\") {\n dataToEdit.splice(path, 1);\n }\n // if path is a string, dataToEdit is an object\n else {\n // remove key from object\n delete dataToEdit[path];\n }\n break;\n }\n } else {\n dataToEdit = dataToEdit[path];\n }\n });\n } else {\n logger.warn(\"No path found, skipping diff\", diff);\n }\n}\n","import { GameStepState } from \"@drincs/pixi-vn\";\nimport { Difference } from \"microdiff\";\nimport { CachedMap } from \"../classes\";\nimport { HistoryStep, NarrationHistory } from \"../narration\";\nimport { createExportableElement } from \"../utils\";\n\nexport default class HistoryManagerStatic {\n static _diffHistory = new CachedMap<number, Difference[]>({\n cacheSize: 5,\n });\n static _stepsInfoHistory = new CachedMap<number, Omit<HistoryStep, \"diff\">>({ cacheSize: 5 });\n static _narrationHistory = new CachedMap<number, NarrationHistory>({ cacheSize: 50 });\n static stepLimitSaved: number = 20;\n static _originalStepData: GameStepState | undefined = undefined;\n static get originalStepData(): GameStepState {\n if (!HistoryManagerStatic._originalStepData) {\n return {\n path: \"\",\n storage: {},\n canvas: {\n elementAliasesOrder: [],\n elements: {},\n stage: {},\n tickers: {},\n tickersSteps: {},\n tickersOnPause: {},\n tickersToCompleteOnStepEnd: { tikersIds: [], stepAlias: [] },\n },\n sound: {\n soundAliasesOrder: [],\n soundsPlaying: {},\n playInStepIndex: {},\n filters: undefined,\n },\n labelIndex: -1,\n openedLabels: [],\n };\n }\n return createExportableElement(HistoryManagerStatic._originalStepData);\n }\n static set originalStepData(value: GameStepState) {\n HistoryManagerStatic._originalStepData = createExportableElement(value);\n }\n}\n","import { GameStepState, HistoryInfo } from \"@drincs/pixi-vn\";\nimport { GameUnifier } from \"@drincs/pixi-vn/core\";\nimport diff from \"microdiff\";\nimport { HistoryChoiceMenuOption, HistoryStep, NarrationHistory, StepLabelPropsType } from \"../narration\";\nimport { StorageElementType } from \"../storage/types/StorageElementType\";\nimport { createExportableElement } from \"../utils\";\nimport { restoreDiffChanges } from \"../utils/diff-utility\";\nimport { logger } from \"../utils/log-utility\";\nimport HistoryManagerStatic from \"./HistoryManagerStatic\";\nimport HistoryGameState from \"./interfaces/HistoryGameState\";\nimport HistoryManagerInterface from \"./interfaces/HistoryManagerInterface\";\n\n/**\n * This class is a class that manages the steps and labels of the game.\n */\nexport default class HistoryManager implements HistoryManagerInterface {\n get stepsInfoMap() {\n return HistoryManagerStatic._stepsInfoHistory;\n }\n get diffMap() {\n return HistoryManagerStatic._diffHistory;\n }\n get narrationMap() {\n return HistoryManagerStatic._narrationHistory;\n }\n get size(): number {\n return HistoryManagerStatic._stepsInfoHistory.size;\n }\n get lastKey(): number | null {\n if (this.size === 0) {\n return null;\n }\n return Math.max(...Array.from(this.keys()));\n }\n keys() {\n return HistoryManagerStatic._stepsInfoHistory.keys();\n }\n get(stepIndex: number): NarrationHistory | undefined {\n const item = HistoryManagerStatic._narrationHistory.get(stepIndex);\n if (item && Object.keys(item).length === 1 && item.stepIndex !== undefined) {\n return undefined;\n }\n return item;\n }\n delete(stepIndex: number) {\n HistoryManagerStatic._stepsInfoHistory.delete(stepIndex);\n HistoryManagerStatic._diffHistory.delete(stepIndex);\n HistoryManagerStatic._narrationHistory.delete(stepIndex);\n }\n private getOldGameState(steps: number, restoredStep: GameStepState): GameStepState {\n if (steps <= 0) {\n return restoredStep;\n }\n if (this.size == 0) {\n return restoredStep;\n }\n const lastKey = this.lastKey;\n if (typeof lastKey !== \"number\") {\n logger.warn(\"You can't go back, there is no step to go back\");\n return restoredStep;\n }\n const diff = HistoryManagerStatic._diffHistory.get(lastKey);\n if (diff) {\n try {\n let result = restoreDiffChanges(restoredStep, diff);\n GameUnifier.stepCounter = lastKey;\n this.delete(lastKey);\n return this.getOldGameState(steps - 1, result);\n } catch (e) {\n logger.error(\"Error applying diff\", e);\n return restoredStep;\n }\n } else {\n logger.warn(\"No diff found for the last step, cannot go back\");\n return restoredStep;\n }\n }\n public async back(props: StepLabelPropsType, options: { steps?: number } = {}) {\n const { steps = 1 } = options;\n if (!Number.isFinite(steps)) {\n logger.warn(`[back] The parameter steps must be a valid finite number, received: ${steps}`);\n return;\n }\n if (steps <= 0) {\n logger.warn(`[back] The parameter steps must be greater than 0, received: ${steps}`);\n return;\n }\n if (GameUnifier.runningStepsCount > 0) {\n GameUnifier.increaseBackRequest(steps);\n return;\n }\n if (HistoryManagerStatic._diffHistory.size < 1) {\n logger.warn(\"You can't go back, there is no step to go back\");\n return;\n }\n GameUnifier.runningStepsCount++;\n try {\n let restoredStep = createExportableElement(\n this.getOldGameState(steps, HistoryManagerStatic.originalStepData),\n );\n if (restoredStep) {\n await GameUnifier.restoreGameStepState(restoredStep, GameUnifier.navigate);\n const stepCounter = GameUnifier.stepCounter - 1;\n const item = HistoryManagerStatic._narrationHistory.get(stepCounter);\n if (item && Object.keys(item).length === 1 && item.stepIndex !== undefined) {\n const historyInfo = HistoryManagerStatic._stepsInfoHistory.get(stepCounter);\n if (historyInfo) {\n const narrativeHistory = this.itemMapper({\n step: historyInfo,\n });\n HistoryManagerStatic._narrationHistory.set(historyInfo.index, narrativeHistory);\n }\n }\n } else {\n logger.error(\"Error going back\");\n }\n HistoryManagerStatic.originalStepData = restoredStep;\n } catch (e) {\n logger.error(\"Error going back\", e);\n } finally {\n GameUnifier.runningStepsCount--;\n if (GameUnifier.runningStepsCount === 0 && GameUnifier.backRequestsCount !== 0) {\n return await GameUnifier.processNavigationRequests(props);\n }\n }\n }\n add(\n historyInfo: HistoryInfo,\n options: {\n ignoreSameStep?: boolean;\n } = {},\n ) {\n const originalStepData = HistoryManagerStatic.originalStepData;\n const { ignoreSameStep } = options;\n const currentStepData: GameStepState = GameUnifier.currentGameStepState;\n if (!ignoreSameStep && this.isSameStep(originalStepData, currentStepData)) {\n return;\n }\n const lastKey = this.lastKey;\n const asyncFunction = async () => {\n try {\n let lastStepHistory: Omit<HistoryStep, \"diff\"> | undefined = undefined;\n let lastNarrativeHistory: NarrationHistory | undefined = undefined;\n if (typeof lastKey === \"number\") {\n lastStepHistory = HistoryManagerStatic._stepsInfoHistory.get(lastKey);\n lastNarrativeHistory = HistoryManagerStatic._narrationHistory.get(lastKey);\n }\n\n HistoryManagerStatic._stepsInfoHistory.set(historyInfo.index, historyInfo);\n if (historyInfo.index !== 0) {\n let data = diff(originalStepData, currentStepData);\n if (data) {\n HistoryManagerStatic._diffHistory.set(historyInfo.index, data);\n } else {\n logger.warn(\"It was not possible to create the difference between the two steps\");\n }\n }\n let previousItem = {};\n const narrativeHistory = this.itemMapper(\n {\n step: historyInfo,\n },\n previousItem,\n );\n HistoryManagerStatic._narrationHistory.set(historyInfo.index, narrativeHistory);\n if (lastStepHistory && lastNarrativeHistory && typeof lastKey === \"number\") {\n const previousNarrativeHistory = this.itemMapper(\n {\n ...previousItem,\n step: lastStepHistory,\n },\n {},\n );\n HistoryManagerStatic._narrationHistory.set(lastKey, previousNarrativeHistory);\n }\n } catch (e) {\n logger.error(\"Error adding history step\", e);\n }\n };\n asyncFunction();\n HistoryManagerStatic.originalStepData = currentStepData;\n }\n itemMapper(\n item: {\n step: Omit<HistoryStep, \"diff\">;\n choiceIndexMade?: number;\n inputValue?: StorageElementType;\n removeDialogue?: boolean;\n },\n previousItem?: { choiceIndexMade?: number; inputValue?: StorageElementType; removeDialogue?: boolean },\n ): NarrationHistory {\n const { step, choiceIndexMade, inputValue, removeDialogue } = item;\n let dialogue = step.dialogue;\n if (previousItem && step.isGlued) {\n previousItem.removeDialogue = true;\n }\n if (removeDialogue) {\n dialogue = undefined;\n }\n let requiredChoices = step.choices;\n if (previousItem && step.currentLabel) {\n if (step.choiceIndexMade !== undefined) {\n previousItem.choiceIndexMade = step.choiceIndexMade;\n }\n }\n if (step.inputValue && previousItem) {\n previousItem.inputValue = step.inputValue;\n }\n if (dialogue || requiredChoices || inputValue) {\n let choices: HistoryChoiceMenuOption[] | undefined = requiredChoices?.map((choice, index) => {\n let hidden: boolean = false;\n if (choice.oneTime && step.alreadyMadeChoices && step.alreadyMadeChoices.includes(index)) {\n hidden = true;\n }\n return {\n text: choice.text,\n type: choice.type,\n isResponse: false,\n hidden: hidden,\n };\n });\n if (choices) {\n // if all choices are hidden find onlyHaveNoChoice\n if (choices.every((choice) => choice.hidden)) {\n let onlyHaveNoChoice = choices.find((choice) => choice.hidden === false);\n if (onlyHaveNoChoice) {\n onlyHaveNoChoice.hidden = false;\n }\n }\n if (choiceIndexMade !== undefined) {\n choices[choiceIndexMade].isResponse = true;\n }\n }\n return {\n dialogue: dialogue\n ? {\n ...dialogue,\n character: dialogue.character\n ? GameUnifier.getCharacter(dialogue.character) || dialogue.character\n : undefined,\n }\n : undefined,\n playerMadeChoice: typeof choiceIndexMade === \"number\",\n choices: choices,\n stepIndex: step.index,\n inputValue: inputValue,\n };\n }\n return {\n stepIndex: step.index,\n };\n }\n get narrativeHistory(): NarrationHistory[] {\n const result: NarrationHistory[] = [];\n const keys = Array.from(this.keys()).sort((a, b) => a - b);\n keys.forEach((key) => {\n const item = this.get(key);\n if (item) {\n result.push(item);\n }\n });\n return result;\n }\n get currentLabelHistory(): NarrationHistory[] {\n const result: NarrationHistory[] = [];\n const keys = Array.from(this.keys()).sort((a, b) => b - a);\n if (keys.length === 0) {\n return result;\n }\n const lastKey = keys[0];\n if (typeof lastKey !== \"number\") {\n return result;\n }\n const lastItem = HistoryManagerStatic._stepsInfoHistory.get(lastKey);\n if (!lastItem) {\n return result;\n }\n const openedLabels = lastItem.openedLabels;\n if (!openedLabels || !Array.isArray(openedLabels) || openedLabels.length === 0) {\n return result;\n }\n let currentStepIndex = openedLabels[0].currentStepIndex;\n const label = openedLabels[0].label;\n\n keys.every((key, index) => {\n const item = this.get(key);\n if (item) {\n if (index === 0) {\n result.push(item);\n return true;\n }\n const info = HistoryManagerStatic._stepsInfoHistory.get(key);\n if (!info) {\n return true;\n }\n const openedLabelsTemp = info.openedLabels;\n if (!openedLabelsTemp || !Array.isArray(openedLabelsTemp) || openedLabelsTemp.length === 0) {\n return false;\n }\n if (openedLabelsTemp[0].label !== label || openedLabelsTemp[0].currentStepIndex >= currentStepIndex) {\n return false;\n }\n currentStepIndex = openedLabelsTemp[0].currentStepIndex;\n result.push(item);\n }\n return true;\n });\n\n return result.reverse();\n }\n removeNarrativeHistory(itemsNumber?: number) {\n if (itemsNumber) {\n let keys = Array.from(this.keys()).sort((a, b) => a - b);\n // get the first itemsNumber keys\n keys = keys.slice(0, itemsNumber);\n keys.forEach((key) => {\n HistoryManagerStatic._narrationHistory.delete(key);\n HistoryManagerStatic._stepsInfoHistory.delete(key);\n HistoryManagerStatic._diffHistory.delete(key);\n });\n } else {\n HistoryManagerStatic._stepsInfoHistory.clear();\n HistoryManagerStatic._diffHistory.clear();\n HistoryManagerStatic._narrationHistory.clear();\n }\n }\n get canGoBack(): boolean {\n const lastKey = this.lastKey;\n if (typeof lastKey !== \"number\") {\n return false;\n }\n return HistoryManagerStatic._diffHistory.has(lastKey);\n }\n blockGoBack() {\n if (GameUnifier.runningStepsCount !== 0) {\n return;\n }\n HistoryManagerStatic._diffHistory.clear();\n }\n\n private isSameStep(originalState: GameStepState, newState: GameStepState) {\n if (originalState.openedLabels.length === newState.openedLabels.length) {\n try {\n let lastStepDataOpenedLabelsString = JSON.stringify(originalState.openedLabels);\n let historyStepOpenedLabelsString = JSON.stringify(newState.openedLabels);\n if (\n lastStepDataOpenedLabelsString === historyStepOpenedLabelsString &&\n originalState.path === newState.path &&\n originalState.labelIndex === newState.labelIndex\n ) {\n return true;\n }\n } catch (e) {\n logger.error(\"Error comparing opened labels\", e);\n return true;\n }\n }\n return false;\n }\n\n public clear() {\n HistoryManagerStatic._stepsInfoHistory.clear();\n HistoryManagerStatic._diffHistory.clear();\n HistoryManagerStatic._narrationHistory.clear();\n HistoryManagerStatic._originalStepData = undefined;\n }\n\n get stepLimitSaved() {\n return HistoryManagerStatic.stepLimitSaved;\n }\n set stepLimitSaved(limit: number) {\n HistoryManagerStatic.stepLimitSaved = limit;\n }\n\n /* Export and Import Methods */\n\n public export(): HistoryGameState {\n let keys = Array.from(this.keys()).sort((a, b) => a - b);\n // take only last the this.stepLimitSaved steps\n if (keys.length > this.stepLimitSaved) {\n keys = keys.slice(keys.length - this.stepLimitSaved);\n }\n let stepsHistory: HistoryStep[] = [];\n keys.forEach((key) => {\n const step = HistoryManagerStatic._stepsInfoHistory.get(key);\n if (step) {\n let diff = HistoryManagerStatic._diffHistory.get(key);\n stepsHistory.push({\n ...step,\n diff: diff,\n });\n }\n });\n return {\n stepsHistory: createExportableElement(stepsHistory),\n originalStepData: createExportableElement(HistoryManagerStatic._originalStepData),\n };\n }\n restoreNarrativeHistory() {\n const keys = Array.from(this.keys()).sort((a, b) => a - b);\n let previousItem: {\n choiceIndexMade?: number;\n inputValue?: StorageElementType;\n removeDialogue?: boolean;\n } = {};\n\n // Iterate over the stepsHistory array in reverse order\n keys.forEach((key) => {\n const step = HistoryManagerStatic._stepsInfoHistory.get(key);\n if (step) {\n let moreInfo = {\n ...previousItem,\n };\n previousItem = {};\n let res = this.itemMapper(\n {\n step: step,\n choiceIndexMade: moreInfo.choiceIndexMade,\n inputValue: moreInfo.inputValue,\n removeDialogue: moreInfo.removeDialogue,\n },\n previousItem,\n );\n if (res) {\n HistoryManagerStatic._narrationHistory.set(key, res);\n }\n }\n });\n }\n public async restore(data: object) {\n this.clear();\n try {\n if (data.hasOwnProperty(\"stepsHistory\")) {\n const stepsHistory = (data as HistoryGameState)[\"stepsHistory\"];\n stepsHistory.forEach((step: HistoryStep) => {\n if (step.diff) {\n HistoryManagerStatic._diffHistory.set(step.index, step.diff);\n }\n let info = { ...step, diff: undefined };\n HistoryManagerStatic._stepsInfoHistory.set(step.index, info);\n });\n this.restoreNarrativeHistory();\n } else {\n logger.warn(\"Could not import stepsHistory data, so will be ignored\");\n }\n if (data.hasOwnProperty(\"originalStepData\")) {\n HistoryManagerStatic._originalStepData = (data as HistoryGameState)[\"originalStepData\"];\n } else {\n logger.warn(\"Could not import originalStepData data, so will be ignored\");\n }\n } catch (e) {\n logger.error(\"Error importing data\", e);\n }\n }\n}\n","import HistoryManager from \"./HistoryManager\";\nimport HistoryManagerInterface from \"./interfaces/HistoryManagerInterface\";\n\nexport { default as HistoryManagerStatic } from \"./HistoryManagerStatic\";\nexport type { default as HistoryGameState } from \"./interfaces/HistoryGameState\";\nexport type { default as HistoryManagerInterface } from \"./interfaces/HistoryManagerInterface\";\nexport { stepHistory };\n\nconst stepHistory: HistoryManagerInterface = new HistoryManager();\n"]}