Browse Source

Less boilerplate using functional interface

feature-config-usage
MagicBot 1 day ago
parent
commit
2c3d5a3fcf
  1. 140
      src/engine/mbEnums.java

140
src/engine/mbEnums.java

@ -1335,123 +1335,41 @@ public class mbEnums {
} }
} }
@FunctionalInterface
public interface ModBehaviorFunction {
Object apply(AbstractCharacter caster, AbstractWorldObject target, Power power,
PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank);
}
public enum ModBehaviorType { public enum ModBehaviorType {
Flag { Flag(Behaviour::Flag),
@Override MapIntToInts(Behaviour::MapIntToInts),
public Object apply(AbstractCharacter caster, AbstractWorldObject target, Power power, Standard(Behaviour::Standard),
PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) { FPSubTypeAttr(Behaviour::FPSubTypeAttr),
return Behaviour.Flag(caster, target, power, powerAction, effect, modifierEntry, rank); SubTypeSourceType(Behaviour::SubTypeSourceType),
} SubTypePowerType(Behaviour::SubTypePowerType),
}, SubTypeSkill(Behaviour::SubTypeSkill),
MapIntToInts { FPSubTypeDmg(Behaviour::FPSubTypeDmg),
@Override DD(Behaviour::DD),
public Object apply(AbstractCharacter caster, AbstractWorldObject target, Power power, String(Behaviour::StringBehaviour),
PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) { SubTypeMod(Behaviour::SubTypeMod),
return Behaviour.MapIntToInts(caster, target, power, powerAction, effect, modifierEntry, rank); SubTypePower(Behaviour::SubTypePower),
} SubTypeDmg(Behaviour::SubTypeDmg),
}, FPSubTypeSkill(Behaviour::FPSubTypeSkill),
Standard { FPSubTypeMonster(Behaviour::FPSubTypeMonster),
@Override ProcInfo(Behaviour::ProcInfo);
public Object apply(AbstractCharacter caster, AbstractWorldObject target, Power power,
PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) { private final ModBehaviorFunction function;
return Behaviour.Standard(caster, target, power, powerAction, effect, modifierEntry, rank);
} ModBehaviorType(ModBehaviorFunction function) {
}, this.function = function;
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, public Object apply(AbstractCharacter caster, AbstractWorldObject target, Power power,
PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) { PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank) {
return Behaviour.ProcInfo(caster, target, power, powerAction, effect, modifierEntry, rank); return function.apply(caster, target, power, powerAction, effect, modifierEntry, rank);
} }
};
public abstract Object apply(AbstractCharacter caster, AbstractWorldObject target, Power power,
PowerAction powerAction, Effect effect, ModifierEntry modifierEntry, Integer rank);
} }
public enum MovementState { public enum MovementState {

Loading…
Cancel
Save