package net.alcuria.umbracraft.definitions.skill.actions;
import net.alcuria.umbracraft.definitions.Definition;
import net.alcuria.umbracraft.definitions.component.ComponentDefinition;
import net.alcuria.umbracraft.util.StringUtils;
/** Defines an action for the game's battle system. No logic is contained within
* the definition.
* @author Andrew Keturi */
public abstract class SkillActionDefinition extends Definition {
public static enum SkillActionType {
APPROACH(ApproachSkillActionDefinition.class), //
CAMERA(CameraChangeActionDefinition.class), //
DAMAGE(DamageSkillActionDefinition.class), //
GRID_EFFECT(PlaceGridEffectActionDefinition.class), //
POSE_CHANGE(PoseChangeActionDefinition.class), //
PROJECTILE(ProjectileSkillActionDefinition.class), //
RETURN(ReturnSkillActionDefinition.class), //
SHAKE(ShakeScreenSkillActionDefinition.class), //
SOUND(PlaySoundSkillActionDefinition.class), //
TIMED(TimedHitSkillActionDefinition.class), //
WAIT(WaitSkillActionDefinition.class);
/** The component type's corresponding {@link ComponentDefinition} */
public final Class<? extends SkillActionDefinition> clazz;
private SkillActionType(Class<? extends SkillActionDefinition> clazz) {
this.clazz = clazz;
}
@Override
public String toString() {
return StringUtils.splitCamelCase(clazz.getSimpleName().replace("SkillActionDefinition", "").replace("ActionDefinition", ""));
}
}
public abstract SkillActionDefinition cpy();
@Override
public String getName() {
return "Action";
}
@Override
public String getTag() {
return "";
}
}