package net.mostlyoriginal.game.component.ship; import com.artemis.Component; import net.mostlyoriginal.api.component.graphics.Color; import net.mostlyoriginal.api.utils.reference.EntityReference; import net.mostlyoriginal.api.utils.GdxUtil; /** * @author Daan van Yperen */ public class CrewMember extends Component { public String name; public String animId; public Effect effect = Effect.HEALTHY; public int age = 0; public transient EntityReference icon; public transient EntityReference labelName; public transient EntityReference labelStatus; public transient EntityReference biogelButton; public CrewMember(String name, String animId, Effect effect) { this.name = name; this.animId = animId; this.effect = effect; } public static enum Ability { EAT, PILOT, GIVE_BIRTH, BUILD, INFECTABLE, AGE, INFECT, /** Offsets infected crewmembers. */ COUNTER_INFECTED, BIOGELLABLE } public static enum Effect { /** Nothing wrong. */ HEALTHY("Healthy", null, GdxUtil.asColor("2C4142"), Ability.PILOT, Ability.EAT, Ability.BUILD, Ability.GIVE_BIRTH, Ability.INFECTABLE, Ability.AGE, Ability.COUNTER_INFECTED), /** Nothing wrong. */ HUNGRY("Hungry", null,GdxUtil.asColor("46140B"), Ability.PILOT, Ability.EAT, Ability.BUILD, Ability.GIVE_BIRTH, Ability.INFECTABLE, Ability.AGE, Ability.COUNTER_INFECTED), /** Nothing wrong. */ STARVING("Starving", null, GdxUtil.asColor("A9301B"), Ability.PILOT, Ability.EAT, Ability.GIVE_BIRTH, Ability.INFECTABLE, Ability.AGE, Ability.COUNTER_INFECTED), /** Nothing wrong. */ BRAINSLUG("Brainslug", "state-slug", GdxUtil.asColor("42FA29"), Ability.PILOT, Ability.BUILD, Ability.INFECT, Ability.BIOGELLABLE), /** Elderly */ ELDERLY("Elderly", null, GdxUtil.asColor("2C4142"), Ability.INFECTABLE, Ability.BIOGELLABLE, Ability.COUNTER_INFECTED), /** NOOOOOOOOO TIMMYYYYYYYYY (crewmember dead) */ DEAD("Dead", "state-dead", GdxUtil.asColor("4C3448")); public final String label; public final String animStatusId; public final Color color; private final Ability[] abilities; /** Does the crewmember have specified ability? */ public boolean can( Ability ability ) { for (Ability ability1 : abilities) { if ( ability1 == ability ) return true; } return false; } Effect(String label, String animStatusId, Color color, Ability ... abilities ) { this.label = label; this.animStatusId = animStatusId; this.color = color; this.abilities = abilities; } } }