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:
+44
@@ -10,6 +10,10 @@ namespace MSCO
|
||||
{
|
||||
public const string Help =
|
||||
"connect <host[:port]> - join a dedicated server\n" +
|
||||
"switch <nickname> - quickly switch to a favorite server (also /switch in chat)\n" +
|
||||
"fav - list your favorite servers\n" +
|
||||
"fav add <nick> [host:port] - add a favorite (without address: the server you are on)\n" +
|
||||
"fav remove <nick> - remove a favorite\n" +
|
||||
"disconnect - leave the server / game\n" +
|
||||
"host [port] / join <ip> [port] - direct LAN game (no Steam)\n" +
|
||||
"save - save the game (host / singleplayer)\n" +
|
||||
@@ -19,6 +23,37 @@ namespace MSCO
|
||||
"debug - toggle sync debug output\n" +
|
||||
"clear - clear this console";
|
||||
|
||||
static void Favorite(MultiplayerManager mp, string[] args, Action<string> print)
|
||||
{
|
||||
string sub = args.Length > 1 ? args[1].ToLower() : "list";
|
||||
if (sub == "list")
|
||||
{
|
||||
if (Favorites.All.Count == 0) { print("No favorites yet - open a server in the browser and press FAVORITE, or: fav add <nick>"); return; }
|
||||
foreach (Favorites.Favorite f in Favorites.All)
|
||||
print(" " + f.Nickname + " -> " + f.Address + (string.IsNullOrEmpty(f.ServerName) ? "" : " (" + f.ServerName + ")"));
|
||||
print("switch <nickname> to join one");
|
||||
return;
|
||||
}
|
||||
if (sub == "add" || sub == "set")
|
||||
{
|
||||
if (args.Length < 3) { print("fav add <nickname> [host:port]"); return; }
|
||||
string host = mp.CurrentServerHost, name = mp.CurrentServerName;
|
||||
int port = mp.CurrentServerPort;
|
||||
if (args.Length > 3 && !ServerBrowser.TryParseAddress(args[3], out host, out port)) { print("Invalid address: " + args[3]); return; }
|
||||
if (host == null) { print("You are not on a server - use: fav add <nickname> <host:port>"); return; }
|
||||
string error = Favorites.Set(args[2], host, port, name);
|
||||
print(error ?? "Favorite '" + Favorites.CleanNickname(args[2]) + "' saved (" + host + ":" + port + ")");
|
||||
return;
|
||||
}
|
||||
if (sub == "remove" || sub == "del" || sub == "delete")
|
||||
{
|
||||
Favorites.Favorite f = args.Length > 2 ? Favorites.Find(args[2]) : null;
|
||||
print(f != null && Favorites.Remove(f) ? "Favorite '" + f.Nickname + "' removed" : "No such favorite");
|
||||
return;
|
||||
}
|
||||
print("fav | fav add <nick> [host:port] | fav remove <nick>");
|
||||
}
|
||||
|
||||
public static void Execute(string[] args, Action<string> print)
|
||||
{
|
||||
var mp = MultiplayerManager.Instance;
|
||||
@@ -59,6 +94,15 @@ namespace MSCO
|
||||
mp.JoinServer(host, serverPort);
|
||||
break;
|
||||
}
|
||||
case "switch":
|
||||
case "sw":
|
||||
print(mp.SwitchServer(args.Length > 1 ? args[1] : ""));
|
||||
break;
|
||||
case "fav":
|
||||
case "favs":
|
||||
case "favorites":
|
||||
Favorite(mp, args, print);
|
||||
break;
|
||||
case "save":
|
||||
mp.SaveGame();
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user