Add priority servers, update servers_v7.json (#8720)
* Update servers_v7.json * Add priority server outlining and bumping * a * chore: A little bit of cleanup :) * json * fixed no-server issue * removed cursed duplication --------- Co-authored-by: phinner <62483793+Phinner@users.noreply.github.com>
This commit is contained in:
@@ -5,10 +5,16 @@ import arc.*;
|
|||||||
public class ServerGroup{
|
public class ServerGroup{
|
||||||
public String name;
|
public String name;
|
||||||
public String[] addresses;
|
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.name = name;
|
||||||
this.addresses = addresses;
|
this.addresses = addresses;
|
||||||
|
this.prioritized = prioritized;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ServerGroup(String name, String[] addresses){
|
||||||
|
this(name, addresses, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ServerGroup(){
|
public ServerGroup(){
|
||||||
|
|||||||
@@ -417,6 +417,9 @@ public class JoinDialog extends BaseDialog{
|
|||||||
|
|
||||||
Table[] groupTable = {null, null};
|
Table[] groupTable = {null, null};
|
||||||
|
|
||||||
|
if(group.prioritized){
|
||||||
|
addHeader(groupTable, group, hidden, false);
|
||||||
|
}
|
||||||
//table containing all groups
|
//table containing all groups
|
||||||
for(String address : group.addresses){
|
for(String address : group.addresses){
|
||||||
String resaddress = address.contains(":") ? address.split(":")[0] : address;
|
String resaddress = address.contains(":") ? address.split(":")[0] : address;
|
||||||
@@ -430,15 +433,36 @@ public class JoinDialog extends BaseDialog{
|
|||||||
|| res.mapname.toLowerCase().contains(serverSearch)
|
|| res.mapname.toLowerCase().contains(serverSearch)
|
||||||
|| (res.modeName != null && res.modeName.toLowerCase().contains(serverSearch)))) return;
|
|| (res.modeName != null && res.modeName.toLowerCase().contains(serverSearch)))) return;
|
||||||
|
|
||||||
//add header
|
if(groupTable[0] == null){
|
||||||
|
addHeader(groupTable, group, hidden, true);
|
||||||
|
}else if(!groupTable[0].visible){
|
||||||
|
addHeader(groupTable, group, hidden, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
addCommunityHost(res, groupTable[1]);
|
||||||
|
|
||||||
|
groupTable[0].margin(5f);
|
||||||
|
groupTable[0].pack();
|
||||||
|
}, e -> {});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void addHeader(Table[] groupTable, ServerGroup group, boolean hidden, boolean doInit){ // outlined separately
|
||||||
if(groupTable[0] == null){
|
if(groupTable[0] == null){
|
||||||
global.table(t -> groupTable[0] = t).fillX().left().row();
|
global.table(t -> groupTable[0] = t).fillX().left().row();
|
||||||
|
}
|
||||||
|
groupTable[0].visible(() -> doInit);
|
||||||
|
if(!doInit){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
groupTable[0].table(head -> {
|
groupTable[0].table(head -> {
|
||||||
|
Color col = group.prioritized ? Pal.accent : Color.lightGray;
|
||||||
if(!group.name.isEmpty()){
|
if(!group.name.isEmpty()){
|
||||||
head.add(group.name).color(Color.lightGray).padRight(4);
|
head.add(group.name).color(col).padRight(4);
|
||||||
}
|
}
|
||||||
head.image().height(3f).growX().color(Color.lightGray);
|
head.image().height(3f).growX().color(col);
|
||||||
|
|
||||||
//button for showing/hiding servers
|
//button for showing/hiding servers
|
||||||
ImageButton[] image = {null};
|
ImageButton[] image = {null};
|
||||||
@@ -455,15 +479,6 @@ public class JoinDialog extends BaseDialog{
|
|||||||
groupTable[1] = groupTable[0].row().table().top().left().grow().get();
|
groupTable[1] = groupTable[0].row().table().top().left().grow().get();
|
||||||
}
|
}
|
||||||
|
|
||||||
addCommunityHost(res, groupTable[1]);
|
|
||||||
|
|
||||||
groupTable[0].margin(5f);
|
|
||||||
groupTable[0].pack();
|
|
||||||
}, e -> {});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int columns(){
|
int columns(){
|
||||||
return Mathf.clamp((int)((Core.graphics.getWidth() / Scl.scl() * 0.9f) / targetWidth()), 1, 4);
|
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<>();
|
Seq<ServerGroup> servers = new Seq<>();
|
||||||
val.asArray().each(child -> {
|
val.asArray().each(child -> {
|
||||||
String name = child.getString("name", "");
|
String name = child.getString("name", "");
|
||||||
|
boolean prioritized = child.getBool("prioritized", false);
|
||||||
String[] addresses;
|
String[] addresses;
|
||||||
if(child.has("addresses") || (child.has("address") && child.get("address").isArray())){
|
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);
|
addresses = (child.has("addresses") ? child.get("addresses") : child.get("address")).asArray().map(Jval::asString).toArray(String.class);
|
||||||
}else{
|
}else{
|
||||||
addresses = new String[]{child.getString("address", "<invalid>")};
|
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
|
//modify default servers on main thread
|
||||||
Core.app.post(() -> {
|
Core.app.post(() -> {
|
||||||
|
|||||||
@@ -174,5 +174,10 @@
|
|||||||
{
|
{
|
||||||
"name": "CreateDustry",
|
"name": "CreateDustry",
|
||||||
"address": ["95.216.68.161:55639"]
|
"address": ["95.216.68.161:55639"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Official Mindustry Events",
|
||||||
|
"address": ["event.baseduser.eu.org"],
|
||||||
|
"prioritized": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user