summaryrefslogtreecommitdiffhomepage
path: root/StarsEx/NetClientConfig.cpp
diff options
context:
space:
mode:
authorAki <please@ignore.pl>2024-03-23 17:27:43 +0100
committerAki <please@ignore.pl>2024-03-23 17:27:43 +0100
commitb46eb9c1843cb4babc550003e243bd07a6a96cdc (patch)
tree8f9a3c01a594a7c1a389811124258f4beaf89587 /StarsEx/NetClientConfig.cpp
parenta5f3eadd4239bfa5df64badabb2b9897f686aded (diff)
downloadstarshatter-b46eb9c1843cb4babc550003e243bd07a6a96cdc.zip
starshatter-b46eb9c1843cb4babc550003e243bd07a6a96cdc.tar.gz
starshatter-b46eb9c1843cb4babc550003e243bd07a6a96cdc.tar.bz2
You may now edit saved multiplayer servers in-game
Diffstat (limited to 'StarsEx/NetClientConfig.cpp')
-rw-r--r--StarsEx/NetClientConfig.cpp27
1 files changed, 26 insertions, 1 deletions
diff --git a/StarsEx/NetClientConfig.cpp b/StarsEx/NetClientConfig.cpp
index 69dda99..061ae89 100644
--- a/StarsEx/NetClientConfig.cpp
+++ b/StarsEx/NetClientConfig.cpp
@@ -62,7 +62,7 @@ void
NetClientConfig::AddServer(const char* name, const char* addr, WORD port, const char* pass, bool save)
{
if (!addr || !*addr || port < 1024 || port > 48000)
- return;
+ return;
char buffer[1024];
if (name && *name)
@@ -87,6 +87,31 @@ NetClientConfig::AddServer(const char* name, const char* addr, WORD port, const
}
void
+NetClientConfig::UpdateServer(int index, const char* name, const char* addr, WORD port, const char* pass)
+{
+ if (index < 0 || index >= servers.size() || !addr || !*addr || port < 1024 || port > 48000)
+ return;
+
+ char buffer[1024];
+ if (name && *name)
+ strcpy_s(buffer, name);
+ else
+ sprintf_s(buffer, "%s:%d", addr, port);
+
+ auto* server = servers[index];
+ server->name = buffer;
+ server->hostname = addr;
+ server->addr = NetAddr(addr, port);
+ server->port = port;
+ server->password = pass;
+
+ if (server->addr.IPAddr() == 0) {
+ Print("NetClientConfig::UpdateServer(%d, %s, %s, %d) failed to resolve IP Addr\n",
+ index, name, addr, port);
+ }
+}
+
+void
NetClientConfig::DelServer(int index)
{
if (index >= 0 && index < servers.size()) {