165 lines
3.3 KiB
C++
165 lines
3.3 KiB
C++
#pragma once
|
|
|
|
#include "InstanceBase.h"
|
|
|
|
struct SNetworkActorData
|
|
{
|
|
std::string m_stName;
|
|
|
|
CAffectFlagContainer m_kAffectFlags;
|
|
|
|
BYTE m_bType;
|
|
DWORD m_dwVID;
|
|
DWORD m_dwStateFlags;
|
|
DWORD m_dwEmpireID;
|
|
DWORD m_dwRace;
|
|
DWORD m_dwMovSpd;
|
|
DWORD m_dwAtkSpd;
|
|
FLOAT m_fRot;
|
|
LONG m_lCurX;
|
|
LONG m_lCurY;
|
|
LONG m_lSrcX;
|
|
LONG m_lSrcY;
|
|
LONG m_lDstX;
|
|
LONG m_lDstY;
|
|
|
|
|
|
DWORD m_dwServerSrcTime;
|
|
DWORD m_dwClientSrcTime;
|
|
DWORD m_dwDuration;
|
|
|
|
DWORD m_dwArmor;
|
|
DWORD m_dwWeapon;
|
|
DWORD m_dwHair;
|
|
|
|
DWORD m_dwOwnerVID;
|
|
|
|
short m_sAlignment;
|
|
BYTE m_byPKMode;
|
|
DWORD m_dwMountVnum;
|
|
|
|
DWORD m_dwGuildID;
|
|
DWORD m_dwLevel;
|
|
|
|
SNetworkActorData();
|
|
|
|
void SetDstPosition(DWORD dwServerTime, LONG lDstX, LONG lDstY, DWORD dwDuration);
|
|
void SetPosition(LONG lPosX, LONG lPosY);
|
|
void UpdatePosition();
|
|
|
|
// NETWORK_ACTOR_DATA_COPY
|
|
SNetworkActorData(const SNetworkActorData& src);
|
|
void operator=(const SNetworkActorData& src);
|
|
void __copy__(const SNetworkActorData& src);
|
|
// END_OF_NETWORK_ACTOR_DATA_COPY
|
|
};
|
|
|
|
struct SNetworkMoveActorData
|
|
{
|
|
DWORD m_dwVID;
|
|
DWORD m_dwTime;
|
|
LONG m_lPosX;
|
|
LONG m_lPosY;
|
|
float m_fRot;
|
|
DWORD m_dwFunc;
|
|
DWORD m_dwArg;
|
|
DWORD m_dwDuration;
|
|
|
|
SNetworkMoveActorData()
|
|
{
|
|
m_dwVID=0;
|
|
m_dwTime=0;
|
|
m_fRot=0.0f;
|
|
m_lPosX=0;
|
|
m_lPosY=0;
|
|
m_dwFunc=0;
|
|
m_dwArg=0;
|
|
m_dwDuration=0;
|
|
}
|
|
};
|
|
|
|
struct SNetworkUpdateActorData
|
|
{
|
|
DWORD m_dwVID;
|
|
DWORD m_dwGuildID;
|
|
DWORD m_dwArmor;
|
|
DWORD m_dwWeapon;
|
|
DWORD m_dwHair;
|
|
DWORD m_dwMovSpd;
|
|
DWORD m_dwAtkSpd;
|
|
short m_sAlignment;
|
|
BYTE m_byPKMode;
|
|
DWORD m_dwMountVnum;
|
|
DWORD m_dwStateFlags; // º»·¡ Create ¶§¸¸ ¾²ÀÌ´Â º¯¼öÀÓ
|
|
CAffectFlagContainer m_kAffectFlags;
|
|
|
|
SNetworkUpdateActorData()
|
|
{
|
|
m_dwGuildID=0;
|
|
m_dwVID=0;
|
|
m_dwArmor=0;
|
|
m_dwWeapon=0;
|
|
m_dwHair=0;
|
|
m_dwMovSpd=0;
|
|
m_dwAtkSpd=0;
|
|
m_sAlignment=0;
|
|
m_byPKMode=0;
|
|
m_dwMountVnum=0;
|
|
m_dwStateFlags=0;
|
|
m_kAffectFlags.Clear();
|
|
}
|
|
};
|
|
|
|
class CPythonCharacterManager;
|
|
|
|
class CNetworkActorManager : public CReferenceObject
|
|
{
|
|
public:
|
|
CNetworkActorManager();
|
|
virtual ~CNetworkActorManager();
|
|
|
|
void Destroy();
|
|
|
|
void SetMainActorVID(DWORD dwVID);
|
|
|
|
void RemoveActor(DWORD dwVID);
|
|
void AppendActor(const SNetworkActorData& c_rkNetActorData);
|
|
void UpdateActor(const SNetworkUpdateActorData& c_rkNetUpdateActorData);
|
|
void MoveActor(const SNetworkMoveActorData& c_rkNetMoveActorData);
|
|
|
|
void SyncActor(DWORD dwVID, LONG lPosX, LONG lPosY);
|
|
void SetActorOwner(DWORD dwOwnerVID, DWORD dwVictimVID);
|
|
|
|
void Update();
|
|
|
|
protected:
|
|
void __OLD_Update();
|
|
|
|
void __UpdateMainActor();
|
|
|
|
bool __IsVisiblePos(LONG lPosX, LONG lPosY);
|
|
bool __IsVisibleActor(const SNetworkActorData& c_rkNetActorData);
|
|
bool __IsMainActorVID(DWORD dwVID);
|
|
|
|
void __RemoveAllGroundItems();
|
|
void __RemoveAllActors();
|
|
void __RemoveDynamicActors();
|
|
void __RemoveCharacterManagerActor(SNetworkActorData& rkNetActorData);
|
|
|
|
SNetworkActorData* __FindActorData(DWORD dwVID);
|
|
|
|
CInstanceBase* __AppendCharacterManagerActor(SNetworkActorData& rkNetActorData);
|
|
CInstanceBase* __FindActor(SNetworkActorData& rkNetActorData);
|
|
CInstanceBase* __FindActor(SNetworkActorData& rkNetActorData, LONG lDstX, LONG lDstY);
|
|
|
|
CPythonCharacterManager& __GetCharacterManager();
|
|
|
|
protected:
|
|
DWORD m_dwMainVID;
|
|
|
|
LONG m_lMainPosX;
|
|
LONG m_lMainPosY;
|
|
|
|
std::map<DWORD, SNetworkActorData> m_kNetActorDict;
|
|
};
|