1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-03-25 21:38:59 +02:00

Remove useless durationType selector

* duration is a mask, equality comparison is not enough
This commit is contained in:
AlexVinS 2015-04-13 10:24:32 +03:00
parent b1837d0311
commit 2cb6cb7baa
6 changed files with 24 additions and 23 deletions

View File

@ -233,7 +233,7 @@ std::string CDefenceAnimation::getMySound()
if(killed)
return battle_sound(stack->getCreature(), killed);
if (stack->valOfBonuses(Selector::durationType(Bonus::STACK_GETS_TURN)))
if (stack->valOfBonuses(Bonus::UntilGetsTurn))
return battle_sound(stack->getCreature(), defend);
return battle_sound(stack->getCreature(), wince);
}
@ -242,8 +242,10 @@ CCreatureAnim::EAnimType CDefenceAnimation::getMyAnimType()
{
if(killed)
return CCreatureAnim::DEATH;
if (stack->valOfBonuses(Selector::durationType(Bonus::STACK_GETS_TURN).And(Selector::typeSubtype(Bonus::PRIMARY_SKILL, PrimarySkill::DEFENSE))))
auto selector = CSelector(Bonus::UntilGetsTurn).And(Selector::typeSubtype(Bonus::PRIMARY_SKILL, PrimarySkill::DEFENSE));
if(stack->valOfBonuses(selector))
return CCreatureAnim::DEFENCE;
return CCreatureAnim::HITTED;
}

View File

@ -1487,7 +1487,7 @@ void CBattleInterface::battleStacksEffectsSet(const SetStackEffect & sse)
txtid++; //move to plural text
BonusList defenseBonuses = *(stack->getBonuses(Selector::typeSubtype(Bonus::PRIMARY_SKILL, PrimarySkill::DEFENSE)));
defenseBonuses.remove_if(Selector::durationType(Bonus::STACK_GETS_TURN)); //remove bonuses gained from defensive stance
defenseBonuses.remove_if(Bonus::UntilGetsTurn); //remove bonuses gained from defensive stance
int val = stack->Defense() - defenseBonuses.totalValue();
auto txt = boost::format (CGI->generaltexth->allTexts[txtid]) % ((stack->count != 1) ? stack->getCreature()->namePl : stack->getCreature()->nameSing) % val;
console->addText(boost::to_string(txt));

View File

@ -748,7 +748,7 @@ void CStackWindow::initSections()
void CStackWindow::initBonusesList()
{
BonusList output, input;
input = *(info->stackNode->getBonuses(Selector::durationType(Bonus::PERMANENT).And(Selector::anyRange())));
input = *(info->stackNode->getBonuses(CSelector(Bonus::Permanent).And(Selector::anyRange())));
while (!input.empty())
{

View File

@ -1353,11 +1353,11 @@ void CGameState::prepareCrossoverHeroes(std::vector<CGameState::CampaignHeroRepl
// Removing short-term bonuses
for(CGHeroInstance * cgh : crossoverHeroes)
{
cgh->popBonuses(Selector::durationType(Bonus::ONE_DAY));
cgh->popBonuses(Selector::durationType(Bonus::ONE_WEEK));
cgh->popBonuses(Selector::durationType(Bonus::N_TURNS));
cgh->popBonuses(Selector::durationType(Bonus::N_DAYS));
cgh->popBonuses(Selector::durationType(Bonus::ONE_BATTLE));
cgh->popBonuses(CSelector(Bonus::OneDay)
.Or(CSelector(Bonus::OneWeek))
.Or(CSelector(Bonus::NTurns))
.Or(CSelector(Bonus::NDays))
.Or(CSelector(Bonus::OneBattle)));
}
}

View File

@ -782,11 +782,6 @@ void CBonusSystemNode::popBonuses(const CSelector &s)
child->popBonuses(s);
}
// void CBonusSystemNode::addNewBonus(const Bonus &b)
// {
// addNewBonus(new Bonus(b));
// }
void CBonusSystemNode::addNewBonus(Bonus *b)
{
assert(!vstd::contains(exportedBonuses,b));
@ -1204,7 +1199,6 @@ namespace Selector
DLL_LINKAGE CSelectFieldEqual<Bonus::BonusType> type(&Bonus::type);
DLL_LINKAGE CSelectFieldEqual<TBonusSubtype> subtype(&Bonus::subtype);
DLL_LINKAGE CSelectFieldEqual<si32> info(&Bonus::additionalInfo);
DLL_LINKAGE CSelectFieldEqual<ui16> duration(&Bonus::duration);
DLL_LINKAGE CSelectFieldEqual<Bonus::BonusSource> sourceType(&Bonus::source);
DLL_LINKAGE CSelectFieldEqual<Bonus::LimitEffect> effectRange(&Bonus::effectRange);
DLL_LINKAGE CWillLastTurns turns;
@ -1228,11 +1222,6 @@ namespace Selector
.And(CSelectFieldEqual<ui32>(&Bonus::sid)(sourceID));
}
CSelector DLL_EXPORT durationType(ui16 duration)
{
return CSelectFieldEqual<ui16>(&Bonus::duration)(duration);
}
CSelector DLL_LINKAGE sourceTypeSel(Bonus::BonusSource source)
{
return CSelectFieldEqual<Bonus::BonusSource>(&Bonus::source)(source);

View File

@ -337,6 +337,14 @@ struct DLL_LINKAGE Bonus
{
return a->additionalInfo < b->additionalInfo;
}
static bool NDays(const Bonus *hb)
{
return hb->duration & Bonus::N_DAYS;
}
static bool NTurns(const Bonus *hb)
{
return hb->duration & Bonus::N_TURNS;
}
static bool OneDay(const Bonus *hb)
{
return hb->duration & Bonus::ONE_DAY;
@ -349,6 +357,10 @@ struct DLL_LINKAGE Bonus
{
return hb->duration & Bonus::ONE_BATTLE;
}
static bool Permanent(const Bonus *hb)
{
return hb->duration & Bonus::PERMANENT;
}
static bool UntilGetsTurn(const Bonus *hb)
{
return hb->duration & Bonus::STACK_GETS_TURN;
@ -947,7 +959,6 @@ namespace Selector
extern DLL_LINKAGE CSelectFieldEqual<Bonus::BonusType> type;
extern DLL_LINKAGE CSelectFieldEqual<TBonusSubtype> subtype;
extern DLL_LINKAGE CSelectFieldEqual<si32> info;
extern DLL_LINKAGE CSelectFieldEqual<ui16> duration;
extern DLL_LINKAGE CSelectFieldEqual<Bonus::BonusSource> sourceType;
extern DLL_LINKAGE CSelectFieldEqual<Bonus::LimitEffect> effectRange;
extern DLL_LINKAGE CWillLastTurns turns;
@ -956,7 +967,6 @@ namespace Selector
CSelector DLL_LINKAGE typeSubtype(Bonus::BonusType Type, TBonusSubtype Subtype);
CSelector DLL_LINKAGE typeSubtypeInfo(Bonus::BonusType type, TBonusSubtype subtype, si32 info);
CSelector DLL_LINKAGE source(Bonus::BonusSource source, ui32 sourceID);
CSelector DLL_LINKAGE durationType(ui16 duration);
CSelector DLL_LINKAGE sourceTypeSel(Bonus::BonusSource source);
bool DLL_LINKAGE matchesType(const CSelector &sel, Bonus::BonusType type);