package net.scapeemulator.game.model.player.appearance;
import java.util.HashMap;
import java.util.Map;
import net.scapeemulator.game.dialogue.HeadAnimation;
import net.scapeemulator.game.model.player.Player;
import net.scapeemulator.game.msg.impl.inter.InterfaceAnimationMessage;
import net.scapeemulator.game.msg.impl.inter.InterfacePlayerHeadMessage;
public class Appearance {
public enum Feature {
HAIR, FACIAL_HAIR, TORSO, ARMS, WRISTS, LEGS, FEET, SKIN
}
private final Player player;
private Map<Feature, AppearanceFeature> features = new HashMap<Feature, AppearanceFeature>();
private Gender gender;
static final int APPEARANCE_INTERFACE = 771;
public Appearance(Player player) {
this.player = player;
gender = Gender.MALE;
reset();
}
public void reset() {
features.put(Feature.HAIR, new Hair(gender));
features.put(Feature.FACIAL_HAIR, new FacialHair(gender));
features.put(Feature.TORSO, new Torso(gender));
features.put(Feature.ARMS, new Arms(gender));
features.put(Feature.WRISTS, new Wrists(gender));
features.put(Feature.LEGS, new Legs(gender));
features.put(Feature.FEET, new Feet(gender));
features.put(Feature.SKIN, new Skin(gender));
}
public AppearanceFeature getFeature(Feature feature) {
return features.get(feature);
}
public int getColor(Feature feature) {
return features.get(feature).getColor();
}
public int getColorIndex(Feature feature) {
return features.get(feature).getColorIndex();
}
public void setColorIndex(Feature feature, int index) {
features.get(feature).setColorIndex(index);
}
public int getStyle(Feature feature) {
return features.get(feature).getStyle();
}
public int getStyleIndex(Feature feature) {
return features.get(feature).getStyleIndex();
}
public void setStyleIndex(Feature feature, int index) {
features.get(feature).setStyleIndex(index);
}
public void showAppearanceInterface() {
player.send(new InterfaceAnimationMessage(APPEARANCE_INTERFACE, 79, HeadAnimation.CALM.getAnimationId()));
player.send(new InterfacePlayerHeadMessage(APPEARANCE_INTERFACE, 79));
player.getInterfaceSet().openWindow(APPEARANCE_INTERFACE);
}
public void handle(int child) {
if(child == 92) {
getFeature(Feature.HAIR).modifyStyle(-1);
} else if(child == 93) {
getFeature(Feature.HAIR).modifyStyle(1);
} else if(child > 99 && child < 125) {
setColorIndex(Feature.HAIR, child - 100);
} else if(child > 150 && child < 159) {
setColorIndex(Feature.SKIN, child - 151);
} else if(child > 188 && child < 218) {
setColorIndex(Feature.TORSO, child - 189);
} else if(child > 247 && child < 277) {
setColorIndex(Feature.LEGS, child - 248);
} else if(child > 306 && child < 313) {
setColorIndex(Feature.FEET, child - 307);
} else if(child == 92) {
//setHairStyleIndex(hairStyleIndex);
} else if(child == 341) {
getFeature(Feature.TORSO).modifyStyle(-1);
} else if(child == 342) {
getFeature(Feature.TORSO).modifyStyle(1);
} else if(child == 49) {
gender = Gender.MALE;
reset();
} else if(child == 52) {
gender = Gender.FEMALE;
reset();
} else {
return;
}
player.appearanceUpdated();
}
public Gender getGender() {
return gender;
}
public void setGender(Gender gender) {
this.gender = gender;
}
}