summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/manaplus.63
-rw-r--r--src/client.cpp5
-rw-r--r--src/main.cpp8
-rw-r--r--src/options.h2
4 files changed, 17 insertions, 1 deletions
diff --git a/docs/manaplus.6 b/docs/manaplus.6
index 507092aab..051d054e8 100644
--- a/docs/manaplus.6
+++ b/docs/manaplus.6
@@ -42,6 +42,9 @@ Login with this character.
.B \-s, \-\-server
Login server name or IP.
.TP
+.B \-y, \-\-server-type
+Login server type.
+.TP
.B \-p, \-\-port
Login server port.
.TP
diff --git a/src/client.cpp b/src/client.cpp
index 8a6f885c7..f0919ed9a 100644
--- a/src/client.cpp
+++ b/src/client.cpp
@@ -404,6 +404,11 @@ void Client::gameInit()
// Initialize default server
mCurrentServer.hostname = settings.options.serverName;
mCurrentServer.port = settings.options.serverPort;
+ if (!settings.options.serverType.empty())
+ {
+ mCurrentServer.type = ServerInfo::parseType(
+ settings.options.serverType);
+ }
loginData.username = settings.options.username;
loginData.password = settings.options.password;
diff --git a/src/main.cpp b/src/main.cpp
index 7fc00918f..da445aab6 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -107,6 +107,8 @@ static void printHelp()
// TRANSLATORS: command line help
<< _(" -s --server : Login server name or IP") << std::endl
// TRANSLATORS: command line help
+ << _(" -y --server-type : Login server type") << std::endl
+ // TRANSLATORS: command line help
<< _(" -p --port : Login server port") << std::endl
// TRANSLATORS: command line help
<< _(" -H --update-host : Use this update host") << std::endl
@@ -146,7 +148,7 @@ static void printVersion()
static void parseOptions(const int argc, char *const argv[])
{
- const char *const optstring = "hvud:U:P:Dc:p:l:L:C:s:t:T:a:r";
+ const char *const optstring = "hvud:U:P:Dc:p:y:l:L:C:s:t:T:a:r";
const struct option long_options[] =
{
@@ -171,6 +173,7 @@ static void parseOptions(const int argc, char *const argv[])
{ "tests", no_argument, nullptr, 'T' },
{ "test", required_argument, nullptr, 't' },
{ "renderer", required_argument, nullptr, 'r' },
+ { "server-type", required_argument, nullptr, 'y' },
{ nullptr, 0, nullptr, 0 }
};
@@ -256,6 +259,9 @@ static void parseOptions(const int argc, char *const argv[])
case 'r':
options.renderer = static_cast<int>(atoi(optarg));
break;
+ case 'y':
+ options.serverType = optarg;
+ break;
default:
break;
}
diff --git a/src/options.h b/src/options.h
index def02200b..7f4a63ca7 100644
--- a/src/options.h
+++ b/src/options.h
@@ -54,6 +54,7 @@ struct Options final
screenshotDir(),
test(),
serverName(),
+ serverType(),
renderer(-1),
serverPort(0),
printHelp(false),
@@ -79,6 +80,7 @@ struct Options final
std::string screenshotDir;
std::string test;
std::string serverName;
+ std::string serverType;
int renderer;
uint16_t serverPort;
bool printHelp;