1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-11-24 08:32:34 +02:00

Few minor code improvements

* All command line options now case insensetive.
* SDL_VIDEO_X11_DGAMOUS unused in SDL2 so it's removed.
* Added current year into the --help output for client and server.
* Moved DO_NOT_START_SERVER into session settings.
This commit is contained in:
Arseniy Shestakov 2017-06-26 02:40:48 +03:00
parent 6c8192956e
commit eeff7ee315
5 changed files with 15 additions and 28 deletions

View File

@ -60,6 +60,7 @@
#endif
namespace po = boost::program_options;
namespace po_style = boost::program_options::command_line_style;
namespace bfs = boost::filesystem;
/*
@ -200,15 +201,13 @@ static void prog_version(void)
static void prog_help(const po::options_description &opts)
{
auto time = std::time(0);
printf("%s - A Heroes of Might and Magic 3 clone\n", GameConstants::VCMI_VERSION.c_str());
printf("Copyright (C) 2007-2017 VCMI dev team - see AUTHORS file\n");
printf("Copyright (C) 2007-%d VCMI dev team - see AUTHORS file\n", std::localtime(&time)->tm_year + 1900);
printf("This is free software; see the source for copying conditions. There is NO\n");
printf("warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n");
printf("\n");
printf("Usage:\n");
std::cout << opts;
// printf(" -h, --help display this help and exit\n");
// printf(" -v, --version display version information and exit\n");
}
static void SDLLogCallback(void* userdata,
@ -293,7 +292,7 @@ int main(int argc, char** argv)
{
try
{
po::store(po::parse_command_line(argc, argv, opts), vm);
po::store(po::parse_command_line(argc, argv, opts, po_style::unix_style|po_style::case_insensitive), vm);
}
catch(std::exception &e)
{
@ -312,16 +311,6 @@ int main(int argc, char** argv)
prog_version();
return 0;
}
if(vm.count("donotstartserver"))
{
CServerHandler::DO_NOT_START_SERVER = true;
}
// Have effect on X11 system only (Linux).
// For whatever reason in fullscreen mode SDL takes "raw" mouse input from DGA X11 extension
// (DGA = Direct graphics access). Because this is raw input (before any speed\acceleration proceesing)
// it may result in very small \ very fast mouse when game in fullscreen mode
putenv((char*)"SDL_VIDEO_X11_DGAMOUSE=0");
// Init old logging system and new (temporary) logging system
CStopWatch total, pomtime;
@ -347,6 +336,9 @@ int main(int argc, char** argv)
session["headless"].Bool() = true;
session["onlyai"].Bool() = true;
}
// Server settings
session["donotstartserver"].Bool() = vm.count("donotstartserver");
// Shared memory options
session["disable-shm"].Bool() = vm.count("disable-shm");
session["enable-shm-uuid"].Bool() = vm.count("enable-shm-uuid");
@ -1331,7 +1323,7 @@ static void mainLoop()
void startGame(StartInfo * options, CConnection *serv/* = nullptr*/)
{
if(!CServerHandler::DO_NOT_START_SERVER)
if(!settings["session"]["donotstartserver"].Bool())
{
serverAlive.waitWhileTrue();
serverAlive.setn(true);

View File

@ -693,7 +693,7 @@ CSelectionScreen::CSelectionScreen(CMenuScreen::EState Type, CMenuScreen::EGameM
if(isHost())
{
assert(playerNames.size() == 1 && vstd::contains(playerNames, 1)); //TODO hot-seat/network combo
if(CServerHandler::DO_NOT_START_SERVER)
if(settings["session"]["donotstartserver"].Bool())
serv = CServerHandler::justConnectToServer(Address, Port);
else
serv = sh->connectToServer();
@ -3170,7 +3170,7 @@ void CMultiMode::hostTCP()
Settings name = settings.write["general"]["playerName"];
name->String() = txt->text;
GH.popIntTotally(this);
if(CServerHandler::DO_NOT_START_SERVER)
if(settings["session"]["donotstartserver"].Bool())
GH.pushInt(new CSimpleJoinScreen(CMenuScreen::MULTI_NETWORK_HOST));
else
GH.pushInt(new CSelectionScreen(CMenuScreen::newGame, CMenuScreen::MULTI_NETWORK_HOST));

View File

@ -986,11 +986,9 @@ std::string CClient::aiNameForPlayer(bool battleAI)
return goodAI;
}
bool CServerHandler::DO_NOT_START_SERVER = false;
void CServerHandler::startServer()
{
if(DO_NOT_START_SERVER)
if(settings["session"]["donotstartserver"].Bool())
return;
th.update();
@ -1007,7 +1005,7 @@ void CServerHandler::startServer()
void CServerHandler::waitForServer()
{
if(DO_NOT_START_SERVER)
if(settings["session"]["donotstartserver"].Bool())
return;
if(!serverThread)
@ -1071,7 +1069,7 @@ CServerHandler::CServerHandler(bool runServer /*= false*/)
uuid = boost::uuids::to_string(boost::uuids::random_generator()());
#ifndef VCMI_ANDROID
if(DO_NOT_START_SERVER || settings["session"]["disable-shm"].Bool())
if(settings["session"]["donotstartserver"].Bool() || settings["session"]["disable-shm"].Bool())
return;
std::string sharedMemoryName = "vcmi_memory";

View File

@ -42,8 +42,6 @@ class CServerHandler
private:
void callServer(); //calls server via system(), should be called as thread
public:
static bool DO_NOT_START_SERVER;
CStopWatch th;
boost::thread *serverThread; //thread that called system to run server
SharedMemory * shared;

View File

@ -562,15 +562,14 @@ static void handleCommandOptions(int argc, char *argv[])
}
po::notify(cmdLineOptions);
if (cmdLineOptions.count("help"))
{
auto time = std::time(0);
printf("%s - A Heroes of Might and Magic 3 clone\n", GameConstants::VCMI_VERSION.c_str());
printf("Copyright (C) 2007-2014 VCMI dev team - see AUTHORS file\n");
printf("Copyright (C) 2007-%d VCMI dev team - see AUTHORS file\n", std::localtime(&time)->tm_year + 1900);
printf("This is free software; see the source for copying conditions. There is NO\n");
printf("warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n");
printf("\n");
printf("Usage:\n");
std::cout << opts;
exit(0);
}