package com.github.jamesnorris.ablockalypse.enumerated;
import java.util.Map;
import com.github.jamesnorris.ablockalypse.aspect.ZACharacter;
import com.github.jamesnorris.ablockalypse.aspect.ZAPlayer;
import com.google.common.collect.Maps;
public enum PlayerStatus {
LAST_STAND(1) {
@Override public void set(ZACharacter character) {
if (!(character instanceof ZAPlayer)) {
return;
}
ZAPlayer zap = (ZAPlayer) character;
if (!zap.isInLastStand()) {
zap.toggleLastStand();
}
}
},
LIMBO(2) {
@Override public void set(ZACharacter character) {
character.setStatus(PlayerStatus.LIMBO);
}
},
NORMAL(3) {
@Override public void set(ZACharacter character) {
if (character instanceof ZAPlayer) {
ZAPlayer zap = (ZAPlayer) character;
if (zap.isInLastStand()) {
zap.toggleLastStand();
}
}
character.setStatus(PlayerStatus.NORMAL);
}
},
TELEPORTING(4) {
@Override public void set(ZACharacter character) {
character.setStatus(PlayerStatus.TELEPORTING);
}
};
private final static Map<Integer, PlayerStatus> BY_ID = Maps.newHashMap();
static {
for (PlayerStatus status : values()) {
BY_ID.put(status.id, status);
}
}
public static PlayerStatus getById(int id) {
return BY_ID.get(id);
}
private int id;
PlayerStatus(int id) {
this.id = id;
}
public int getId() {
return id;
}
public abstract void set(ZACharacter character);
}