Stuck bodies are placed on top instead of being reset into the same spot (no fling loop); reset message shown in-game before reconnecting; server: backups / restore-save

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-09-27 13:27:20 +02:00
co-authored by Claude Opus 5.5
parent a6e5abfc05
commit 96e8790f0b
2 changed files with 44 additions and 13 deletions
+15 -1
View File
@@ -545,6 +545,9 @@ namespace MSCO
string lastServerHost, lastServerName;
int lastServerPort, lastServerMax;
string reconnectMessage; // gesetzt, wenn der Server uns neu verbinden lässt
float reconnectHoldUntil; // so lange die Meldung noch im Spiel zeigen
string centerMessage; // große Meldung in der Bildmitte
float centerMessageUntil;
float reconnectAt;
void ConnectToServer(string host, int port, string displayName, int maxPlayers)
@@ -811,6 +814,7 @@ namespace MSCO
if (session.IsClosed)
{
if (Time.realtimeSinceStartup < reconnectHoldUntil) return; // Meldung erst lesen lassen
OnSessionEnded(session.CloseReason);
return;
}
@@ -1144,8 +1148,11 @@ namespace MSCO
// Server hat die Welt zurückgesetzt o.ä.: Meldung zeigen, ins Menü, dann automatisch neu verbinden
reconnectMessage = r.ReadString();
overlays.AddChat("", reconnectMessage, true);
// Groß in der Bildmitte zeigen und erst nach kurzer Zeit ins Menü wechseln - sonst sieht man nichts
centerMessage = reconnectMessage;
centerMessageUntil = Time.realtimeSinceStartup + 3f;
reconnectHoldUntil = Time.realtimeSinceStartup + 2.5f;
session.Close("Reconnecting");
OnSessionEnded(session.CloseReason);
return;
}
@@ -1774,6 +1781,13 @@ namespace MSCO
if (Time.realtimeSinceStartup < savingMessageUntil)
GUI.Label(new Rect(0, Screen.height / 2f - 40, Screen.width, 80), "SAVING GAME...", savingStyle);
if (centerMessage != null && Time.realtimeSinceStartup < centerMessageUntil)
{
int oldSize = savingStyle.fontSize;
savingStyle.fontSize = 30;
GUI.Label(new Rect(0, Screen.height / 2f - 40, Screen.width, 80), centerMessage.ToUpper(), savingStyle);
savingStyle.fontSize = oldSize;
}
if (session != null) DrawHud();
DrawPing();