Files
5etools-mirror-2.github.io/js/bestiary/bestiary-encounterbuilder-component.js
TheGiddyLimit 8117ebddc5 v1.198.1
2024-01-01 19:34:49 +00:00

38 lines
1.1 KiB
JavaScript

import {EncounterBuilderComponent} from "../encounterbuilder/encounterbuilder-component.js";
export class EncounterBuilderComponentBestiary extends EncounterBuilderComponent {
getSublistPluginState () {
return {
// region Special handling for `creatureMetas`
items: this._state.creatureMetas
.map(creatureMeta => ({
h: creatureMeta.getHash(),
c: creatureMeta.count,
customHashId: creatureMeta.customHashId || undefined,
l: creatureMeta.isLocked,
})),
sources: this._state.creatureMetas
.map(creatureMeta => creatureMeta.creature.source)
.unique(),
// endregion
...Object.fromEntries(
Object.entries(this._state)
.filter(([k]) => k !== "creatureMetas")
.map(([k, v]) => [k, MiscUtil.copyFast(v)]),
),
};
}
/** Get a generic representation of the encounter, which can be used elsewhere. */
static getStateFromExportedSublist ({exportedSublist}) {
exportedSublist = MiscUtil.copyFast(exportedSublist);
const out = this._getDefaultState();
Object.keys(out)
.filter(k => exportedSublist[k] != null)
.forEach(k => out[k] = exportedSublist[k]);
return out;
}
}