package haven;
import java.util.*;
class EquipOpts extends GameUI.Hidewnd {
private static final Map<Integer, String> slotNames;
private static final List<Integer> slotOrder;
static {
final List<Integer> ao = new ArrayList<Integer>();
Map<Integer, String> an = new HashMap<Integer, String>() {
public String put(Integer k, String v) {
ao.add(k);
return(super.put(k, v));
}
};
an.put(0, "Head");
an.put(13, "Neck");
an.put(6, "Left hand");
an.put(7, "Right hand");
an.put(9, "Purse");
an.put(14, "Back");
an.put(5, "Belt");
an.put(4, "Keys");
slotNames = Collections.unmodifiableMap(an);
slotOrder = Collections.unmodifiableList(ao);
}
private Map<CheckBox, Integer> checkSlots = new HashBMap<CheckBox, Integer>();
private List<Integer> selected;
public EquipOpts(Coord c, Widget parent) {
super(c, Coord.z, parent, "Proxy CFG");
int k = 0;
read();
for(int slot : slotOrder){
CheckBox checkBox = new CheckBox(new Coord(0, 20 * k++), this, slotNames.get(slot)) {
@Override
public void changed(boolean val) {
setSlotState(this, val);
}
};
checkBox.a = selected.contains(slot);
checkSlots.put(checkBox, slot);
}
pack();
update();
}
@Override
public Coord contentsz() {
Coord sz = super.contentsz();
sz.x = Math.max(sz.x, 100);
return sz;
}
public void toggle(){
show(!visible);
if(visible){
raise();
}
}
@Override
public void wdgmsg(Widget sender, String msg, Object... args) {
super.wdgmsg(sender, msg, args);
}
private void read() {
selected = new LinkedList<Integer>();
String[] slots = Utils.getpref("equip_proxy_slots", "6;7;9;14;5").split(";");
for(String slot : slots){
try {
selected.add(Integer.parseInt(slot));
} catch (NumberFormatException ignored){}
}
}
private void setSlotState(CheckBox check, boolean val) {
int slot = checkSlots.get(check);
int k = selected.indexOf(slot);
if(!val && k>=0){
selected.remove(k);
} else if(val && k<0){
selected.add(slot);
}
store();
update();
}
private void store() {
String buf = "";
int n = selected.size();
for(int i=0; i< n; i++){
buf += selected.get(i);
if(i < n-1 ){
buf+=";";
}
}
Utils.setpref("equip_proxy_slots", buf);
}
private void update() {
int[] slots = new int[selected.size()];
int k = 0;
for(int slot : slotOrder) {
if (selected.contains(slot)) {
slots[k++] = slot;
}
}
ui.gui.equipProxy.setSlots(slots);
}
}