mirror of
https://github.com/vcmi/vcmi.git
synced 2025-03-27 21:49:10 +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)
|
if(killed)
|
||||||
return battle_sound(stack->getCreature(), 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(), defend);
|
||||||
return battle_sound(stack->getCreature(), wince);
|
return battle_sound(stack->getCreature(), wince);
|
||||||
}
|
}
|
||||||
@ -242,8 +242,10 @@ CCreatureAnim::EAnimType CDefenceAnimation::getMyAnimType()
|
|||||||
{
|
{
|
||||||
if(killed)
|
if(killed)
|
||||||
return CCreatureAnim::DEATH;
|
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::DEFENCE;
|
||||||
return CCreatureAnim::HITTED;
|
return CCreatureAnim::HITTED;
|
||||||
}
|
}
|
||||||
|
@ -1487,7 +1487,7 @@ void CBattleInterface::battleStacksEffectsSet(const SetStackEffect & sse)
|
|||||||
txtid++; //move to plural text
|
txtid++; //move to plural text
|
||||||
|
|
||||||
BonusList defenseBonuses = *(stack->getBonuses(Selector::typeSubtype(Bonus::PRIMARY_SKILL, PrimarySkill::DEFENSE)));
|
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();
|
int val = stack->Defense() - defenseBonuses.totalValue();
|
||||||
auto txt = boost::format (CGI->generaltexth->allTexts[txtid]) % ((stack->count != 1) ? stack->getCreature()->namePl : stack->getCreature()->nameSing) % val;
|
auto txt = boost::format (CGI->generaltexth->allTexts[txtid]) % ((stack->count != 1) ? stack->getCreature()->namePl : stack->getCreature()->nameSing) % val;
|
||||||
console->addText(boost::to_string(txt));
|
console->addText(boost::to_string(txt));
|
||||||
|
@ -748,7 +748,7 @@ void CStackWindow::initSections()
|
|||||||
void CStackWindow::initBonusesList()
|
void CStackWindow::initBonusesList()
|
||||||
{
|
{
|
||||||
BonusList output, input;
|
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())
|
while (!input.empty())
|
||||||
{
|
{
|
||||||
|
@ -1353,11 +1353,11 @@ void CGameState::prepareCrossoverHeroes(std::vector<CGameState::CampaignHeroRepl
|
|||||||
// Removing short-term bonuses
|
// Removing short-term bonuses
|
||||||
for(CGHeroInstance * cgh : crossoverHeroes)
|
for(CGHeroInstance * cgh : crossoverHeroes)
|
||||||
{
|
{
|
||||||
cgh->popBonuses(Selector::durationType(Bonus::ONE_DAY));
|
cgh->popBonuses(CSelector(Bonus::OneDay)
|
||||||
cgh->popBonuses(Selector::durationType(Bonus::ONE_WEEK));
|
.Or(CSelector(Bonus::OneWeek))
|
||||||
cgh->popBonuses(Selector::durationType(Bonus::N_TURNS));
|
.Or(CSelector(Bonus::NTurns))
|
||||||
cgh->popBonuses(Selector::durationType(Bonus::N_DAYS));
|
.Or(CSelector(Bonus::NDays))
|
||||||
cgh->popBonuses(Selector::durationType(Bonus::ONE_BATTLE));
|
.Or(CSelector(Bonus::OneBattle)));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -782,11 +782,6 @@ void CBonusSystemNode::popBonuses(const CSelector &s)
|
|||||||
child->popBonuses(s);
|
child->popBonuses(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
// void CBonusSystemNode::addNewBonus(const Bonus &b)
|
|
||||||
// {
|
|
||||||
// addNewBonus(new Bonus(b));
|
|
||||||
// }
|
|
||||||
|
|
||||||
void CBonusSystemNode::addNewBonus(Bonus *b)
|
void CBonusSystemNode::addNewBonus(Bonus *b)
|
||||||
{
|
{
|
||||||
assert(!vstd::contains(exportedBonuses,b));
|
assert(!vstd::contains(exportedBonuses,b));
|
||||||
@ -1204,7 +1199,6 @@ namespace Selector
|
|||||||
DLL_LINKAGE CSelectFieldEqual<Bonus::BonusType> type(&Bonus::type);
|
DLL_LINKAGE CSelectFieldEqual<Bonus::BonusType> type(&Bonus::type);
|
||||||
DLL_LINKAGE CSelectFieldEqual<TBonusSubtype> subtype(&Bonus::subtype);
|
DLL_LINKAGE CSelectFieldEqual<TBonusSubtype> subtype(&Bonus::subtype);
|
||||||
DLL_LINKAGE CSelectFieldEqual<si32> info(&Bonus::additionalInfo);
|
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::BonusSource> sourceType(&Bonus::source);
|
||||||
DLL_LINKAGE CSelectFieldEqual<Bonus::LimitEffect> effectRange(&Bonus::effectRange);
|
DLL_LINKAGE CSelectFieldEqual<Bonus::LimitEffect> effectRange(&Bonus::effectRange);
|
||||||
DLL_LINKAGE CWillLastTurns turns;
|
DLL_LINKAGE CWillLastTurns turns;
|
||||||
@ -1228,11 +1222,6 @@ namespace Selector
|
|||||||
.And(CSelectFieldEqual<ui32>(&Bonus::sid)(sourceID));
|
.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)
|
CSelector DLL_LINKAGE sourceTypeSel(Bonus::BonusSource source)
|
||||||
{
|
{
|
||||||
return CSelectFieldEqual<Bonus::BonusSource>(&Bonus::source)(source);
|
return CSelectFieldEqual<Bonus::BonusSource>(&Bonus::source)(source);
|
||||||
|
@ -337,6 +337,14 @@ struct DLL_LINKAGE Bonus
|
|||||||
{
|
{
|
||||||
return a->additionalInfo < b->additionalInfo;
|
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)
|
static bool OneDay(const Bonus *hb)
|
||||||
{
|
{
|
||||||
return hb->duration & Bonus::ONE_DAY;
|
return hb->duration & Bonus::ONE_DAY;
|
||||||
@ -349,6 +357,10 @@ struct DLL_LINKAGE Bonus
|
|||||||
{
|
{
|
||||||
return hb->duration & Bonus::ONE_BATTLE;
|
return hb->duration & Bonus::ONE_BATTLE;
|
||||||
}
|
}
|
||||||
|
static bool Permanent(const Bonus *hb)
|
||||||
|
{
|
||||||
|
return hb->duration & Bonus::PERMANENT;
|
||||||
|
}
|
||||||
static bool UntilGetsTurn(const Bonus *hb)
|
static bool UntilGetsTurn(const Bonus *hb)
|
||||||
{
|
{
|
||||||
return hb->duration & Bonus::STACK_GETS_TURN;
|
return hb->duration & Bonus::STACK_GETS_TURN;
|
||||||
@ -947,7 +959,6 @@ namespace Selector
|
|||||||
extern DLL_LINKAGE CSelectFieldEqual<Bonus::BonusType> type;
|
extern DLL_LINKAGE CSelectFieldEqual<Bonus::BonusType> type;
|
||||||
extern DLL_LINKAGE CSelectFieldEqual<TBonusSubtype> subtype;
|
extern DLL_LINKAGE CSelectFieldEqual<TBonusSubtype> subtype;
|
||||||
extern DLL_LINKAGE CSelectFieldEqual<si32> info;
|
extern DLL_LINKAGE CSelectFieldEqual<si32> info;
|
||||||
extern DLL_LINKAGE CSelectFieldEqual<ui16> duration;
|
|
||||||
extern DLL_LINKAGE CSelectFieldEqual<Bonus::BonusSource> sourceType;
|
extern DLL_LINKAGE CSelectFieldEqual<Bonus::BonusSource> sourceType;
|
||||||
extern DLL_LINKAGE CSelectFieldEqual<Bonus::LimitEffect> effectRange;
|
extern DLL_LINKAGE CSelectFieldEqual<Bonus::LimitEffect> effectRange;
|
||||||
extern DLL_LINKAGE CWillLastTurns turns;
|
extern DLL_LINKAGE CWillLastTurns turns;
|
||||||
@ -956,7 +967,6 @@ namespace Selector
|
|||||||
CSelector DLL_LINKAGE typeSubtype(Bonus::BonusType Type, TBonusSubtype Subtype);
|
CSelector DLL_LINKAGE typeSubtype(Bonus::BonusType Type, TBonusSubtype Subtype);
|
||||||
CSelector DLL_LINKAGE typeSubtypeInfo(Bonus::BonusType type, TBonusSubtype subtype, si32 info);
|
CSelector DLL_LINKAGE typeSubtypeInfo(Bonus::BonusType type, TBonusSubtype subtype, si32 info);
|
||||||
CSelector DLL_LINKAGE source(Bonus::BonusSource source, ui32 sourceID);
|
CSelector DLL_LINKAGE source(Bonus::BonusSource source, ui32 sourceID);
|
||||||
CSelector DLL_LINKAGE durationType(ui16 duration);
|
|
||||||
CSelector DLL_LINKAGE sourceTypeSel(Bonus::BonusSource source);
|
CSelector DLL_LINKAGE sourceTypeSel(Bonus::BonusSource source);
|
||||||
|
|
||||||
bool DLL_LINKAGE matchesType(const CSelector &sel, Bonus::BonusType type);
|
bool DLL_LINKAGE matchesType(const CSelector &sel, Bonus::BonusType type);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user