mirror of
				https://github.com/vcmi/vcmi.git
				synced 2025-10-31 00:07:39 +02:00 
			
		
		
		
	Minors:
- By default, cmake will keep debug info - removed warnings from adventure map infobox (part of #1636) - adventure map infobox will refresh on artifact changes (part of #1636) - moved terrain music files to terrains.json file - player should act before AI in all games, not only campaigns
This commit is contained in:
		| @@ -9,7 +9,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_HOME_DIRECTORY}/cmake_modules) | ||||
|  | ||||
| # enable Release mode but only if it was not set | ||||
| if (NOT CMAKE_BUILD_TYPE) | ||||
| 	set(CMAKE_BUILD_TYPE Release) | ||||
|         set(CMAKE_BUILD_TYPE RelWithDebInfo) | ||||
| endif() | ||||
|  | ||||
| # VCMI version | ||||
|   | ||||
| @@ -761,7 +761,7 @@ void CInfoBar::CVisibleInfo::loadGameStatus() | ||||
| 	//generate list of allies and enemies | ||||
| 	for(int i = 0; i < PlayerColor::PLAYER_LIMIT_I; i++) | ||||
| 	{ | ||||
| 		if(LOCPLINT->cb->getPlayerStatus(PlayerColor(i)) == EPlayerStatus::INGAME) | ||||
| 		if(LOCPLINT->cb->getPlayerStatus(PlayerColor(i), false) == EPlayerStatus::INGAME) | ||||
| 		{ | ||||
| 			if (LOCPLINT->cb->getPlayerRelations(LOCPLINT->playerID, PlayerColor(i)) != PlayerRelations::ENEMIES) | ||||
| 				allies.push_back(PlayerColor(i)); | ||||
|   | ||||
| @@ -8,6 +8,7 @@ | ||||
| #include "../lib/JsonNode.h" | ||||
| #include "../lib/GameConstants.h" | ||||
| #include "../lib/filesystem/Filesystem.h" | ||||
| #include "../lib/StringConstants.h" | ||||
|  | ||||
| /* | ||||
|  * CMusicHandler.cpp, part of VCMI engine | ||||
| @@ -307,16 +308,21 @@ CMusicHandler::CMusicHandler(): | ||||
| 	// Vectors for helper | ||||
| 	const std::string setEnemy[] = {"AITheme0", "AITheme1", "AITheme2"}; | ||||
| 	const std::string setBattle[] = {"Combat01", "Combat02", "Combat03", "Combat04"}; | ||||
| 	const std::string setTerrain[] = {"Dirt",	"Sand",	"Grass", "Snow", "Swamp", "Rough", "Underground", "Lava", "Water"}; | ||||
|  | ||||
| 	auto fillSet = [=](std::string setName, const std::string list[], size_t amount) | ||||
| 	{ | ||||
| 		for (size_t i=0; i < amount; i++) | ||||
| 	        addEntryToSet(setName, i, std::string("music/") + list[i]); | ||||
| 			addEntryToSet(setName, i, "music/" + list[i]); | ||||
| 	}; | ||||
| 	fillSet("enemy-turn", setEnemy, ARRAY_COUNT(setEnemy)); | ||||
| 	fillSet("battle", setBattle, ARRAY_COUNT(setBattle)); | ||||
| 	fillSet("terrain", setTerrain, ARRAY_COUNT(setTerrain)); | ||||
|  | ||||
| 	JsonNode terrains(ResourceID("config/terrains.json")); | ||||
| 	for (auto entry : terrains.Struct()) | ||||
| 	{ | ||||
| 		int terrIndex = vstd::find_pos(GameConstants::TERRAIN_NAMES, entry.first); | ||||
| 		addEntryToSet("terrain", terrIndex, "Music/" + entry.second["music"].String()); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| void CMusicHandler::addEntryToSet(std::string set, int musicID, std::string musicURI) | ||||
| @@ -479,8 +485,6 @@ MusicEntry::~MusicEntry() | ||||
| 	logGlobal->traceStream()<<"Del-ing music file "<<currentName; | ||||
| 	if (music) | ||||
| 		Mix_FreeMusic(music); | ||||
| 	/*if (musicFile) // Mix_FreeMusic will also free file data? Needs checking | ||||
| 		SDL_FreeRW(musicFile);*/ | ||||
| } | ||||
|  | ||||
| void MusicEntry::load(std::string musicURI) | ||||
| @@ -491,11 +495,6 @@ void MusicEntry::load(std::string musicURI) | ||||
| 		Mix_FreeMusic(music); | ||||
| 		music = nullptr; | ||||
| 	} | ||||
| 	/*if (musicFile) // Mix_FreeMusic will also free file data? Needs checking | ||||
| 	{ | ||||
| 		SDL_FreeRW(musicFile); | ||||
| 		musicFile = nullptr; | ||||
| 	}*/ | ||||
|  | ||||
| 	currentName = musicURI; | ||||
|  | ||||
|   | ||||
| @@ -2515,6 +2515,7 @@ void CPlayerInterface::artifactPut(const ArtifactLocation &al) | ||||
| void CPlayerInterface::artifactRemoved(const ArtifactLocation &al) | ||||
| { | ||||
| 	EVENT_HANDLER_CALLED_BY_CLIENT; | ||||
| 	adventureInt->infoBar.showSelection(); | ||||
| 	for(IShowActivatable *isa : GH.listInt) | ||||
| 	{ | ||||
| 		auto artWin = dynamic_cast<CArtifactHolder*>(isa); | ||||
| @@ -2526,6 +2527,7 @@ void CPlayerInterface::artifactRemoved(const ArtifactLocation &al) | ||||
| void CPlayerInterface::artifactMoved(const ArtifactLocation &src, const ArtifactLocation &dst) | ||||
| { | ||||
| 	EVENT_HANDLER_CALLED_BY_CLIENT; | ||||
| 	adventureInt->infoBar.showSelection(); | ||||
| 	for(IShowActivatable *isa : GH.listInt) | ||||
| 	{ | ||||
| 		auto artWin = dynamic_cast<CArtifactHolder*>(isa); | ||||
| @@ -2537,6 +2539,7 @@ void CPlayerInterface::artifactMoved(const ArtifactLocation &src, const Artifact | ||||
| void CPlayerInterface::artifactAssembled(const ArtifactLocation &al) | ||||
| { | ||||
| 	EVENT_HANDLER_CALLED_BY_CLIENT; | ||||
| 	adventureInt->infoBar.showSelection(); | ||||
| 	for(IShowActivatable *isa : GH.listInt) | ||||
| 	{ | ||||
| 		auto artWin = dynamic_cast<CArtifactHolder*>(isa); | ||||
| @@ -2548,6 +2551,7 @@ void CPlayerInterface::artifactAssembled(const ArtifactLocation &al) | ||||
| void CPlayerInterface::artifactDisassembled(const ArtifactLocation &al) | ||||
| { | ||||
| 	EVENT_HANDLER_CALLED_BY_CLIENT; | ||||
| 	adventureInt->infoBar.showSelection(); | ||||
| 	for(IShowActivatable *isa : GH.listInt) | ||||
| 	{ | ||||
| 		auto artWin = dynamic_cast<CArtifactHolder*>(isa); | ||||
| @@ -2559,7 +2563,7 @@ void CPlayerInterface::artifactDisassembled(const ArtifactLocation &al) | ||||
| void CPlayerInterface::playerStartsTurn(PlayerColor player) | ||||
| { | ||||
| 	EVENT_HANDLER_CALLED_BY_CLIENT; | ||||
|  | ||||
| 	adventureInt->infoBar.showSelection(); | ||||
| 	if (!vstd::contains (GH.listInt, adventureInt)) | ||||
| 	{ | ||||
| 		GH.popInts (GH.listInt.size()); //after map load - remove everything else | ||||
|   | ||||
| @@ -3,60 +3,70 @@ | ||||
| 	{ | ||||
| 		"moveCost" : 100, | ||||
| 		"minimapUnblocked" : [ 82, 56, 8 ], | ||||
| 		"minimapBlocked"   : [ 57, 40, 8 ] | ||||
| 		"minimapBlocked"   : [ 57, 40, 8 ], | ||||
| 		"music" : "Dirt.mp3" | ||||
| 	}, | ||||
| 	"sand" : | ||||
| 	{ | ||||
| 		"moveCost" : 150, | ||||
| 		"minimapUnblocked" : [ 222, 207, 140 ], | ||||
| 		"minimapBlocked"   : [ 165, 158, 107 ] | ||||
| 		"minimapBlocked"   : [ 165, 158, 107 ], | ||||
| 		"music" : "Sand.mp3" | ||||
| 	}, | ||||
| 	"grass" : | ||||
| 	{ | ||||
| 		"moveCost" : 100, | ||||
| 		"minimapUnblocked" : [ 0, 65, 0 ], | ||||
| 		"minimapBlocked"   : [ 0, 48, 0 ] | ||||
| 		"minimapBlocked"   : [ 0, 48, 0 ], | ||||
| 		"music" : "Grass.mp3" | ||||
| 	}, | ||||
| 	"snow" : | ||||
| 	{ | ||||
| 		"moveCost" : 150, | ||||
| 		"minimapUnblocked" : [ 181, 199, 198 ], | ||||
| 		"minimapBlocked"   : [ 140, 158, 156 ] | ||||
| 		"minimapBlocked"   : [ 140, 158, 156 ], | ||||
| 		"music" : "Snow.mp3" | ||||
| 	}, | ||||
| 	"swamp" : | ||||
| 	{ | ||||
| 		"moveCost" : 175, | ||||
| 		"minimapUnblocked" : [ 74, 134, 107 ], | ||||
| 		"minimapBlocked"   : [ 33,  89,  66 ] | ||||
| 		"minimapBlocked"   : [ 33,  89,  66 ], | ||||
| 		"music" : "Swamp.mp3" | ||||
| 	}, | ||||
| 	"rough" : | ||||
| 	{ | ||||
| 		"moveCost" : 125, | ||||
| 		"minimapUnblocked" : [ 132, 113, 49 ], | ||||
| 		"minimapBlocked"   : [  99,  81, 33 ] | ||||
| 		"minimapBlocked"   : [  99,  81, 33 ], | ||||
| 		"music" : "Rough.mp3" | ||||
| 	}, | ||||
| 	"subterra" : | ||||
| 	{ | ||||
| 		"moveCost" : 100, | ||||
| 		"minimapUnblocked" : [ 132, 48, 0 ], | ||||
| 		"minimapBlocked"   : [  90,  8, 0 ] | ||||
| 		"minimapBlocked"   : [  90,  8, 0 ], | ||||
| 		"music" : "Underground.mp3" | ||||
| 	}, | ||||
| 	"lava" : | ||||
| 	{ | ||||
| 		"moveCost" : 100, | ||||
| 		"minimapUnblocked" : [ 74, 73, 74 ], | ||||
| 		"minimapBlocked"   : [ 41, 40, 41 ] | ||||
| 		"minimapBlocked"   : [ 41, 40, 41 ], | ||||
| 		"music" : "Lava.mp3" | ||||
| 	}, | ||||
| 	"water" : | ||||
| 	{ | ||||
| 		"moveCost" : 100, | ||||
| 		"minimapUnblocked" : [ 8, 81, 148 ], | ||||
| 		"minimapBlocked"   : [ 8, 81, 148 ] | ||||
| 		"minimapBlocked"   : [ 8, 81, 148 ], | ||||
| 		"music" : "Water.mp3" | ||||
| 	}, | ||||
| 	"rock" : | ||||
| 	{ | ||||
| 		"moveCost" : -1, | ||||
| 		"minimapUnblocked" : [ 0, 0, 0 ], | ||||
| 		"minimapBlocked"   : [ 0, 0, 0 ] | ||||
| 		"minimapBlocked"   : [ 0, 0, 0 ], | ||||
| 		"music" : "Underground.mp3" // Impossible in H3 | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -633,10 +633,10 @@ bool CGameInfoCallback::hasAccess(boost::optional<PlayerColor> playerId) const | ||||
| 	return !player || gs->getPlayerRelations( *playerId, *player ) != PlayerRelations::ENEMIES; | ||||
| } | ||||
|  | ||||
| EPlayerStatus::EStatus CGameInfoCallback::getPlayerStatus(PlayerColor player) const | ||||
| EPlayerStatus::EStatus CGameInfoCallback::getPlayerStatus(PlayerColor player, bool verbose) const | ||||
| { | ||||
| 	const PlayerState *ps = gs->getPlayer(player, false); | ||||
| 	ERROR_RET_VAL_IF(!ps, "No such player!", EPlayerStatus::WRONG); | ||||
| 	const PlayerState *ps = gs->getPlayer(player, verbose); | ||||
| 	ERROR_VERBOSE_OR_NOT_RET_VAL_IF(!ps, verbose, "No such player!", EPlayerStatus::WRONG); | ||||
|  | ||||
| 	return ps->status; | ||||
| } | ||||
|   | ||||
| @@ -85,7 +85,7 @@ public: | ||||
| 	bool isVisible(int3 pos) const; | ||||
| 	PlayerRelations::PlayerRelations getPlayerRelations(PlayerColor color1, PlayerColor color2) const; | ||||
| 	void getThievesGuildInfo(SThievesGuildInfo & thi, const CGObjectInstance * obj); //get thieves' guild info obtainable while visiting given object | ||||
| 	EPlayerStatus::EStatus getPlayerStatus(PlayerColor player) const; //-1 if no such player | ||||
| 	EPlayerStatus::EStatus getPlayerStatus(PlayerColor player, bool verbose = true) const; //-1 if no such player | ||||
| 	PlayerColor getCurrentPlayer() const; //player that currently makes move // TODO synchronous turns | ||||
| 	virtual PlayerColor getLocalPlayer() const; //player that is currently owning given client (if not a client, then returns current player) | ||||
| 	const PlayerSettings * getPlayerSettings(PlayerColor color) const; | ||||
|   | ||||
| @@ -1519,19 +1519,16 @@ std::list<PlayerColor> CGameHandler::generatePlayerTurnOrder() const | ||||
| 	// Generate player turn order | ||||
| 	std::list<PlayerColor> playerTurnOrder; | ||||
|  | ||||
| 	bool playCampaign = gs->scenarioOps->campState != nullptr; | ||||
| 	for(const auto & player : gs->players) // add human players for campaign only first OR all players for normal game | ||||
| 	for(const auto & player : gs->players) // add human players first | ||||
| 	{ | ||||
| 		if(player.second.human || !playCampaign) playerTurnOrder.push_back(player.first); | ||||
| 		if(player.second.human) | ||||
| 			playerTurnOrder.push_back(player.first); | ||||
| 	} | ||||
| 	if(playCampaign) | ||||
| 	for(const auto & player : gs->players) // then add non-human players | ||||
| 	{ | ||||
| 		for(const auto & player : gs->players) // then add non-human players for campaign | ||||
| 		{ | ||||
| 			if(!player.second.human) playerTurnOrder.push_back(player.first); | ||||
| 		} | ||||
| 		if(!player.second.human) | ||||
| 			playerTurnOrder.push_back(player.first); | ||||
| 	} | ||||
|  | ||||
| 	return std::move(playerTurnOrder); | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user