Merge remote-tracking branch 'origin/master'

This commit is contained in:
Anuken 2020-11-25 11:15:50 -05:00
commit 735cb74483
3 changed files with 33 additions and 1 deletions

View file

@ -230,6 +230,7 @@ disconnect.timeout = Timed out.
disconnect.data = Failed to load world data!
cantconnect = Unable to join game ([accent]{0}[]).
connecting = [accent]Connecting...
reconnecting = [accent]Reconnecting...
connecting.data = [accent]Loading world data...
server.port = Port:
server.addressinuse = Address already in use!

View file

@ -257,6 +257,11 @@ public class NetClient implements ApplicationListener{
public static void kick(KickReason reason){
netClient.disconnectQuietly();
logic.reset();
if(reason == KickReason.serverRestarting){
ui.join.reconnect();
return;
}
if(!reason.quiet){
if(reason.extraText() != null){

View file

@ -8,6 +8,7 @@ import arc.scene.ui.*;
import arc.scene.ui.layout.*;
import arc.struct.*;
import arc.util.*;
import arc.util.Timer.*;
import arc.util.serialization.*;
import mindustry.*;
import mindustry.core.*;
@ -33,6 +34,10 @@ public class JoinDialog extends BaseDialog{
int refreshes;
boolean showHidden;
String lastIp;
int lastPort;
Task ping;
public JoinDialog(){
super("@joingame");
@ -445,13 +450,34 @@ public class JoinDialog extends BaseDialog{
logic.reset();
net.reset();
Vars.netClient.beginConnecting();
net.connect(ip, port, () -> {
net.connect(lastIp = ip, lastPort = port, () -> {
hide();
add.hide();
});
});
}
public void reconnect(){
if(lastIp == null || lastIp.isEmpty()) return;
ui.loadfrag.show("@reconnecting");
ping = Timer.schedule(() -> {
net.pingHost(lastIp, lastPort, host -> {
if(ping == null) return;
ping.cancel();
ping = null;
connect(lastIp, lastPort);
}, exception -> {});
}, 1, 1);
ui.loadfrag.setButton(() -> {
ui.loadfrag.hide();
if(ping == null) return;
ping.cancel();
ping = null;
});
}
void safeConnect(String ip, int port, int version){
if(version != Version.build && Version.build != -1 && version != -1){
ui.showInfo("[scarlet]" + (version > Version.build ? KickReason.clientOutdated : KickReason.serverOutdated).toString() + "\n[]" +