mirror of
https://github.com/vcmi/vcmi.git
synced 2024-11-24 08:32:34 +02:00
Use HeroTypeID instead of int
This commit is contained in:
parent
6493922f9b
commit
0fdbf54937
@ -82,7 +82,7 @@ CBonusSelection::CBonusSelection()
|
|||||||
|
|
||||||
mapName = std::make_shared<CLabel>(481, 219, FONT_BIG, ETextAlignment::TOPLEFT, Colors::YELLOW, CSH->mi->getName());
|
mapName = std::make_shared<CLabel>(481, 219, FONT_BIG, ETextAlignment::TOPLEFT, Colors::YELLOW, CSH->mi->getName());
|
||||||
labelMapDescription = std::make_shared<CLabel>(481, 253, FONT_SMALL, ETextAlignment::TOPLEFT, Colors::YELLOW, CGI->generaltexth->allTexts[496]);
|
labelMapDescription = std::make_shared<CLabel>(481, 253, FONT_SMALL, ETextAlignment::TOPLEFT, Colors::YELLOW, CGI->generaltexth->allTexts[496]);
|
||||||
mapDescription = std::make_shared<CTextBox>("", Rect(480, 280, 286, 117), 1);
|
mapDescription = std::make_shared<CTextBox>("", Rect(480, 278, 292, 108), 1);
|
||||||
|
|
||||||
labelChooseBonus = std::make_shared<CLabel>(511, 432, FONT_SMALL, ETextAlignment::TOPLEFT, Colors::WHITE, CGI->generaltexth->allTexts[71]);
|
labelChooseBonus = std::make_shared<CLabel>(511, 432, FONT_SMALL, ETextAlignment::TOPLEFT, Colors::WHITE, CGI->generaltexth->allTexts[71]);
|
||||||
groupBonuses = std::make_shared<CToggleGroup>(std::bind(&IServerAPI::setCampaignBonus, CSH, _1));
|
groupBonuses = std::make_shared<CToggleGroup>(std::bind(&IServerAPI::setCampaignBonus, CSH, _1));
|
||||||
|
@ -38,6 +38,8 @@
|
|||||||
|
|
||||||
VCMI_LIB_NAMESPACE_BEGIN
|
VCMI_LIB_NAMESPACE_BEGIN
|
||||||
|
|
||||||
|
const HeroTypeID HeroTypeID::NONE = HeroTypeID(-1);
|
||||||
|
|
||||||
const SlotID SlotID::COMMANDER_SLOT_PLACEHOLDER = SlotID(-2);
|
const SlotID SlotID::COMMANDER_SLOT_PLACEHOLDER = SlotID(-2);
|
||||||
const SlotID SlotID::SUMMONED_SLOT_PLACEHOLDER = SlotID(-3);
|
const SlotID SlotID::SUMMONED_SLOT_PLACEHOLDER = SlotID(-3);
|
||||||
const SlotID SlotID::WAR_MACHINES_SLOT = SlotID(-4);
|
const SlotID SlotID::WAR_MACHINES_SLOT = SlotID(-4);
|
||||||
|
@ -329,6 +329,8 @@ class HeroTypeID : public BaseForID<HeroTypeID, si32>
|
|||||||
///json serialization helpers
|
///json serialization helpers
|
||||||
static si32 decode(const std::string & identifier);
|
static si32 decode(const std::string & identifier);
|
||||||
static std::string encode(const si32 index);
|
static std::string encode(const si32 index);
|
||||||
|
|
||||||
|
DLL_LINKAGE static const HeroTypeID NONE;
|
||||||
};
|
};
|
||||||
|
|
||||||
class SlotID : public BaseForID<SlotID, si32>
|
class SlotID : public BaseForID<SlotID, si32>
|
||||||
|
@ -177,18 +177,18 @@ CGHeroInstance * CGameState::HeroesPool::pickHeroFor(bool native,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CGameState::pickNextHeroType(const PlayerColor & owner)
|
HeroTypeID CGameState::pickNextHeroType(const PlayerColor & owner)
|
||||||
{
|
{
|
||||||
const PlayerSettings &ps = scenarioOps->getIthPlayersSettings(owner);
|
const PlayerSettings &ps = scenarioOps->getIthPlayersSettings(owner);
|
||||||
if(ps.hero >= 0 && !isUsedHero(HeroTypeID(ps.hero))) //we haven't used selected hero
|
if(ps.hero >= 0 && !isUsedHero(HeroTypeID(ps.hero))) //we haven't used selected hero
|
||||||
{
|
{
|
||||||
return ps.hero;
|
return HeroTypeID(ps.hero);
|
||||||
}
|
}
|
||||||
|
|
||||||
return pickUnusedHeroTypeRandomly(owner);
|
return pickUnusedHeroTypeRandomly(owner);
|
||||||
}
|
}
|
||||||
|
|
||||||
int CGameState::pickUnusedHeroTypeRandomly(const PlayerColor & owner)
|
HeroTypeID CGameState::pickUnusedHeroTypeRandomly(const PlayerColor & owner)
|
||||||
{
|
{
|
||||||
//list of available heroes for this faction and others
|
//list of available heroes for this faction and others
|
||||||
std::vector<HeroTypeID> factionHeroes;
|
std::vector<HeroTypeID> factionHeroes;
|
||||||
@ -206,23 +206,23 @@ int CGameState::pickUnusedHeroTypeRandomly(const PlayerColor & owner)
|
|||||||
// select random hero native to "our" faction
|
// select random hero native to "our" faction
|
||||||
if(!factionHeroes.empty())
|
if(!factionHeroes.empty())
|
||||||
{
|
{
|
||||||
return RandomGeneratorUtil::nextItem(factionHeroes, getRandomGenerator())->getNum();
|
return *RandomGeneratorUtil::nextItem(factionHeroes, getRandomGenerator());
|
||||||
}
|
}
|
||||||
|
|
||||||
logGlobal->warn("Cannot find free hero of appropriate faction for player %s - trying to get first available...", owner.getStr());
|
logGlobal->warn("Cannot find free hero of appropriate faction for player %s - trying to get first available...", owner.getStr());
|
||||||
if(!otherHeroes.empty())
|
if(!otherHeroes.empty())
|
||||||
{
|
{
|
||||||
return RandomGeneratorUtil::nextItem(otherHeroes, getRandomGenerator())->getNum();
|
return *RandomGeneratorUtil::nextItem(otherHeroes, getRandomGenerator());
|
||||||
}
|
}
|
||||||
|
|
||||||
logGlobal->error("No free allowed heroes!");
|
logGlobal->error("No free allowed heroes!");
|
||||||
auto notAllowedHeroesButStillBetterThanCrash = getUnusedAllowedHeroes(true);
|
auto notAllowedHeroesButStillBetterThanCrash = getUnusedAllowedHeroes(true);
|
||||||
if(!notAllowedHeroesButStillBetterThanCrash.empty())
|
if(!notAllowedHeroesButStillBetterThanCrash.empty())
|
||||||
return notAllowedHeroesButStillBetterThanCrash.begin()->getNum();
|
return *notAllowedHeroesButStillBetterThanCrash.begin();
|
||||||
|
|
||||||
logGlobal->error("No free heroes at all!");
|
logGlobal->error("No free heroes at all!");
|
||||||
assert(0); //current code can't handle this situation
|
assert(0); //current code can't handle this situation
|
||||||
return -1; // no available heroes at all
|
return HeroTypeID::NONE; // no available heroes at all
|
||||||
}
|
}
|
||||||
|
|
||||||
std::pair<Obj,int> CGameState::pickObject (CGObjectInstance *obj)
|
std::pair<Obj,int> CGameState::pickObject (CGObjectInstance *obj)
|
||||||
|
@ -215,8 +215,8 @@ private:
|
|||||||
bool isUsedHero(const HeroTypeID & hid) const; //looks in heroes and prisons
|
bool isUsedHero(const HeroTypeID & hid) const; //looks in heroes and prisons
|
||||||
std::set<HeroTypeID> getUnusedAllowedHeroes(bool alsoIncludeNotAllowed = false) const;
|
std::set<HeroTypeID> getUnusedAllowedHeroes(bool alsoIncludeNotAllowed = false) const;
|
||||||
std::pair<Obj,int> pickObject(CGObjectInstance *obj); //chooses type of object to be randomized, returns <type, subtype>
|
std::pair<Obj,int> pickObject(CGObjectInstance *obj); //chooses type of object to be randomized, returns <type, subtype>
|
||||||
int pickUnusedHeroTypeRandomly(const PlayerColor & owner); // picks a unused hero type randomly
|
HeroTypeID pickUnusedHeroTypeRandomly(const PlayerColor & owner); // picks a unused hero type randomly
|
||||||
int pickNextHeroType(const PlayerColor & owner); // picks next free hero type of the H3 hero init sequence -> chosen starting hero, then unused hero type randomly
|
HeroTypeID pickNextHeroType(const PlayerColor & owner); // picks next free hero type of the H3 hero init sequence -> chosen starting hero, then unused hero type randomly
|
||||||
UpgradeInfo fillUpgradeInfo(const CStackInstance &stack) const;
|
UpgradeInfo fillUpgradeInfo(const CStackInstance &stack) const;
|
||||||
|
|
||||||
// ---- data -----
|
// ---- data -----
|
||||||
|
Loading…
Reference in New Issue
Block a user