Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -5,10 +5,16 @@ import arc.*;
|
||||
public class ServerGroup{
|
||||
public String name;
|
||||
public String[] addresses;
|
||||
public boolean prioritized = false;
|
||||
|
||||
public ServerGroup(String name, String[] addresses){
|
||||
public ServerGroup(String name, String[] addresses, boolean prioritized){
|
||||
this.name = name;
|
||||
this.addresses = addresses;
|
||||
this.prioritized = prioritized;
|
||||
}
|
||||
|
||||
public ServerGroup(String name, String[] addresses){
|
||||
this(name, addresses, false);
|
||||
}
|
||||
|
||||
public ServerGroup(){
|
||||
|
||||
@@ -417,6 +417,9 @@ public class JoinDialog extends BaseDialog{
|
||||
|
||||
Table[] groupTable = {null, null};
|
||||
|
||||
if(group.prioritized){
|
||||
addHeader(groupTable, group, hidden, false);
|
||||
}
|
||||
//table containing all groups
|
||||
for(String address : group.addresses){
|
||||
String resaddress = address.contains(":") ? address.split(":")[0] : address;
|
||||
@@ -430,29 +433,10 @@ public class JoinDialog extends BaseDialog{
|
||||
|| res.mapname.toLowerCase().contains(serverSearch)
|
||||
|| (res.modeName != null && res.modeName.toLowerCase().contains(serverSearch)))) return;
|
||||
|
||||
//add header
|
||||
if(groupTable[0] == null){
|
||||
global.table(t -> groupTable[0] = t).fillX().left().row();
|
||||
|
||||
groupTable[0].table(head -> {
|
||||
if(!group.name.isEmpty()){
|
||||
head.add(group.name).color(Color.lightGray).padRight(4);
|
||||
}
|
||||
head.image().height(3f).growX().color(Color.lightGray);
|
||||
|
||||
//button for showing/hiding servers
|
||||
ImageButton[] image = {null};
|
||||
image[0] = head.button(hidden ? Icon.eyeOffSmall : Icon.eyeSmall, Styles.grayi, () -> {
|
||||
group.setHidden(!group.hidden());
|
||||
image[0].getStyle().imageUp = group.hidden() ? Icon.eyeOffSmall : Icon.eyeSmall;
|
||||
if(group.hidden() && !showHidden){
|
||||
groupTable[0].remove();
|
||||
}
|
||||
}).size(40f).get();
|
||||
image[0].addListener(new Tooltip(t -> t.background(Styles.black6).margin(4).label(() -> !group.hidden() ? "@server.shown" : "@server.hidden")));
|
||||
}).width(targetWidth() * columns()).padBottom(-2).row();
|
||||
|
||||
groupTable[1] = groupTable[0].row().table().top().left().grow().get();
|
||||
addHeader(groupTable, group, hidden, true);
|
||||
}else if(!groupTable[0].visible){
|
||||
addHeader(groupTable, group, hidden, true);
|
||||
}
|
||||
|
||||
addCommunityHost(res, groupTable[1]);
|
||||
@@ -464,6 +448,37 @@ public class JoinDialog extends BaseDialog{
|
||||
}
|
||||
}
|
||||
|
||||
void addHeader(Table[] groupTable, ServerGroup group, boolean hidden, boolean doInit){ // outlined separately
|
||||
if(groupTable[0] == null){
|
||||
global.table(t -> groupTable[0] = t).fillX().left().row();
|
||||
}
|
||||
groupTable[0].visible(() -> doInit);
|
||||
if(!doInit){
|
||||
return;
|
||||
}
|
||||
|
||||
groupTable[0].table(head -> {
|
||||
Color col = group.prioritized ? Pal.accent : Color.lightGray;
|
||||
if(!group.name.isEmpty()){
|
||||
head.add(group.name).color(col).padRight(4);
|
||||
}
|
||||
head.image().height(3f).growX().color(col);
|
||||
|
||||
//button for showing/hiding servers
|
||||
ImageButton[] image = {null};
|
||||
image[0] = head.button(hidden ? Icon.eyeOffSmall : Icon.eyeSmall, Styles.grayi, () -> {
|
||||
group.setHidden(!group.hidden());
|
||||
image[0].getStyle().imageUp = group.hidden() ? Icon.eyeOffSmall : Icon.eyeSmall;
|
||||
if(group.hidden() && !showHidden){
|
||||
groupTable[0].remove();
|
||||
}
|
||||
}).size(40f).get();
|
||||
image[0].addListener(new Tooltip(t -> t.background(Styles.black6).margin(4).label(() -> !group.hidden() ? "@server.shown" : "@server.hidden")));
|
||||
}).width(targetWidth() * columns()).padBottom(-2).row();
|
||||
|
||||
groupTable[1] = groupTable[0].row().table().top().left().grow().get();
|
||||
}
|
||||
|
||||
int columns(){
|
||||
return Mathf.clamp((int)((Core.graphics.getWidth() / Scl.scl() * 0.9f) / targetWidth()), 1, 4);
|
||||
}
|
||||
@@ -604,13 +619,14 @@ public class JoinDialog extends BaseDialog{
|
||||
Seq<ServerGroup> servers = new Seq<>();
|
||||
val.asArray().each(child -> {
|
||||
String name = child.getString("name", "");
|
||||
boolean prioritized = child.getBool("prioritized", false);
|
||||
String[] addresses;
|
||||
if(child.has("addresses") || (child.has("address") && child.get("address").isArray())){
|
||||
addresses = (child.has("addresses") ? child.get("addresses") : child.get("address")).asArray().map(Jval::asString).toArray(String.class);
|
||||
}else{
|
||||
addresses = new String[]{child.getString("address", "<invalid>")};
|
||||
}
|
||||
servers.add(new ServerGroup(name, addresses));
|
||||
servers.add(new ServerGroup(name, addresses, prioritized));
|
||||
});
|
||||
//modify default servers on main thread
|
||||
Core.app.post(() -> {
|
||||
|
||||
Reference in New Issue
Block a user