mirror of
https://github.com/Anuken/Mindustry.git
synced 2025-07-11 00:07:46 +07:00
Add search bar in playerlist (#1572)
* add "search" bar in playerlist
* remove log.info
* clear keyboard focus & text on toggle
* refactor sField -> field (fixes build??)
* refactor field -> sField (revert) should build now 👍
* remove drawEach boolean, simplify everything (please ignore previous commits)
* escape color codes
* use Strings.stripcolors & check for & without color codes
This commit is contained in:
@ -142,6 +142,8 @@ research = Research
|
|||||||
researched = [lightgray]{0} researched.
|
researched = [lightgray]{0} researched.
|
||||||
players = {0} players
|
players = {0} players
|
||||||
players.single = {0} player
|
players.single = {0} player
|
||||||
|
players.search = search
|
||||||
|
players.notfound = [gray]no players found
|
||||||
server.closing = [accent]Closing server...
|
server.closing = [accent]Closing server...
|
||||||
server.kicked.kick = You have been kicked from the server!
|
server.kicked.kick = You have been kicked from the server!
|
||||||
server.kicked.whitelist = You are not whitelisted here.
|
server.kicked.whitelist = You are not whitelisted here.
|
||||||
|
@ -21,6 +21,7 @@ public class PlayerListFragment extends Fragment{
|
|||||||
private boolean visible = false;
|
private boolean visible = false;
|
||||||
private Table content = new Table().marginRight(13f).marginLeft(13f);
|
private Table content = new Table().marginRight(13f).marginLeft(13f);
|
||||||
private Interval timer = new Interval();
|
private Interval timer = new Interval();
|
||||||
|
private TextField sField;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void build(Group parent){
|
public void build(Group parent){
|
||||||
@ -44,6 +45,12 @@ public class PlayerListFragment extends Fragment{
|
|||||||
cont.table(Tex.buttonTrans, pane -> {
|
cont.table(Tex.buttonTrans, pane -> {
|
||||||
pane.label(() -> Core.bundle.format(playerGroup.size() == 1 ? "players.single" : "players", playerGroup.size()));
|
pane.label(() -> Core.bundle.format(playerGroup.size() == 1 ? "players.single" : "players", playerGroup.size()));
|
||||||
pane.row();
|
pane.row();
|
||||||
|
sField = pane.addField(null, text -> {
|
||||||
|
rebuild();
|
||||||
|
}).grow().pad(8).get();
|
||||||
|
sField.setMaxLength(maxNameLength);
|
||||||
|
sField.setMessageText(Core.bundle.format("players.search"));
|
||||||
|
pane.row();
|
||||||
pane.pane(content).grow().get().setScrollingDisabled(true, false);
|
pane.pane(content).grow().get().setScrollingDisabled(true, false);
|
||||||
pane.row();
|
pane.row();
|
||||||
|
|
||||||
@ -71,6 +78,7 @@ public class PlayerListFragment extends Fragment{
|
|||||||
NetConnection connection = user.con;
|
NetConnection connection = user.con;
|
||||||
|
|
||||||
if(connection == null && net.server() && !user.isLocal) return;
|
if(connection == null && net.server() && !user.isLocal) return;
|
||||||
|
if(sField.getText().length() > 0 && !user.name.toLowerCase().contains(sField.getText().toLowerCase()) && !Strings.stripColors(user.name.toLowerCase()).contains(sField.getText().toLowerCase())) return;
|
||||||
|
|
||||||
Table button = new Table();
|
Table button = new Table();
|
||||||
button.left();
|
button.left();
|
||||||
@ -105,9 +113,9 @@ public class PlayerListFragment extends Fragment{
|
|||||||
t.defaults().size(bs);
|
t.defaults().size(bs);
|
||||||
|
|
||||||
t.addImageButton(Icon.hammer, Styles.clearPartiali,
|
t.addImageButton(Icon.hammer, Styles.clearPartiali,
|
||||||
() -> ui.showConfirm("$confirm", "$confirmban", () -> Call.onAdminRequest(user, AdminAction.ban)));
|
() -> ui.showConfirm("$confirm", "$confirmban", () -> Call.onAdminRequest(user, AdminAction.ban)));
|
||||||
t.addImageButton(Icon.cancel, Styles.clearPartiali,
|
t.addImageButton(Icon.cancel, Styles.clearPartiali,
|
||||||
() -> ui.showConfirm("$confirm", "$confirmkick", () -> Call.onAdminRequest(user, AdminAction.kick)));
|
() -> ui.showConfirm("$confirm", "$confirmkick", () -> Call.onAdminRequest(user, AdminAction.kick)));
|
||||||
|
|
||||||
t.row();
|
t.row();
|
||||||
|
|
||||||
@ -122,10 +130,10 @@ public class PlayerListFragment extends Fragment{
|
|||||||
ui.showConfirm("$confirm", "$confirmadmin", () -> netServer.admins.adminPlayer(id, user.usid));
|
ui.showConfirm("$confirm", "$confirmadmin", () -> netServer.admins.adminPlayer(id, user.usid));
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.update(b -> b.setChecked(user.isAdmin))
|
.update(b -> b.setChecked(user.isAdmin))
|
||||||
.disabled(b -> net.client())
|
.disabled(b -> net.client())
|
||||||
.touchable(() -> net.client() ? Touchable.disabled : Touchable.enabled)
|
.touchable(() -> net.client() ? Touchable.disabled : Touchable.enabled)
|
||||||
.checked(user.isAdmin);
|
.checked(user.isAdmin);
|
||||||
|
|
||||||
t.addImageButton(Icon.zoom, Styles.clearPartiali, () -> Call.onAdminRequest(user, AdminAction.trace));
|
t.addImageButton(Icon.zoom, Styles.clearPartiali, () -> Call.onAdminRequest(user, AdminAction.trace));
|
||||||
|
|
||||||
@ -134,7 +142,7 @@ public class PlayerListFragment extends Fragment{
|
|||||||
button.add().growY();
|
button.add().growY();
|
||||||
|
|
||||||
button.addImageButton(Icon.hammer, Styles.clearPartiali,
|
button.addImageButton(Icon.hammer, Styles.clearPartiali,
|
||||||
() -> ui.showConfirm("$confirm", "$confirmvotekick", () -> Call.sendChatMessage("/votekick " + user.name))).size(h);
|
() -> ui.showConfirm("$confirm", "$confirmvotekick", () -> Call.sendChatMessage("/votekick " + user.name))).size(h);
|
||||||
}
|
}
|
||||||
|
|
||||||
content.add(button).padBottom(-6).width(350f).maxHeight(h + 14);
|
content.add(button).padBottom(-6).width(350f).maxHeight(h + 14);
|
||||||
@ -143,6 +151,10 @@ public class PlayerListFragment extends Fragment{
|
|||||||
content.row();
|
content.row();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if(sField.getText().length() > 0 && !playerGroup.all().contains(user -> user.name.toLowerCase().contains(sField.getText().toLowerCase()))) {
|
||||||
|
content.add(Core.bundle.format("players.notfound")).padBottom(6).width(350f).maxHeight(h + 14);
|
||||||
|
}
|
||||||
|
|
||||||
content.marginBottom(5);
|
content.marginBottom(5);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -150,6 +162,9 @@ public class PlayerListFragment extends Fragment{
|
|||||||
visible = !visible;
|
visible = !visible;
|
||||||
if(visible){
|
if(visible){
|
||||||
rebuild();
|
rebuild();
|
||||||
|
}else{
|
||||||
|
Core.scene.setKeyboardFocus(null);
|
||||||
|
sField.clearText();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user