``` ~/go/bin/sourcemapper -output ddb -jsurl https://media.dndbeyond.com/character-app/static/js/main.90aa78c5.js ```
57 lines
2.6 KiB
JavaScript
57 lines
2.6 KiB
JavaScript
import { ActionAccessors } from "../engine/Action";
|
|
import { ActivatableTypeEnum } from "../engine/Core";
|
|
import { ActionManager, Constants } from "../index";
|
|
import { BaseManager } from './BaseManager';
|
|
export const activatableManagerMap = new Map();
|
|
export const getActivatableManager = (params) => {
|
|
const { activatable } = params;
|
|
const key = activatable.key;
|
|
if (activatableManagerMap.has(key)) {
|
|
const activatableManager = activatableManagerMap.get(key);
|
|
if (!activatableManager) {
|
|
throw new Error(`ActivatableManager for activatable ${key} is null`);
|
|
}
|
|
if (activatableManager.activatable === activatable) {
|
|
return activatableManager;
|
|
}
|
|
}
|
|
const newActivatableManager = new ActivatableManager(params);
|
|
activatableManagerMap.set(key, newActivatableManager);
|
|
return newActivatableManager;
|
|
};
|
|
export class ActivatableManager extends BaseManager {
|
|
constructor(params) {
|
|
super(params);
|
|
// Accessors
|
|
this.getSortText = () => this.activatable.sortText;
|
|
this.getType = () => this.activatable.type;
|
|
this.getActivationType = () => this.activatable.activation.activationType;
|
|
this.getEntity = () => this.activatable.entity;
|
|
this.getEntityAsActionManager = () => {
|
|
const action = this.getEntity();
|
|
return ActionManager.getActionManager(ActionAccessors.getUniqueKey(action));
|
|
};
|
|
// Utils
|
|
this.isFeature = () => {
|
|
const type = this.getType();
|
|
return type !== ActivatableTypeEnum.CLASS_SPELL && type !== ActivatableTypeEnum.CHARACTER_SPELL;
|
|
};
|
|
this.isSpell = () => {
|
|
const type = this.getType();
|
|
return type === ActivatableTypeEnum.CLASS_SPELL || type === ActivatableTypeEnum.CHARACTER_SPELL;
|
|
};
|
|
this.isAction = () => this.getType() === ActivatableTypeEnum.ACTION;
|
|
this.isActionGroup = () => this.getActivationType() === Constants.ActivationTypeEnum.ACTION && !this.isSpell();
|
|
this.isBonusActionGroup = () => this.getActivationType() === Constants.ActivationTypeEnum.BONUS_ACTION;
|
|
this.isReactionGroup = () => this.getActivationType() === Constants.ActivationTypeEnum.REACTION;
|
|
this.isOtherGroup = () => {
|
|
const activationType = this.getActivationType();
|
|
return (activationType !== Constants.ActivationTypeEnum.ACTION &&
|
|
activationType !== Constants.ActivationTypeEnum.BONUS_ACTION &&
|
|
activationType !== Constants.ActivationTypeEnum.REACTION);
|
|
};
|
|
this.params = params;
|
|
this.activatable = params.activatable;
|
|
}
|
|
}
|