diff --git a/client/BattleInterface/CBattleAnimations.cpp b/client/BattleInterface/CBattleAnimations.cpp index 7034f4cbd..f88098fee 100644 --- a/client/BattleInterface/CBattleAnimations.cpp +++ b/client/BattleInterface/CBattleAnimations.cpp @@ -564,7 +564,7 @@ bool CMovementStartAnimation::init() return false; - if(!stack || myAnim()->getType() == 5) + if(!stack || myAnim()->getType() == CCreatureAnim::DEATH) { CMovementStartAnimation::endAnim(); return false; @@ -602,7 +602,7 @@ CReverseAnimation::CReverseAnimation(CBattleInterface * _owner, const CStack * s bool CReverseAnimation::init() { - if(myAnim() == NULL || myAnim()->getType() == 5) + if(myAnim() == NULL || myAnim()->getType() == CCreatureAnim::DEATH) { endAnim(); @@ -699,7 +699,7 @@ bool CShootingAnimation::init() const CStack * shooter = attackingStack; - if(!shooter || myAnim()->getType() == 5) + if(!shooter || myAnim()->getType() == CCreatureAnim::DEATH) { endAnim(); return false; diff --git a/client/BattleInterface/CBattleInterface.cpp b/client/BattleInterface/CBattleInterface.cpp index 9b7358c8d..b687bbb4f 100644 --- a/client/BattleInterface/CBattleInterface.cpp +++ b/client/BattleInterface/CBattleInterface.cpp @@ -581,7 +581,7 @@ void CBattleInterface::show(SDL_Surface * to) SDL_SetClipRect(to, &pos); //printing background and hexes - if(activeStack != NULL && creAnims[activeStack->ID]->getType() != 0) //show everything with range + if(activeStack != NULL && creAnims[activeStack->ID]->getType() != CCreatureAnim::MOVING) //show everything with range { blitAt(backgroundWithHexes, pos.x, pos.y, to); } @@ -711,7 +711,7 @@ void CBattleInterface::show(SDL_Surface * to) const CStack *s = stacks[i]; if(creAnims.find(s->ID) == creAnims.end()) //e.g. for summoned but not yet handled stacks continue; - if(creAnims[s->ID]->getType() != 5 && s->position >= 0) //don't show turrets here + if(creAnims[s->ID]->getType() != CCreatureAnim::DEATH && s->position >= 0) //don't show turrets here stackAliveByHex[s->position].push_back(s); } std::vector stackDeadByHex[GameConstants::BFIELD_SIZE]; @@ -720,7 +720,7 @@ void CBattleInterface::show(SDL_Surface * to) const CStack *s = stacks[i]; if(creAnims.find(s->ID) == creAnims.end()) //e.g. for summoned but not yet handled stacks continue; - if(creAnims[s->ID]->getType() == 5) + if(creAnims[s->ID]->getType() == CCreatureAnim::DEATH) stackDeadByHex[s->position].push_back(s); } @@ -956,7 +956,7 @@ void CBattleInterface::showAliveStacks(std::vector *aliveStacks, { const CStack *s = aliveStacks[hex][v]; - if(!s->hasBonusOfType(Bonus::FLYING) || creAnims[s->ID]->getType() != 0) + if(!s->hasBonusOfType(Bonus::FLYING) || creAnims[s->ID]->getType() != CCreatureAnim::DEATH) showAliveStack(s, to); else flyingStacks->push_back(s); @@ -2171,12 +2171,13 @@ void CBattleInterface::showAliveStack(const CStack *stack, SDL_Surface * to) const CCreature *creature = stack->getCreature(); SDL_Rect unitRect = {creAnims[ID]->pos.x, creAnims[ID]->pos.y, uint16_t(creAnims[ID]->fullWidth), uint16_t(creAnims[ID]->fullHeight)}; - int animType = creAnims[ID]->getType(); + CCreatureAnim::EAnimType animType = creAnims[ID]->getType(); int affectingSpeed = getAnimSpeed(); - if(animType == 1 || animType == 2) //standing stacks should not stand faster :) + if(animType == CCreatureAnim::MOUSEON || animType == CCreatureAnim::HOLDING) //standing stacks should not stand faster :) affectingSpeed = 2; - bool incrementFrame = (animCount%(4/affectingSpeed)==0) && animType!=5 && animType!=20 && animType!=2; + bool incrementFrame = (animCount%(4/affectingSpeed)==0) && animType!=CCreatureAnim::DEATH && + animType!=CCreatureAnim::MOVE_START && animType!=CCreatureAnim::HOLDING; if (creature->idNumber == 149) { @@ -2186,7 +2187,7 @@ void CBattleInterface::showAliveStack(const CStack *stack, SDL_Surface * to) else { // standing animation - if(animType == 2) + if(animType == CCreatureAnim::HOLDING) { if(standingFrame.find(ID)!=standingFrame.end()) { @@ -2521,7 +2522,8 @@ void CBattleInterface::endAction(const BattleAction* action) attackingHero->setPhase(0); } - if(stack && action->actionType == BattleAction::WALK && creAnims[action->stackNumber]->getType() != 2) //walk or walk & attack + if(stack && action->actionType == BattleAction::WALK && + creAnims[action->stackNumber]->getType() != CCreatureAnim::HOLDING) //walk or walk & attack { pendingAnims.push_back(std::make_pair(new CMovementEndAnimation(this, stack, action->destinationTile), false)); } diff --git a/client/CAdvmapInterface.cpp b/client/CAdvmapInterface.cpp index 1bf264f91..0896d35b7 100644 --- a/client/CAdvmapInterface.cpp +++ b/client/CAdvmapInterface.cpp @@ -1141,7 +1141,7 @@ void CAdvMapInt::tileLClicked(const int3 &mapPos) switch(spellBeingCasted->id) { case Spells::SCUTTLE_BOAT: //Scuttle Boat - if(topBlocking && topBlocking->ID == 8) + if(topBlocking && topBlocking->ID == Obj::BOAT) leaveCastingMode(true, mapPos); break; case Spells::DIMENSION_DOOR: diff --git a/client/GUIClasses.cpp b/client/GUIClasses.cpp index 0427935fa..e0c99f46c 100644 --- a/client/GUIClasses.cpp +++ b/client/GUIClasses.cpp @@ -2586,9 +2586,9 @@ CMarketplaceWindow::CMarketplaceWindow(const IMarket *Market, const CGHeroInstan { switch (market->o->ID) { - break; case 7: title = CGI->generaltexth->allTexts[349]; - break; case 99: title = CGI->generaltexth->allTexts[159]; - break; case 221: title = CGI->generaltexth->allTexts[159]; + break; case Obj::BLACK_MARKET: title = CGI->generaltexth->allTexts[349]; + break; case Obj::TRADING_POST: title = CGI->generaltexth->allTexts[159]; + break; case Obj::TRADING_POST_SNOW: title = CGI->generaltexth->allTexts[159]; break; default: title = market->o->getHoverText(); } } diff --git a/client/mapHandler.cpp b/client/mapHandler.cpp index 5f319bbe6..f79cdd3fa 100644 --- a/client/mapHandler.cpp +++ b/client/mapHandler.cpp @@ -542,12 +542,12 @@ void CMapHandler::terrainRect( int3 top_tile, ui8 anim, const std::vector< std:: pp.h = sr.h; pp.w = sr.w; - const CGHeroInstance * themp = (obj->ID != Obj::HERO + const CGHeroInstance * themp = (obj->ID != Obj::HERO ? NULL : static_cast(obj)); //print hero / boat and flag - if((themp && themp->moveDir && themp->type) || (obj->ID == 8)) //it's hero or boat + if((themp && themp->moveDir && themp->type) || (obj->ID == Obj::BOAT)) //it's hero or boat { const int IMGVAL = 8; //frames per group of movement animation ui8 dir; diff --git a/lib/CObjectHandler.cpp b/lib/CObjectHandler.cpp index e4061f459..d1e1bdd37 100644 --- a/lib/CObjectHandler.cpp +++ b/lib/CObjectHandler.cpp @@ -1123,7 +1123,7 @@ void CGHeroInstance::initObj() //TODO: use bonus system //initialize bonuses BOOST_FOREACH(auto skill_info, secSkills) - updateSkill(skill_info.first, skill_info.second); + updateSkill(static_cast(skill_info.first), skill_info.second); Updatespecialty(); mana = manaLimit(); //after all bonuses are taken into account, make sure this line is the last one @@ -1184,7 +1184,7 @@ void CGHeroInstance::Updatespecialty() //TODO: calculate special value of bonuse } } } -void CGHeroInstance::updateSkill(int which, int val) +void CGHeroInstance::updateSkill(SecondarySkill which, int val) { if(which == LEADERSHIP || which == LUCK) { //luck-> VLC->generaltexth->arraytxt[73+luckSkill]; VLC->generaltexth->arraytxt[104+moraleSkill] diff --git a/lib/CObjectHandler.h b/lib/CObjectHandler.h index f723bf7a6..079962d99 100644 --- a/lib/CObjectHandler.h +++ b/lib/CObjectHandler.h @@ -417,7 +417,7 @@ public: void initHeroDefInfo(); void pushPrimSkill(int which, int val); void Updatespecialty(); - void updateSkill(int which, int val); + void updateSkill(SecondarySkill which, int val); CGHeroInstance(); virtual ~CGHeroInstance(); diff --git a/server/CGameHandler.cpp b/server/CGameHandler.cpp index 97894fe41..e712c1c9c 100644 --- a/server/CGameHandler.cpp +++ b/server/CGameHandler.cpp @@ -1669,7 +1669,7 @@ bool CGameHandler::moveHero( si32 hid, int3 dst, ui8 instant, ui8 asker /*= 255* //OR hero is on land and dest is water and (there is not present only one object - boat) if(((t.terType == ETerrainType::ROCK || (t.blocked && !t.visitable && !h->hasBonusOfType(Bonus::FLYING_MOVEMENT) )) && complain("Cannot move hero, destination tile is blocked!")) - || ((!h->boat && !h->canWalkOnSea() && t.terType == ETerrainType::WATER && (t.visitableObjects.size() < 1 || (t.visitableObjects.back()->ID != 8 && t.visitableObjects.back()->ID != Obj::HERO))) //hero is not on boat/water walking and dst water tile doesn't contain boat/hero (objs visitable from land) -> we test back cause boat may be on top of another object (#276) + || ((!h->boat && !h->canWalkOnSea() && t.terType == ETerrainType::WATER && (t.visitableObjects.size() < 1 || (t.visitableObjects.back()->ID != Obj::BOAT && t.visitableObjects.back()->ID != Obj::HERO))) //hero is not on boat/water walking and dst water tile doesn't contain boat/hero (objs visitable from land) -> we test back cause boat may be on top of another object (#276) && complain("Cannot move hero, destination tile is on water!")) || ((h->boat && t.terType != ETerrainType::WATER && t.blocked) && complain("Cannot disembark hero, tile is blocked!"))