package net.fourbytes.shadow;
import com.badlogic.gdx.utils.JsonValue;
import net.fourbytes.shadow.network.menus.AddServerMenuLevel;
import net.fourbytes.shadow.network.menus.JoinMenuLevel;
import net.fourbytes.shadow.network.ServerLevel;
import net.fourbytes.shadow.utils.Garbage;
import net.fourbytes.shadow.utils.Options;
public class MultiplayerMenuLevel extends MenuLevel {
public boolean dirty = false;
public MultiplayerMenuLevel() {
this(null);
}
public MultiplayerMenuLevel(MenuLevel parent) {
super(parent);
refresh();
ready = true;
}
protected void refresh() {
dirty = false;
int indexOld = items.indexOf(current, true);
items.clear();
String usernameOld = Shadow.playerInfo.getUserName();
Shadow.playerInfo.setUserName(new String(Shadow.playerInfo.getUserName()));
if (usernameOld != Shadow.playerInfo.getUserName()) {
items.add(new MenuItem(this, "Username: " + Shadow.playerInfo.getUserName(), new Runnable() {
public void run() {
Shadow.level = new TextInputLevel(MultiplayerMenuLevel.this, "mp.user.name");
Shadow.cam.firsttick = true;
dirty = true;
}
}));
}
items.add(new MenuItem(this, "Start Server", new Runnable(){public void run(){
Shadow.level = new ServerLevel();
Shadow.cam.firsttick = true;
}}));
String jsonString = Options.getString("mp.servers", null);
if (jsonString != null) {
JsonValue json = Garbage.jsonReader.parse(jsonString);
for (JsonValue server = json.child; server != null; server = server.next) {
final String name = server.getString("name");
final String ip = server.getString("ip");
items.add(new MenuItem(this, name, new Runnable() {
public void run() {
Shadow.level = new JoinMenuLevel(MultiplayerMenuLevel.this, name, ip);
Shadow.cam.firsttick = true;
dirty = true;
}
}));
}
}
items.add(new MenuItem(this, "Add Server", new Runnable(){public void run(){
Shadow.level = new AddServerMenuLevel(MultiplayerMenuLevel.this);
Shadow.cam.firsttick = true;
dirty = true;
}}));
items.add(new MenuItem(this, "Back", new Runnable(){public void run(){
Shadow.level = MultiplayerMenuLevel.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);
}
}