forked from metin2/client
Solution refactoring and restructuring, removed Boost dependency, removed unused tools
This commit is contained in:
180
src/GameLib/ActorInstanceEvent.cpp
Normal file
180
src/GameLib/ActorInstanceEvent.cpp
Normal file
@ -0,0 +1,180 @@
|
||||
#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;
|
||||
}
|
Reference in New Issue
Block a user