瀏覽代碼

Fixed CID 1366403

AlexVinS 9 年之前
父節點
當前提交
9094c99759
共有 1 個文件被更改,包括 25 次插入10 次删除
  1. 25 10
      client/CMT.cpp

+ 25 - 10
client/CMT.cpp

@@ -70,7 +70,7 @@ namespace bfs = boost::filesystem;
 std::string NAME_AFFIX = "client";
 std::string NAME = GameConstants::VCMI_VERSION + std::string(" (") + NAME_AFFIX + ')'; //application name
 CGuiHandler GH;
-static CClient *client=nullptr;
+static CClient *client = nullptr;
 
 int preferredDriverIndex = -1;
 SDL_Window * mainWindow = nullptr;
@@ -619,17 +619,22 @@ void processCommand(const std::string &message)
 	}
 	else if(cn=="save")
 	{
+		if(!client)
+		{
+			std::cout << "Game in not active";
+			return;
+		}
 		std::string fname;
 		readed >> fname;
 		client->save(fname);
 	}
-	else if(cn=="load")
-	{
-		// TODO: this code should end the running game and manage to call startGame instead
-		std::string fname;
-		readed >> fname;
-		client->loadGame(fname);
-	}
+//	else if(cn=="load")
+//	{
+//		// TODO: this code should end the running game and manage to call startGame instead
+//		std::string fname;
+//		readed >> fname;
+//		client->loadGame(fname);
+//	}
 	else if(message=="get txt")
 	{
 		std::cout << "Command accepted.\t";
@@ -832,6 +837,11 @@ void processCommand(const std::string &message)
 	else if(cn == "gosolo")
 	{
 		boost::unique_lock<boost::recursive_mutex> un(*CPlayerInterface::pim);
+		if(!client)
+		{
+			std::cout << "Game in not active";
+			return;
+		}
 		PlayerColor color;
 		if(session["aiSolo"].Bool())
 		{
@@ -866,6 +876,11 @@ void processCommand(const std::string &message)
 		boost::to_lower(colorName);
 
 		boost::unique_lock<boost::recursive_mutex> un(*CPlayerInterface::pim);
+		if(!client)
+		{
+			std::cout << "Game in not active";
+			return;
+		}
 		PlayerColor color;
 		if(LOCPLINT)
 			color = LOCPLINT->playerID;
@@ -1245,7 +1260,7 @@ void startGame(StartInfo * options, CConnection *serv/* = nullptr*/)
 		}
 	}
 
-    client = new CClient;
+    client = new CClient();
 	CPlayerInterface::howManyPeople = 0;
 	switch(options->mode) //new game
 	{
@@ -1264,7 +1279,7 @@ void startGame(StartInfo * options, CConnection *serv/* = nullptr*/)
 		break;
 	}
 
-		client->connectionHandler = new boost::thread(&CClient::run, client);
+	client->connectionHandler = new boost::thread(&CClient::run, client);
 }
 
 void endGame()