client/GameLib/ActorInstanceEvent.cpp

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;
}