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

@@ -14,6 +14,7 @@ text.joingame=Join Game
text.quit=Quit text.quit=Quit
text.name=Name: text.name=Name:
text.players={0} players online text.players={0} players online
text.players.single={0} player online
text.server.kicked.kick=You have been kicked from the server! text.server.kicked.kick=You have been kicked from the server!
text.server.kicked.invalidPassword=Invalid password! text.server.kicked.invalidPassword=Invalid password!
text.server.connected=A player has joined. text.server.connected=A player has joined.

View File

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

View File

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

View File

@@ -13,44 +13,54 @@ import io.anuke.ucore.util.Bundles;
public class PlayerListFragment implements Fragment{ public class PlayerListFragment implements Fragment{
Table content = new Table(); Table content = new Table();
int last = 0;
@Override @Override
public void build(){ public void build(){
new table(){{ new table(){{
new table("pane"){{ 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(); row();
add(content).grow(); add(content).grow();
}}.end(); }}.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(); }}.end();
rebuild(); rebuild();
} }
public void rebuild(){ public void rebuild(){
if(!Net.active()) return;
content.clear(); content.clear();
float h = 80f; float h = 60f;
for(Player player : Vars.control.playerGroup.all()){ for(Player player : Vars.control.playerGroup.all()){
Table button = new Table("button"); Table button = new Table("button");
button.left(); button.left();
button.margin(0); button.margin(5).marginBottom(10);
BorderImage image = new BorderImage(Draw.region(player.isAndroid ? "ship-standard" : "mech-standard"), 3f); BorderImage image = new BorderImage(Draw.region(player.isAndroid ? "ship-standard" : "mech-standard"), 3f);
button.add(image).size(h); button.add(image).size(h);
button.add(player.name).pad(10); button.add(player.name).pad(10);
button.add().grow();
if(Net.server() && !player.isLocal){ if(Net.server() && !player.isLocal){
button.add().growY(); button.add().growY();
button.addIButton("icon-cancel", 14*3, () -> button.addIButton("icon-cancel", 14*3, () ->
Net.kickConnection(player.clientid) 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(); content.row();
} }