diff --git a/src/engine/mbEnums.java b/src/engine/mbEnums.java index a126d074..3689dd9a 100644 --- a/src/engine/mbEnums.java +++ b/src/engine/mbEnums.java @@ -1335,123 +1335,41 @@ public class mbEnums { } } - public enum ModBehaviorType { + @FunctionalInterface + public interface ModBehaviorFunction { + Object apply(AbstractCharacter caster, AbstractWorldObject target, Power power, + PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank); + } - Flag { - @Override - public Object apply(AbstractCharacter caster, AbstractWorldObject target, Power power, - PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) { - return Behaviour.Flag(caster, target, power, powerAction, effect, modifierEntry, rank); - } - }, - MapIntToInts { - @Override - public Object apply(AbstractCharacter caster, AbstractWorldObject target, Power power, - PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) { - return Behaviour.MapIntToInts(caster, target, power, powerAction, effect, modifierEntry, rank); - } - }, - Standard { - @Override - public Object apply(AbstractCharacter caster, AbstractWorldObject target, Power power, - PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) { - return Behaviour.Standard(caster, target, power, powerAction, effect, modifierEntry, rank); - } - }, - FPSubTypeAttr { - @Override - public Object apply(AbstractCharacter caster, AbstractWorldObject target, Power power, - PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) { - return Behaviour.FPSubTypeAttr(caster, target, power, powerAction, effect, modifierEntry, rank); - } - }, - SubTypeSourceType { - @Override - public Object apply(AbstractCharacter caster, AbstractWorldObject target, Power power, - PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) { - return Behaviour.SubTypeSourceType(caster, target, power, powerAction, effect, modifierEntry, rank); - } - }, - SubTypePowerType { - @Override - public Object apply(AbstractCharacter caster, AbstractWorldObject target, Power power, - PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) { - return Behaviour.SubTypePowerType(caster, target, power, powerAction, effect, modifierEntry, rank); - } - }, - SubTypeSkill { - @Override - public Object apply(AbstractCharacter caster, AbstractWorldObject target, Power power, - PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) { - return Behaviour.SubTypeSkill(caster, target, power, powerAction, effect, modifierEntry, rank); - } - }, - FPSubTypeDmg { - @Override - public Object apply(AbstractCharacter caster, AbstractWorldObject target, Power power, - PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) { - return Behaviour.FPSubTypeDmg(caster, target, power, powerAction, effect, modifierEntry, rank); - } - }, - DD { - @Override - public Object apply(AbstractCharacter caster, AbstractWorldObject target, Power power, - PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) { - return Behaviour.DD(caster, target, power, powerAction, effect, modifierEntry, rank); - } - }, - String { - @Override - public Object apply(AbstractCharacter caster, AbstractWorldObject target, Power power, - PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) { - return Behaviour.StringBehaviour(caster, target, power, powerAction, effect, modifierEntry, rank); - } - }, - SubTypeMod { - @Override - public Object apply(AbstractCharacter caster, AbstractWorldObject target, Power power, - PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) { - return Behaviour.SubTypeMod(caster, target, power, powerAction, effect, modifierEntry, rank); - } - }, - SubTypePower { - @Override - public Object apply(AbstractCharacter caster, AbstractWorldObject target, Power power, - PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) { - return Behaviour.SubTypePower(caster, target, power, powerAction, effect, modifierEntry, rank); - } - }, - SubTypeDmg { - @Override - public Object apply(AbstractCharacter caster, AbstractWorldObject target, Power power, - PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) { - return Behaviour.SubTypeDmg(caster, target, power, powerAction, effect, modifierEntry, rank); - } - }, - FPSubTypeSkill { - @Override - public Object apply(AbstractCharacter caster, AbstractWorldObject target, Power power, - PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) { - return Behaviour.FPSubTypeSkill(caster, target, power, powerAction, effect, modifierEntry, rank); - } - }, - FPSubTypeMonster { - @Override - public Object apply(AbstractCharacter caster, AbstractWorldObject target, Power power, - PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) { - return Behaviour.FPSubTypeMonster(caster, target, power, powerAction, effect, modifierEntry, rank); - } - }, - ProcInfo { - @Override - public Object apply(AbstractCharacter caster, AbstractWorldObject target, Power power, - PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) { - return Behaviour.ProcInfo(caster, target, power, powerAction, effect, modifierEntry, rank); - } - }; + public enum ModBehaviorType { - public abstract Object apply(AbstractCharacter caster, AbstractWorldObject target, Power power, - PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank); + Flag(Behaviour::Flag), + MapIntToInts(Behaviour::MapIntToInts), + Standard(Behaviour::Standard), + FPSubTypeAttr(Behaviour::FPSubTypeAttr), + SubTypeSourceType(Behaviour::SubTypeSourceType), + SubTypePowerType(Behaviour::SubTypePowerType), + SubTypeSkill(Behaviour::SubTypeSkill), + FPSubTypeDmg(Behaviour::FPSubTypeDmg), + DD(Behaviour::DD), + String(Behaviour::StringBehaviour), + SubTypeMod(Behaviour::SubTypeMod), + SubTypePower(Behaviour::SubTypePower), + SubTypeDmg(Behaviour::SubTypeDmg), + FPSubTypeSkill(Behaviour::FPSubTypeSkill), + FPSubTypeMonster(Behaviour::FPSubTypeMonster), + ProcInfo(Behaviour::ProcInfo); + + private final ModBehaviorFunction function; + + ModBehaviorType(ModBehaviorFunction function) { + this.function = function; + } + + public Object apply(AbstractCharacter caster, AbstractWorldObject target, Power power, + PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) { + return function.apply(caster, target, power, powerAction, effect, modifierEntry, rank); + } } public enum MovementState {