Improved player list

This commit is contained in:
Anuken
2018-01-04 11:50:51 -05:00
parent dc1700f0ff
commit 9e7eaaaf41
5 changed files with 20 additions and 10 deletions

View File

@@ -267,6 +267,7 @@ public class NetClient extends Module {
Net.handle(KickPacket.class, packet -> {
kicked = true;
Net.disconnect();
GameState.set(State.menu);
Gdx.app.postRunnable(() -> Vars.ui.showError("$text.server.kicked." + KickReason.values()[packet.reason].name()));
});
}

View File

@@ -323,7 +323,7 @@ public class UI extends SceneModule{
public void addChatMessage(String sender, String message){
((ChatFragment)chatfrag).addMessage(message, sender);
}
public void showGameError(){
gameerror.show();
}

View File

@@ -128,8 +128,6 @@ public class ChatFragment extends Table implements Fragment{
if(message.replaceAll(" ", "").isEmpty()) return;
Vars.netClient.handleSendMessage(message);
}

View File

@@ -13,44 +13,54 @@ import io.anuke.ucore.util.Bundles;
public class PlayerListFragment implements Fragment{
Table content = new Table();
int last = 0;
@Override
public void build(){
new table(){{
new table("pane"){{
new label(() -> Bundles.format("text.players", Vars.control.playerGroup.amount()));
margin(14f);
new label(() -> Bundles.format(Vars.control.playerGroup.amount() == 1 ? "text.players.single" :
"text.players", Vars.control.playerGroup.amount()));
row();
add(content).grow();
}}.end();
visible(() -> Inputs.keyDown("player_list"));
update(t -> {
if(Vars.control.playerGroup.amount() != last){
rebuild();
last = Vars.control.playerGroup.amount();
}
});
visible(() -> Inputs.keyDown("player_list") && Net.active()); //TODO move elsewhere?
}}.end();
rebuild();
}
public void rebuild(){
if(!Net.active()) return;
content.clear();
float h = 80f;
float h = 60f;
for(Player player : Vars.control.playerGroup.all()){
Table button = new Table("button");
button.left();
button.margin(0);
button.margin(5).marginBottom(10);
BorderImage image = new BorderImage(Draw.region(player.isAndroid ? "ship-standard" : "mech-standard"), 3f);
button.add(image).size(h);
button.add(player.name).pad(10);
button.add().grow();
if(Net.server() && !player.isLocal){
button.add().growY();
button.addIButton("icon-cancel", 14*3, () ->
Net.kickConnection(player.clientid)
).size(h);
).pad(-5).padBottom(-10).size(h+10, h+14);
}
content.add(button).padBottom(-5).width(250f);
content.add(button).padBottom(-5).width(350f);
content.row();
}