Files
2026-06-01 12:46:52 +02:00

70 lines
2.1 KiB
C++

#pragma once
#include "ArcadiaClient.h"
#include "K3DTypes.h"
//#include <vector>
#include <queue>
struct OtherFxData
{
OtherFxData( AR_HANDLE caster, AR_HANDLE target, int fxid, DWORD catingTime = 0, const K3DVector* Pos = NULL )
{
hCaster = caster;
hTarget = target;
nFxID = fxid;
dwCatingTime = catingTime;
vPos = Pos;
}
AR_HANDLE hCaster;
AR_HANDLE hTarget;
int nFxID;
DWORD dwCatingTime;
const K3DVector* vPos;
};
class SGameOtherEffectMng
{
private:
class SGame* m_pGame;
std::vector< class SGameOtherEffect* > m_vOtherEffectList; ///< 그외 모든 이펙트
int m_nNewFxID;
queue< int > m_RecycleID; ///< 재사용할 파티클 아이디
private:
SGameOtherEffect* GetSelectEffect( int nFxID );
SGameOtherEffect* GetSelectEffect( AR_HANDLE hHandle, int nFxType, bool bCheckTargetHandle );
public:
enum OTHER_FX_ID
{
FX_CREATURE_EVOLUTION = 0,
FX_CAST_SUMMONING_CREATURE,
FX_SUMMONING_CREATURE,
FX_UN_SUMMONING_CREATURE,
FX_MONSTER_TAMING,
FX_BERSERK_MODE,
FX_MAX,
};
public:
int GetOtherEffectRecycleID();
void EndOtherEffect( int nFxID );
void EndOtherEffect( AR_HANDLE hHandle, int nFxType, bool bCheckTargetHandle );
void DelOtherEffect( AR_HANDLE hHandle, int nFxType, bool bCheckTargetHandle );
void SetNextStepOtherEffect( int nFxID );
void SetNextStepOtherEffect( AR_HANDLE hHandle, int nFxType, bool bCheckTargetHandle = false );
void CheckEffect();
void AllDelOtherEffect();
public:
int AddChaosEffect( struct SMSG_GET_CHAOS* pMsg );
public:
int AddCreatureEvolutionEffect( int nFxType, OtherFxData* fxdata );
int AddCastSummoningCreatureEffect( int nFxType, OtherFxData* fxdata );
int AddSummoningCreatureEffect( int nFxType, OtherFxData* fxdata );
int AddUnSummoningCreatureEffect( int nFxType, OtherFxData* fxdata );
int AddMonsterTamingEffect( int nFxType, OtherFxData* fxdata );
public:
void Process( DWORD dwTime );
void Render( unsigned long uRenderBitVector, class KViewportObject** ppViewportList, int nViewportCount );
public:
SGameOtherEffectMng( SGame * pGame );
virtual ~SGameOtherEffectMng();
};