Quellcode durchsuchen

Tutorial load game mode

nordsoft vor 2 Jahren
Ursprung
Commit
f4869cbfb0

+ 1 - 1
client/CServerHandler.cpp

@@ -682,7 +682,7 @@ int CServerHandler::howManyPlayerInterfaces()
 
 ui8 CServerHandler::getLoadMode()
 {
-	if(state == EClientState::GAMEPLAY)
+	if(loadMode != ELoadMode::TUTORIAL && state == EClientState::GAMEPLAY)
 	{
 		if(si->campState)
 			return ELoadMode::CAMPAIGN;

+ 6 - 1
client/lobby/SelectionTab.cpp

@@ -613,16 +613,21 @@ void SelectionTab::parseSaves(const std::unordered_set<ResourceID> & files)
 			// Filter out other game modes
 			bool isCampaign = mapInfo->scenarioOptionsOfSave->mode == StartInfo::CAMPAIGN;
 			bool isMultiplayer = mapInfo->amountOfHumanPlayersInSave > 1;
+			bool isTutorial = boost::to_upper_copy(mapInfo->scenarioOptionsOfSave->mapname) == "MAPS/TUTORIAL";
 			switch(CSH->getLoadMode())
 			{
 			case ELoadMode::SINGLE:
-				if(isMultiplayer || isCampaign)
+				if(isMultiplayer || isCampaign || isTutorial)
 					mapInfo->mapHeader.reset();
 				break;
 			case ELoadMode::CAMPAIGN:
 				if(!isCampaign)
 					mapInfo->mapHeader.reset();
 				break;
+			case ELoadMode::TUTORIAL:
+				if(!isTutorial)
+					mapInfo->mapHeader.reset();
+				break;
 			default:
 				if(!isMultiplayer)
 					mapInfo->mapHeader.reset();

+ 1 - 1
client/mainmenu/CMainMenu.cpp

@@ -199,7 +199,7 @@ static std::function<void()> genCommand(CMenuScreen * menu, std::vector<std::str
 				case 2:
 					return std::bind(CMainMenu::openLobby, ESelectionScreen::loadGame, true, nullptr, ELoadMode::CAMPAIGN);
 				case 3:
-					return std::bind(CMainMenu::startTutorial);
+					return std::bind(CMainMenu::openLobby, ESelectionScreen::loadGame, true, nullptr, ELoadMode::TUTORIAL);
 				}
 			}
 			break;

+ 1 - 1
client/mainmenu/CMainMenu.h

@@ -34,7 +34,7 @@ enum ESelectionScreen : ui8 {
 
 enum ELoadMode : ui8
 {
-	NONE = 0, SINGLE, MULTI, CAMPAIGN
+	NONE = 0, SINGLE, MULTI, CAMPAIGN, TUTORIAL
 };
 
 /// The main menu screens listed in the EState enum