From e585187b248f48b3c6e9247b49fa07c6565d65e5 Mon Sep 17 00:00:00 2001 From: maximius Date: Sat, 17 Oct 2009 15:51:44 -0700 Subject: *Backed out changeset 3be01fb200a5 --HG-- branch : trunk --- src/game/PointMovementGenerator.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/game/PointMovementGenerator.cpp') diff --git a/src/game/PointMovementGenerator.cpp b/src/game/PointMovementGenerator.cpp index 10f8357ef87..23012f7e170 100644 --- a/src/game/PointMovementGenerator.cpp +++ b/src/game/PointMovementGenerator.cpp @@ -17,12 +17,14 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + #include "PointMovementGenerator.h" #include "Errors.h" #include "Creature.h" #include "CreatureAI.h" #include "DestinationHolderImp.h" #include "World.h" + //----- Point Movement Generator template void PointMovementGenerator::Initialize(T &unit) @@ -32,11 +34,13 @@ void PointMovementGenerator::Initialize(T &unit) // knockback effect has UNIT_STAT_JUMPING set,so if here we disable sentmonstermove there will be creature position sync problem between client and server i_destinationHolder.SetDestination(traveller,i_x,i_y,i_z, true /* !unit.hasUnitState(UNIT_STAT_JUMPING)*/); } + template bool PointMovementGenerator::Update(T &unit, const uint32 &diff) { if(!&unit) return false; + if(unit.hasUnitState(UNIT_STAT_ROOT | UNIT_STAT_STUNNED)) { if(unit.hasUnitState(UNIT_STAT_CHARGING)) @@ -44,16 +48,21 @@ bool PointMovementGenerator::Update(T &unit, const uint32 &diff) else return true; } + Traveller traveller(unit); + i_destinationHolder.UpdateTraveller(traveller, diff); + if(i_destinationHolder.HasArrived()) { unit.clearUnitState(UNIT_STAT_MOVE); arrived = true; return false; } + return true; } + template void PointMovementGenerator:: Finalize(T &unit) { @@ -62,10 +71,12 @@ void PointMovementGenerator:: Finalize(T &unit) if(arrived) // without this crash! MovementInform(unit); } + template void PointMovementGenerator::MovementInform(T &unit) { } + template <> void PointMovementGenerator::MovementInform(Creature &unit) { if(id == EVENT_FALL_GROUND) @@ -75,13 +86,16 @@ template <> void PointMovementGenerator::MovementInform(Creature &unit } unit.AI()->MovementInform(POINT_MOTION_TYPE, id); } + template void PointMovementGenerator::Initialize(Player&); template bool PointMovementGenerator::Update(Player &, const uint32 &diff); template void PointMovementGenerator::MovementInform(Player&); template void PointMovementGenerator::Finalize(Player&); + template void PointMovementGenerator::Initialize(Creature&); template bool PointMovementGenerator::Update(Creature&, const uint32 &diff); template void PointMovementGenerator::Finalize(Creature&); + void AssistanceMovementGenerator::Finalize(Unit &unit) { ((Creature*)&unit)->SetNoCallAssistance(false); -- cgit v1.2.3