Favorites: heart toggle, Favorites tab with nicknames, /switch <nickname> quick server switch, fav command
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1021,6 +1021,53 @@ namespace MSCO
|
||||
public int ReconnectAttempt { get { return reconnectAttempts; } }
|
||||
public int ReconnectMaxAttempts { get { return MaxReconnectAttempts; } }
|
||||
|
||||
/// <summary>Server, mit dem man gerade verbunden ist (dedizierter Server), sonst null.</summary>
|
||||
public string CurrentServerHost { get { return session != null && dedicated ? lastServerHost : null; } }
|
||||
public int CurrentServerPort { get { return lastServerPort; } }
|
||||
public string CurrentServerName { get { return lastServerName; } }
|
||||
|
||||
/// <summary>
|
||||
/// Schnell den Server wechseln: Favorit per Kurzname (oder host:port). Ist man gerade verbunden, wird wie beim
|
||||
/// Neu-Verbinden nach einem Welt-Reset getrennt und danach automatisch mit dem neuen Server verbunden.
|
||||
/// </summary>
|
||||
public string SwitchServer(string target)
|
||||
{
|
||||
target = (target ?? "").Trim();
|
||||
if (target.Length == 0) return "switch <nickname> (see 'fav')";
|
||||
Favorites.Favorite fav = Favorites.Find(target);
|
||||
string host, name;
|
||||
int port;
|
||||
if (fav != null) { host = fav.Host; port = fav.Port; name = string.IsNullOrEmpty(fav.ServerName) ? fav.Nickname : fav.ServerName; }
|
||||
else if (ServerBrowser.TryParseAddress(target, out host, out port)) name = null;
|
||||
else return "No favorite called '" + target + "' - type 'fav' to see yours";
|
||||
|
||||
if (session != null && dedicated && string.Equals(lastServerHost, host, System.StringComparison.OrdinalIgnoreCase) && lastServerPort == port)
|
||||
return "You are already on " + (fav != null ? fav.Nickname : host + ":" + port);
|
||||
|
||||
string label = fav != null ? fav.Nickname : host + ":" + port;
|
||||
if (session == null)
|
||||
{
|
||||
if (!MenuHelper.InMenu) return "Go to the main menu first (or join a server) to switch";
|
||||
JoinServer(host, port, name);
|
||||
return "Connecting to " + label + " ...";
|
||||
}
|
||||
|
||||
// Verbunden: trennen und danach automatisch mit dem neuen Server verbinden (übersteht das Neuladen der Mods)
|
||||
lastServerHost = host;
|
||||
lastServerPort = port;
|
||||
lastServerName = name;
|
||||
lastServerMax = 0;
|
||||
serverReason = null;
|
||||
reconnectAttempts = 0;
|
||||
reconnectMessage = "Switching to " + label + " ...";
|
||||
centerMessage = reconnectMessage;
|
||||
centerMessageUntil = Time.realtimeSinceStartup + 2f;
|
||||
session.Close("Switching server");
|
||||
if (MenuHelper.InGame) reconnectHoldUntil = Time.realtimeSinceStartup + 0.8f; // kurz die Meldung zeigen
|
||||
else OnSessionEnded("Switching server");
|
||||
return reconnectMessage;
|
||||
}
|
||||
|
||||
/// <summary>Automatisches Neu-Verbinden abbrechen (Knopf im Reconnect-Fenster).</summary>
|
||||
public void CancelReconnect()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user