package net.fourbytes.shadow.network.menus; import com.badlogic.gdx.utils.JsonValue; import net.fourbytes.shadow.*; import net.fourbytes.shadow.utils.Garbage; import net.fourbytes.shadow.utils.Options; public class AddServerMenuLevel extends MenuLevel { public boolean dirty = false; public String[] name = {""}; public String[] ip = {""}; public AddServerMenuLevel() { this(null); } public AddServerMenuLevel(MenuLevel parent) { super(parent); refresh(); ready = true; } protected void refresh() { dirty = false; int indexOld = items.indexOf(current, true); items.clear(); items.add(new MenuItem(this, "Name: "+name[0], new Runnable(){public void run(){ Shadow.level = new TextInputLevel(AddServerMenuLevel.this, name); Shadow.cam.firsttick = true; dirty = true; }})); items.add(new MenuItem(this, "IP: "+ip[0], new Runnable(){public void run(){ Shadow.level = new TextInputLevel(AddServerMenuLevel.this, ip); Shadow.cam.firsttick = true; dirty = true; }})); items.add(new MenuItem(this, "Add", new Runnable(){public void run(){ String jsonString = Options.getString("mp.servers", "[]"); if (jsonString != null) { JsonValue json = Garbage.jsonReader.parse(jsonString); boolean add = true; for (JsonValue server = json.child; server != null; server = server.next) { String name = server.getString("name"); String ip = server.getString("ip"); if (name.equals(AddServerMenuLevel.this.name[0]) || ip.equals(AddServerMenuLevel.this.ip[0])) { add = false; break; } } if (add) { JsonValue server = new JsonValue(JsonValue.ValueType.object); server.child = new JsonValue(name[0]); server.child.name = "name"; server.child.next = new JsonValue(ip[0]); server.child.next.prev = server.child; server.child.next.name = "ip"; if (json.child != null) { server.next = json.child; json.child.prev = server; } json.child = server; Options.putString("mp.servers", json.toString()); Options.flush(); } } Shadow.level = AddServerMenuLevel.this.parent; Shadow.cam.firsttick = true; }})); items.add(new MenuItem(this, "Back", new Runnable(){public void run(){ Shadow.level = AddServerMenuLevel.this.parent; Shadow.cam.firsttick = true; }})); if (indexOld < 0) { indexOld = 0; } if (indexOld >= items.size) { indexOld = items.size-1; } current = items.get(indexOld); } @Override public void tick(float delta) { if (dirty) { refresh(); } super.tick(delta); } }