Grabbed dndbeyond's source code
``` ~/go/bin/sourcemapper -output ddb -jsurl https://media.dndbeyond.com/character-app/static/js/main.90aa78c5.js ```
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user