1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-06-17 00:07:41 +02:00

* improvements for HERO campaign bonus

This commit is contained in:
mateuszb
2012-09-23 11:26:26 +00:00
parent 9acfa0d136
commit 00c079f7dc

View File

@ -3180,7 +3180,8 @@ void CBonusSelection::updateBonusSelection()
if (bonDescs[i].info2 == 0xFFFF) if (bonDescs[i].info2 == 0xFFFF)
{ {
boost::algorithm::replace_first(desc, "%s", CGI->generaltexth->allTexts[101]); //hero's name boost::algorithm::replace_first(desc, "%s", CGI->generaltexth->allTexts[101]); //hero's name
picNumber = 0; picNumber = -1;
picName = "CBONN1A3.BMP";
} }
else else
{ {
@ -3206,21 +3207,6 @@ void CBonusSelection::startMap()
{ {
StartInfo *si = new StartInfo(sInfo); StartInfo *si = new StartInfo(sInfo);
{ //select human player if HERO bonus
auto bonus = si->campState->getBonusForCurrentMap();
if(bonus.type == CScenarioTravel::STravelBonus::HERO)
{
std::map<ui32, std::string> names;
names[1] = settings["general"]["playerName"].String();
for(auto it = si->playerInfos.begin(); it != si->playerInfos.end(); ++it)
{
if(it->first == bonus.info1)
::setPlayer(it->second, 1, names);
else
::setPlayer(it->second, 0, names);
}
}
}
if (ourCampaign->mapsConquered.size()) if (ourCampaign->mapsConquered.size())
{ {
GH.popInts(1); GH.popInts(1);
@ -3248,9 +3234,17 @@ void CBonusSelection::selectBonus( int id )
const CCampaignScenario &scenario = ourCampaign->camp->scenarios[sInfo.campState->currentMap]; const CCampaignScenario &scenario = ourCampaign->camp->scenarios[sInfo.campState->currentMap];
const std::vector<CScenarioTravel::STravelBonus> & bonDescs = scenario.travelOptions.bonusesToChoose; const std::vector<CScenarioTravel::STravelBonus> & bonDescs = scenario.travelOptions.bonusesToChoose;
if (bonDescs[id].type == 8) //hero crossover if (bonDescs[id].type == CScenarioTravel::STravelBonus::HERO)
{ {
SEL->setPlayer(sInfo.playerInfos[0], bonDescs[id].info1); //TODO: substitute with appropriate color std::map<ui32, std::string> names;
names[1] = settings["general"]["playerName"].String();
for(auto it = sInfo.playerInfos.begin(); it != sInfo.playerInfos.end(); ++it)
{
if(it->first == bonDescs[id].info1)
::setPlayer(it->second, 1, names);
else
::setPlayer(it->second, 0, names);
}
} }
} }