#pragma once #include "FlyTarget.h" #include class CFlyingInstance; class CFlyingData; class CMapManager; class CActorInstance; class CFlyingManager : public CSingleton { public: enum EIndexFlyType { INDEX_FLY_TYPE_NORMAL, INDEX_FLY_TYPE_FIRE_CRACKER, INDEX_FLY_TYPE_AUTO_FIRE, }; public: CFlyingManager(); virtual ~CFlyingManager(); void Destroy(); void DeleteAllInstances(); bool RegisterFlyingData(const char* c_szFilename); bool RegisterFlyingData(const char* c_szFilename, DWORD & r_dwRetCRC); CFlyingInstance * CreateFlyingInstanceFlyTarget(const DWORD dwID, const D3DXVECTOR3 & v3StartPosition, const CFlyTarget & cr_FlyTarget, bool canAttack); void Update(); void Render(); void SetMapManagerPtr(CMapManager * pMapManager) { m_pMapManager = pMapManager; } CMapManager * GetMapManagerPtr() { return m_pMapManager; } public: // Controlled by Server bool RegisterIndexedFlyData(DWORD dwIndex, BYTE byType, const char * c_szFileName); void CreateIndexedFly(DWORD dwIndex, CActorInstance * pStartActor, CActorInstance * pEndActor); private: void __DestroyFlyingInstanceList(); void __DestroyFlyingDataMap(); typedef std::map TFlyingDataMap; typedef std::list TFlyingInstanceList; typedef struct SIndexFlyData { BYTE byType; DWORD dwCRC; } TIndexFlyData; typedef std::map TIndexFlyDataMap; TFlyingDataMap m_kMap_pkFlyData; TFlyingInstanceList m_kLst_pkFlyInst; TIndexFlyDataMap m_kMap_dwIndexFlyData; CMapManager * m_pMapManager; DWORD m_IDCounter; };