``` ~/go/bin/sourcemapper -output ddb -jsurl https://media.dndbeyond.com/character-app/static/js/main.90aa78c5.js ```
87 lines
5.1 KiB
JavaScript
87 lines
5.1 KiB
JavaScript
import { orderBy } from 'lodash';
|
|
import { RuleDataUtils } from "../engine/RuleData";
|
|
import { Constants } from "../index";
|
|
import { getActionManager } from "./ActionManager";
|
|
import { getActivatableManager } from "./ActivatableManager";
|
|
import { getAttackManager } from "./AttackManager";
|
|
import { MessageManager } from "./MessageManager";
|
|
import { rulesEngineSelectors } from "../selectors";
|
|
export var ActivationGroupKeyEnum;
|
|
(function (ActivationGroupKeyEnum) {
|
|
ActivationGroupKeyEnum["ACTIONS"] = "ACTIONS";
|
|
ActivationGroupKeyEnum["BONUS_ACTIONS"] = "BONUS_ACTIONS";
|
|
ActivationGroupKeyEnum["REACTIONS"] = "REACTIONS";
|
|
ActivationGroupKeyEnum["OTHER"] = "OTHER";
|
|
})(ActivationGroupKeyEnum || (ActivationGroupKeyEnum = {}));
|
|
export class ActionsManager extends MessageManager {
|
|
constructor(params) {
|
|
super(params);
|
|
this.params = params;
|
|
}
|
|
getActions() {
|
|
const actions = rulesEngineSelectors.getActions(this.state);
|
|
return actions.map((action) => getActionManager(Object.assign(Object.assign({}, this.params), { action })));
|
|
}
|
|
getCustomActions() {
|
|
const customActions = rulesEngineSelectors.getCustomActions(this.state);
|
|
return customActions.map((action) => getActionManager(Object.assign(Object.assign({}, this.params), { action })));
|
|
}
|
|
getAttacksPerActionInfo() {
|
|
return rulesEngineSelectors.getAttacksPerActionInfo(this.state);
|
|
}
|
|
getAttackGroups() {
|
|
const attackGroups = {};
|
|
const attacks = rulesEngineSelectors.getAttacks(this.state);
|
|
const attackManagers = attacks.map((attack) => getAttackManager(Object.assign(Object.assign({}, this.params), { attack })));
|
|
attackGroups[ActivationGroupKeyEnum.ACTIONS] = attackManagers.filter((manager) => manager.isActionGroup());
|
|
attackGroups[ActivationGroupKeyEnum.BONUS_ACTIONS] = attackManagers.filter((manager) => manager.isBonusActionGroup());
|
|
attackGroups[ActivationGroupKeyEnum.REACTIONS] = attackManagers.filter((manager) => manager.isReactionGroup());
|
|
attackGroups[ActivationGroupKeyEnum.OTHER] = attackManagers.filter((manager) => manager.isOtherGroup());
|
|
return attackGroups;
|
|
}
|
|
getBasicActions() {
|
|
const ruleData = rulesEngineSelectors.getRuleData(this.state);
|
|
return ruleData.basicActions;
|
|
}
|
|
getBasicActionGroups() {
|
|
const basicActionGroups = {};
|
|
const ruleData = rulesEngineSelectors.getRuleData(this.state);
|
|
const actionBasicActions = RuleDataUtils.getActivationTypeBasicActions(Constants.ActivationTypeEnum.ACTION, ruleData);
|
|
const bonusBasicActions = RuleDataUtils.getActivationTypeBasicActions(Constants.ActivationTypeEnum.BONUS_ACTION, ruleData);
|
|
const reactionBasicActions = RuleDataUtils.getActivationTypeBasicActions(Constants.ActivationTypeEnum.REACTION, ruleData);
|
|
const otherBasicActions = [
|
|
...RuleDataUtils.getActivationTypeBasicActions(Constants.ActivationTypeEnum.NO_ACTION, ruleData),
|
|
...RuleDataUtils.getActivationTypeBasicActions(Constants.ActivationTypeEnum.MINUTE, ruleData),
|
|
...RuleDataUtils.getActivationTypeBasicActions(Constants.ActivationTypeEnum.HOUR, ruleData),
|
|
...RuleDataUtils.getActivationTypeBasicActions(Constants.ActivationTypeEnum.SPECIAL, ruleData),
|
|
];
|
|
basicActionGroups[ActivationGroupKeyEnum.ACTIONS] = ActionsManager.sortBasicActions(actionBasicActions);
|
|
basicActionGroups[ActivationGroupKeyEnum.BONUS_ACTIONS] = ActionsManager.sortBasicActions(bonusBasicActions);
|
|
basicActionGroups[ActivationGroupKeyEnum.REACTIONS] = ActionsManager.sortBasicActions(reactionBasicActions);
|
|
basicActionGroups[ActivationGroupKeyEnum.OTHER] = ActionsManager.sortBasicActions(otherBasicActions);
|
|
return basicActionGroups;
|
|
}
|
|
static sortBasicActions(basicActions) {
|
|
return orderBy(basicActions, [(basicAction) => basicAction.name], ['asc']);
|
|
}
|
|
getActionGroups() {
|
|
const actionGroups = {};
|
|
const activatables = rulesEngineSelectors.getActivatables(this.state);
|
|
const activatableManagers = activatables.map((activatable) => getActivatableManager(Object.assign(Object.assign({}, this.params), { activatable })));
|
|
actionGroups[ActivationGroupKeyEnum.ACTIONS] = activatableManagers.filter((manager) => manager.isActionGroup());
|
|
actionGroups[ActivationGroupKeyEnum.BONUS_ACTIONS] = activatableManagers.filter((manager) => manager.isBonusActionGroup());
|
|
actionGroups[ActivationGroupKeyEnum.REACTIONS] = activatableManagers.filter((manager) => manager.isReactionGroup());
|
|
actionGroups[ActivationGroupKeyEnum.OTHER] = activatableManagers.filter((manager) => manager.isOtherGroup());
|
|
return actionGroups;
|
|
}
|
|
getRitualSpellGroups() {
|
|
const ritualSpellGroups = {};
|
|
const ritualSpells = rulesEngineSelectors.getRitualSpells(this.state);
|
|
ritualSpellGroups[ActivationGroupKeyEnum.ACTIONS] = [];
|
|
ritualSpellGroups[ActivationGroupKeyEnum.BONUS_ACTIONS] = [];
|
|
ritualSpellGroups[ActivationGroupKeyEnum.REACTIONS] = [];
|
|
ritualSpellGroups[ActivationGroupKeyEnum.OTHER] = ritualSpells;
|
|
return ritualSpellGroups;
|
|
}
|
|
}
|