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:
parent
b1837d0311
commit
2cb6cb7baa
@ -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;
|
||||
}
|
||||
|
@ -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));
|
||||
|
@ -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())
|
||||
{
|
||||
|
@ -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)));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user