ソースを参照

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.
Arseniy Shestakov 8 年 前
コミット
eeff7ee315
5 ファイル変更15 行追加28 行削除
  1. 8 16
      client/CMT.cpp
  2. 2 2
      client/CPreGame.cpp
  3. 3 5
      client/Client.cpp
  4. 0 2
      client/Client.h
  5. 2 3
      server/CVCMIServer.cpp

+ 8 - 16
client/CMT.cpp

@@ -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);

+ 2 - 2
client/CPreGame.cpp

@@ -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));

+ 3 - 5
client/Client.cpp

@@ -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";

+ 0 - 2
client/Client.h

@@ -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;

+ 2 - 3
server/CVCMIServer.cpp

@@ -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);
 	}