534779bf-2289-4663-9d2c-9668b25ed6a3.js.map
17.1 KB
{"version":3,"sources":["assets/script/avg/PlotManager.ts"],"names":[],"mappings":"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","file":"","sourceRoot":"/","sourcesContent":["import { Emitter } from \"simba-eventkit\";\nimport { ActionManager } from \"./ActionManager\";\nimport { EditorEvents } from \"./EditorEvents\";\nimport { GameRecord } from \"./game-data/GameRecord\";\nimport { getPlot, initPlotsData, initCustomPlots, addCustomPlotData, getChapterPlots } from \"./game-data/PlotsData\";\nimport { PlotJumpType, ReadonlyPlot, ReadonlyPlots, SpecialPlotId, Plot } from \"./model/PlotModel\";\nimport { evalConditionExpr } from \"./utils/PlotUtils\";\n\nexport namespace PlotManager {\n let emitter = new Emitter;\n let currentPlots: ReadonlyPlot[] = [];\n\n export function getCurrentPlots(): ReadonlyPlots {\n return currentPlots;\n }\n\n // 剧情开始,需要在特定场景展现、执行Action等\n export const PlotStartEvent = emitter.createEvent<(plots: ReadonlyPlots) => void>();\n\n // 剧情将要开始,可根据将要开始的剧情修改存档数据保存\n export const PlotWillStart = emitter.createEvent<(plot: ReadonlyPlot | undefined, branch: number) => void>();\n\n export const PlotsRollbackEvent = emitter.createEvent<(plots: ReadonlyPlots) => void>();\n\n let customPlotId = SpecialPlotId.CustomPlotStart;\n\n let plotSelections: { [key: number]: number };\n\n export function getPlotSelection(plotId: number) {\n return plotSelections[plotId];\n }\n\n export async function init() {\n await initPlotsData();\n GameRecord.initRecords();\n customPlotId = GameRecord.globalVariables.customPlotId;\n initCustomPlots(GameRecord.globalVariables.customPlots);\n\n EditorEvents.START_PLOT_BRANCH.on((param: string) => {\n let plotId = parseInt(param);\n return startNewPlotBranch(plotId);\n });\n }\n\n // Add custom plot and return plot id\n export function addCustomPlot(plot: Plot): void {\n plot.id = customPlotId--;\n addCustomPlotData(plot);\n GameRecord.globalVariables.customPlotId = customPlotId;\n GameRecord.globalVariables.customPlots = getChapterPlots(-100);\n GameRecord.autoSave();\n }\n\n export function addCustomPlots(plots: Plot[]): void {\n for (let plot of plots) {\n plot.id = customPlotId--;\n addCustomPlotData(plot);\n }\n GameRecord.globalVariables.customPlotId = customPlotId;\n GameRecord.globalVariables.customPlots = getChapterPlots(-100);\n GameRecord.autoSave();\n }\n\n export async function start(recordIndex: number = 0) {\n let plots = GameRecord.startGameWithRecord(recordIndex);\n currentPlots = await Promise.all(plots.map(v => getPlot(v))) as ReadonlyPlot[];\n\n plotSelections = {};\n\n let items = GameRecord.getCurrentRecordItems();\n\n for (let p of items) {\n if (p.s) {\n for (let i = 0; i < p.p.length; i++) {\n if (p.s[i] !== undefined) {\n plotSelections[p.p[i]] = p.s[i];\n }\n }\n }\n }\n\n // 检查未完待续剧情,如有新剧情修改存档数据\n for (let i = 0; i < plots.length; i++) {\n let plotId = plots[i];\n if (plotId === SpecialPlotId.ToBeContinued) {\n let index = items.length - 2;\n for (; index >= 0; index--) {\n if (items[index].p[i] >= 0) {\n plotId = items[index].p[i];\n break;\n }\n }\n if (plotId < 0) throw new Error(\"Record error.\");\n let plot = (await getPlot(plotId))!;\n let sels = items[index].s;\n let nextPlot = (await getNextPlot(plot, sels ? sels[i] : undefined))!;\n if (nextPlot.id >= 0) {\n for (let j = index + 1; j < items.length; j++) { // 修改存档数据\n (items[index].p as number[])[i] = nextPlot.id;\n }\n }\n currentPlots[i] = nextPlot as ReadonlyPlot;\n }\n }\n\n PlotStartEvent.emit(currentPlots);\n return currentPlots;\n }\n\n export async function startNewPlotBranch(plotId: number) {\n let index = currentPlots.findIndex(v => v && v.id === plotId);\n if (index >= 0) {\n console.warn(\"startNewPlotBranch: plot already exist.\", plotId);\n return -1;\n }\n let plot = await getPlot(plotId);\n await Promise.all(PlotWillStart.emit(plot, index));\n let history = GameRecord.getCurrentRecordItems();\n index = history[history.length - 1].p.length;\n let plots = GameRecord.startPlot(plotId, index);\n currentPlots = await Promise.all(plots.map(v => getPlot(v))) as ReadonlyPlot[];\n PlotStartEvent.emit(currentPlots);\n return index;\n }\n\n export async function getNextPlot(plot: ReadonlyPlot, selectOption?: number) {\n let id = getNextPlotId(plot, selectOption);\n return getPlot(id);\n }\n\n function getNextPlotId(plot: ReadonlyPlot, selectOption?: number | string, saveToRecord?: boolean) {\n let nextPlotId: number;\n if (selectOption !== undefined && selectOption !== null) {\n if (plot.jump.type !== PlotJumpType.Select) {\n throw new Error(\"Plot jump type error\");\n }\n let selectIndex: number;\n if (typeof selectOption === \"string\") {\n for (let i = 0; i < plot.jump.jumps.length; i++) {\n if (plot.jump.jumps[i].id == selectOption) {\n selectIndex = i;\n }\n }\n } else {\n selectIndex = selectOption;\n }\n if (selectIndex! >= plot.jump.jumps.length) {\n throw new Error(\"Invalid option\");\n\n }\n if (saveToRecord) {\n GameRecord.setSelectOptionForPlot(plot.id, selectIndex!);\n }\n nextPlotId = plot.jump.jumps[selectIndex!].toPlot;\n } else {\n if (plot.jump.type !== PlotJumpType.Condition) {\n throw new Error(\"Plot jump type error\");\n }\n let conditions = plot.jump.conditionBranches;\n if (conditions) {\n try {\n for (let cond of conditions) {\n if (cond.condition && evalConditionExpr(cond.condition)) {\n nextPlotId = cond.toPlot;\n break;\n }\n }\n } catch (e) {\n\n }\n }\n if (nextPlotId! === undefined) nextPlotId = plot.jump.toPlot;\n }\n return nextPlotId;\n }\n\n export async function completePlot(plot: ReadonlyPlot, selectOption?: number | string, customData?: object) {\n let plotIndex = currentPlots.findIndex(v => v && v.id === plot.id);\n if (plotIndex < 0) throw new Error(\"Invalid plot\");\n GameRecord.startTransaction();\n if (selectOption !== undefined) {\n await Promise.all(EditorEvents.emitter.emit(\"SELECT_OPTION_\" + ((typeof selectOption === \"number\") ? selectOption + 1 : selectOption)));\n }\n await Promise.all(EditorEvents.PLOT_END.emit(plot.id.toString()));\n ActionManager.stop();\n let nextPlotId: number = getNextPlotId(plot, selectOption, true);\n if (customData) {\n GameRecord.setPlotCustomData(plotIndex, customData);\n }\n let nextPlot = await getPlot(nextPlotId);\n await Promise.all(PlotWillStart.emit(nextPlot, plotIndex));\n let plots = GameRecord.startPlot(nextPlotId, plotIndex);\n GameRecord.endTransaction();\n if (typeof selectOption === \"number\") {\n plotSelections[plot.id] = selectOption;\n }\n currentPlots = await Promise.all(plots.map(v => getPlot(v))) as ReadonlyPlot[];\n PlotStartEvent.emit(currentPlots);\n return currentPlots;\n }\n\n export async function rollbackToPlot(plot: number, reverseFind = false, preserveVars?: string[]) {\n GameRecord.rollbackToPlot(plot, reverseFind, preserveVars);\n return rollbackFinished();\n }\n\n export function rollbackToIndex(index: number, preserveVars?: string[]) {\n GameRecord.rollbackToIndex(index, preserveVars);\n return rollbackFinished();\n }\n\n async function rollbackFinished() {\n let recordItems = GameRecord.getCurrentRecordItems();\n plotSelections = {};\n for (let p of recordItems) {\n if (p.s) {\n for (let i = 0; i < p.p.length; i++) {\n if (p.s[i] !== undefined) {\n plotSelections[p.p[i]] = p.s[i];\n }\n }\n }\n }\n let plots = recordItems[recordItems.length - 1].p;\n currentPlots = await Promise.all(plots.map(v => getPlot(v))) as ReadonlyPlot[];\n PlotsRollbackEvent.emit(currentPlots);\n return currentPlots;\n }\n}"]}