@@ -230,6 +230,7 @@ disconnect.timeout = Timed out.
|
|||||||
disconnect.data = Failed to load world data!
|
disconnect.data = Failed to load world data!
|
||||||
cantconnect = Unable to join game ([accent]{0}[]).
|
cantconnect = Unable to join game ([accent]{0}[]).
|
||||||
connecting = [accent]Connecting...
|
connecting = [accent]Connecting...
|
||||||
|
reconnecting = [accent]Reconnecting...
|
||||||
connecting.data = [accent]Loading world data...
|
connecting.data = [accent]Loading world data...
|
||||||
server.port = Port:
|
server.port = Port:
|
||||||
server.addressinuse = Address already in use!
|
server.addressinuse = Address already in use!
|
||||||
|
|||||||
@@ -258,6 +258,11 @@ public class NetClient implements ApplicationListener{
|
|||||||
netClient.disconnectQuietly();
|
netClient.disconnectQuietly();
|
||||||
logic.reset();
|
logic.reset();
|
||||||
|
|
||||||
|
if(reason == KickReason.serverRestarting){
|
||||||
|
ui.join.reconnect();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if(!reason.quiet){
|
if(!reason.quiet){
|
||||||
if(reason.extraText() != null){
|
if(reason.extraText() != null){
|
||||||
ui.showText(reason.toString(), reason.extraText());
|
ui.showText(reason.toString(), reason.extraText());
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import arc.scene.ui.*;
|
|||||||
import arc.scene.ui.layout.*;
|
import arc.scene.ui.layout.*;
|
||||||
import arc.struct.*;
|
import arc.struct.*;
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
|
import arc.util.Timer.*;
|
||||||
import arc.util.serialization.*;
|
import arc.util.serialization.*;
|
||||||
import mindustry.*;
|
import mindustry.*;
|
||||||
import mindustry.core.*;
|
import mindustry.core.*;
|
||||||
@@ -33,6 +34,10 @@ public class JoinDialog extends BaseDialog{
|
|||||||
int refreshes;
|
int refreshes;
|
||||||
boolean showHidden;
|
boolean showHidden;
|
||||||
|
|
||||||
|
String lastIp;
|
||||||
|
int lastPort;
|
||||||
|
Task ping;
|
||||||
|
|
||||||
public JoinDialog(){
|
public JoinDialog(){
|
||||||
super("@joingame");
|
super("@joingame");
|
||||||
|
|
||||||
@@ -445,13 +450,34 @@ public class JoinDialog extends BaseDialog{
|
|||||||
logic.reset();
|
logic.reset();
|
||||||
net.reset();
|
net.reset();
|
||||||
Vars.netClient.beginConnecting();
|
Vars.netClient.beginConnecting();
|
||||||
net.connect(ip, port, () -> {
|
net.connect(lastIp = ip, lastPort = port, () -> {
|
||||||
hide();
|
hide();
|
||||||
add.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){
|
void safeConnect(String ip, int port, int version){
|
||||||
if(version != Version.build && Version.build != -1 && version != -1){
|
if(version != Version.build && Version.build != -1 && version != -1){
|
||||||
ui.showInfo("[scarlet]" + (version > Version.build ? KickReason.clientOutdated : KickReason.serverOutdated).toString() + "\n[]" +
|
ui.showInfo("[scarlet]" + (version > Version.build ? KickReason.clientOutdated : KickReason.serverOutdated).toString() + "\n[]" +
|
||||||
|
|||||||
Reference in New Issue
Block a user