181 lines
4.6 KiB
C++
181 lines
4.6 KiB
C++
#include "StdAfx.h"
|
|
#include "ActorInstance.h"
|
|
|
|
void CActorInstance::__OnSyncing()
|
|
{
|
|
IEventHandler& rkEventHandler=__GetEventHandlerRef();
|
|
|
|
IEventHandler::SState kState;
|
|
kState.kPPosSelf=NEW_GetCurPixelPositionRef();
|
|
kState.fAdvRotSelf=GetAdvancingRotation();
|
|
rkEventHandler.OnSyncing(kState);
|
|
}
|
|
|
|
void CActorInstance::__OnWaiting()
|
|
{
|
|
assert(!IsPushing());
|
|
|
|
IEventHandler& rkEventHandler=__GetEventHandlerRef();
|
|
|
|
IEventHandler::SState kState;
|
|
kState.kPPosSelf=NEW_GetCurPixelPositionRef();
|
|
kState.fAdvRotSelf=GetAdvancingRotation();
|
|
rkEventHandler.OnWaiting(kState);
|
|
}
|
|
|
|
void CActorInstance::__OnMoving()
|
|
{
|
|
assert(!IsPushing());
|
|
|
|
IEventHandler& rkEventHandler=__GetEventHandlerRef();
|
|
|
|
const TPixelPosition& c_rkPPosCur=NEW_GetCurPixelPositionRef();
|
|
const TPixelPosition& c_rkPPosDst=NEW_GetDstPixelPositionRef();
|
|
|
|
TPixelPosition kPPosDir=c_rkPPosDst-c_rkPPosCur;
|
|
float distance=sqrt(kPPosDir.x*kPPosDir.x+kPPosDir.y*kPPosDir.y);
|
|
|
|
IEventHandler::SState kState;
|
|
|
|
if (distance>1000.0f)
|
|
{
|
|
D3DXVec3Normalize(&kPPosDir, &kPPosDir);
|
|
D3DXVec3Scale(&kPPosDir, &kPPosDir, 1000.0f);
|
|
D3DXVec3Add(&kState.kPPosSelf, &kPPosDir, &c_rkPPosCur);
|
|
}
|
|
else
|
|
{
|
|
kState.kPPosSelf=c_rkPPosDst;
|
|
}
|
|
kState.fAdvRotSelf=GetAdvancingRotation();
|
|
rkEventHandler.OnMoving(kState);
|
|
}
|
|
|
|
|
|
void CActorInstance::__OnMove()
|
|
{
|
|
IEventHandler& rkEventHandler=__GetEventHandlerRef();
|
|
|
|
IEventHandler::SState kState;
|
|
kState.kPPosSelf=NEW_GetCurPixelPositionRef();
|
|
kState.fAdvRotSelf=GetAdvancingRotation();
|
|
rkEventHandler.OnMove(kState);
|
|
}
|
|
|
|
void CActorInstance::__OnStop()
|
|
{
|
|
IEventHandler& rkEventHandler=__GetEventHandlerRef();
|
|
|
|
IEventHandler::SState kState;
|
|
kState.kPPosSelf=NEW_GetCurPixelPositionRef();
|
|
kState.fAdvRotSelf=GetAdvancingRotation();
|
|
rkEventHandler.OnStop(kState);
|
|
}
|
|
|
|
void CActorInstance::__OnWarp()
|
|
{
|
|
IEventHandler& rkEventHandler=__GetEventHandlerRef();
|
|
|
|
IEventHandler::SState kState;
|
|
kState.kPPosSelf=NEW_GetCurPixelPositionRef();
|
|
kState.fAdvRotSelf=GetAdvancingRotation();
|
|
rkEventHandler.OnWarp(kState);
|
|
}
|
|
|
|
void CActorInstance::__OnAttack(WORD wMotionIndex)
|
|
{
|
|
IEventHandler& rkEventHandler=__GetEventHandlerRef();
|
|
|
|
IEventHandler::SState kState;
|
|
kState.kPPosSelf=NEW_GetCurPixelPositionRef();
|
|
kState.fAdvRotSelf=GetTargetRotation();
|
|
rkEventHandler.OnAttack(kState, wMotionIndex);
|
|
}
|
|
|
|
void CActorInstance::__OnUseSkill(UINT uMotSkill, UINT uLoopCount, bool isMovingSkill)
|
|
{
|
|
IEventHandler& rkEventHandler=__GetEventHandlerRef();
|
|
|
|
IEventHandler::SState kState;
|
|
kState.kPPosSelf=NEW_GetCurPixelPositionRef();
|
|
kState.fAdvRotSelf=GetAdvancingRotation();
|
|
|
|
UINT uArg=uLoopCount;
|
|
if (isMovingSkill)
|
|
uArg|=1<<4;
|
|
|
|
rkEventHandler.OnUseSkill(kState, uMotSkill, uArg);
|
|
}
|
|
|
|
void CActorInstance::__OnHit(UINT uSkill, CActorInstance& rkActorVictm, BOOL isSendPacket)
|
|
{
|
|
IEventHandler& rkEventHandler=__GetEventHandlerRef();
|
|
rkEventHandler.OnHit(uSkill, rkActorVictm, isSendPacket);
|
|
}
|
|
|
|
void CActorInstance::__OnClearAffects()
|
|
{
|
|
IEventHandler& rkEventHandler=__GetEventHandlerRef();
|
|
rkEventHandler.OnClearAffects();
|
|
}
|
|
|
|
void CActorInstance::__OnSetAffect(UINT uAffect)
|
|
{
|
|
IEventHandler& rkEventHandler=__GetEventHandlerRef();
|
|
rkEventHandler.OnSetAffect(uAffect);
|
|
}
|
|
|
|
void CActorInstance::__OnResetAffect(UINT uAffect)
|
|
{
|
|
IEventHandler& rkEventHandler=__GetEventHandlerRef();
|
|
rkEventHandler.OnResetAffect(uAffect);
|
|
}
|
|
|
|
|
|
CActorInstance::IEventHandler& CActorInstance::__GetEventHandlerRef()
|
|
{
|
|
assert(m_pkEventHandler!=NULL && "CActorInstance::GetEventHandlerRef");
|
|
return *m_pkEventHandler;
|
|
}
|
|
|
|
CActorInstance::IEventHandler* CActorInstance::__GetEventHandlerPtr()
|
|
{
|
|
return m_pkEventHandler;
|
|
}
|
|
|
|
void CActorInstance::SetEventHandler(IEventHandler* pkEventHandler)
|
|
{
|
|
m_pkEventHandler=pkEventHandler;
|
|
}
|
|
|
|
CActorInstance::IEventHandler* CActorInstance::IEventHandler::GetEmptyPtr()
|
|
{
|
|
static class CEmptyEventHandler : public IEventHandler
|
|
{
|
|
public:
|
|
CEmptyEventHandler() {}
|
|
virtual ~CEmptyEventHandler() {}
|
|
|
|
virtual void OnSyncing(const SState& c_rkState) {}
|
|
virtual void OnWaiting(const SState& c_rkState) {}
|
|
virtual void OnMoving(const SState& c_rkState) {}
|
|
virtual void OnMove(const SState& c_rkState) {}
|
|
virtual void OnStop(const SState& c_rkState) {}
|
|
virtual void OnWarp(const SState& c_rkState) {}
|
|
|
|
virtual void OnClearAffects() {}
|
|
virtual void OnSetAffect(UINT uAffect) {}
|
|
virtual void OnResetAffect(UINT uAffect) {}
|
|
|
|
virtual void OnAttack(const SState& c_rkState, WORD wMotionIndex) {}
|
|
virtual void OnUseSkill(const SState& c_rkState, UINT uMotSkill, UINT uMotLoopCount) {}
|
|
|
|
virtual void OnHit(UINT uMotAttack, CActorInstance& rkActorVictim, BOOL isSendPacket) {}
|
|
|
|
virtual void OnChangeShape() {}
|
|
|
|
} s_kEmptyEventHandler;
|
|
|
|
return &s_kEmptyEventHandler;
|
|
}
|