[8077] Resolve mixed store and use 2 different flags values types in single field.

* Create new monster move field in Creature class and use it in all cases when expected use MONSTER_MOVE_* flags.
* Store and use MOVEMENTFLAG_* values in field in MovementInfo structure of Player class.
* Cleanups and fix related code.

NOTE: DB in creature_addon store values similar MONSTER_MOVE_* flags, scritps also expected set only this flags.
This commit is contained in:
VladimirMangos 2009-06-25 11:03:51 +04:00
parent 00fc1d7593
commit 21a6a26386
24 changed files with 215 additions and 201 deletions

View file

@ -64,7 +64,6 @@ ConfusedMovementGenerator<T>::Initialize(T &unit)
}
unit.StopMoving();
unit.RemoveUnitMovementFlag(MONSTER_MOVE_WALK);
unit.addUnitState(UNIT_STAT_CONFUSED);
}
@ -72,6 +71,8 @@ template<>
void
ConfusedMovementGenerator<Creature>::_InitSpecific(Creature &creature, bool &is_water_ok, bool &is_land_ok)
{
creature.RemoveMonsterMoveFlag(MONSTER_MOVE_WALK);
is_water_ok = creature.canSwim();
is_land_ok = creature.canWalk();
}
@ -138,17 +139,21 @@ ConfusedMovementGenerator<T>::Update(T &unit, const uint32 &diff)
return true;
}
template<class T>
void
ConfusedMovementGenerator<T>::Finalize(T &unit)
template<>
void ConfusedMovementGenerator<Player>::Finalize(Player &unit)
{
unit.clearUnitState(UNIT_STAT_CONFUSED);
}
template<>
void ConfusedMovementGenerator<Creature>::Finalize(Creature &unit)
{
unit.clearUnitState(UNIT_STAT_CONFUSED);
unit.AddMonsterMoveFlag(MONSTER_MOVE_WALK);
}
template void ConfusedMovementGenerator<Player>::Initialize(Player &player);
template void ConfusedMovementGenerator<Creature>::Initialize(Creature &creature);
template void ConfusedMovementGenerator<Player>::Finalize(Player &player);
template void ConfusedMovementGenerator<Creature>::Finalize(Creature &creature);
template void ConfusedMovementGenerator<Player>::Reset(Player &player);
template void ConfusedMovementGenerator<Creature>::Reset(Creature &creature);
template bool ConfusedMovementGenerator<Player>::Update(Player &player, const uint32 &diff);