/* ==================================================================== * ÆÄ ÀÏ : ObjectManager.h * ¸ñ Àû : °ÔÀÓ °´Ã¼¸¦ °ü¸®ÇÑ´Ù. * ÀÛ ¼º ÀÚ : Á¤¼º´ë * ÀÛ ¼º ÀÏ : 2006.08.29 * * Ãß°¡³»¿ë : * Ãß°¡³¯Â¥ ÀÛ¾÷ÀÚ Ãß°¡³»¿ë * 2006.08.29 Á¤¼º´ë »ý¼º * * ÁÖÀÇ»çÇ× : * =================================================================== */ #pragma once #include "CommonNetworkMsgStruct.h" #include "BaseObject_Common.h" #include "Monster_Common.h" #include "stage_common.h" #include "PVP_Common.h" enum eOBJECTTYPE; class cHero; class cPlayer; //class cDynamicEntity; class cBaseObject; class cMonster; //class cTotem; class cSceneNode; class cManagedStaticSceneNode; class cMapPortalSceneNode; class cNpc; //class cLexer; //class cToken; class cInputSystem; struct sMonsterData; struct sNpcData; class cObjectManager { friend class cInputSystem; public: static cObjectManager* mpObjectManager; public: /// No Server¿ë Client¿¡¼­ »ç¿ë void AddHeroInfo( unsigned long objectIdx, LPTSTR heroname, char race, char gender ); void AddHero(); void AddPlayer( unsigned long objectIdx, char race, char gender, int x, int y ); // public: cObjectManager(); virtual ~cObjectManager(); /// ÃʱâºÎ(½ÃÀ۽à Çѹø) bool Init(); /// Á¾·áºÎ(Á¾·á½Ã Çѹø) void Exit(); /// ÃʱâºÎ(¸ÊÀ̵¿µî °»½Å½Ã) void Open(); /// Á¾·áºÎ(¸ÊÀ̵¿µî °»½Å½Ã) void Close(); /// selectâÀ¸·Î ³Ñ¾î°¡´Â °æ¿ì »ç¿ë void ClearHeroData(); /// 󸮺Πvoid Process( unsigned long deltaTime, unsigned long accumTime ); /// ÀԷ¿¡ ´ëÇÑ Ã³¸® bool ProcessLButtonClick( int mouseX, int mouseY ); bool ProcessLButtonDClick( int mouseX, int mouseY ); bool ProcessMouseOver( int mouseX, int mouseY ); bool ProcessRButtonDown( int mouseX, int mouseY ); bool ProcessRButtonUp( int mouseX, int mouseY ); /// ÁÖij¸¯ÅÍÀÇ À̵¿ void HeroGoto( int mouseX, int mouseY ); /// Hero °ø°Ý ÀÚµ¿.. 070420 wonju bool HeroAutoAttack(unsigned long id); /// hero »ý¼º void AddHeroFromServerMsg( MSGROOT* pMsg ); /// Player »ý¼º void AddPlayerFromServerMsg( MSGROOT* pMsg, bool showEffect = false ); /// player Á¦°Å void RemovePlayer( unsigned long objectIdx ); /// void MovePlayer( unsigned long objectIdx, float x, float y, long moveSpeed ); void ActionMovePlayer( MSGROOT* pMsg ); void AddTotem( unsigned long uIdx, unsigned long totemInfoIdx, NiPoint3 totemPos, float dir ); void RemoveTotem( unsigned long uIdx ); void AddNpc( sNpcData* pNpcInfo ); // void AddNpc( unsigned long objIdx, sNPCRegen* pNpcInfo ); void RemoveNpc( unsigned long objectIdx ); void FadeOutNpcAll(); /// 061012 PKH ¸ó½ºÅÍ Ãß°¡ bool AddMonster( sMonsterData* pMonstInfo, bool isRegen = false ); /// 061012 PKH ¸ó½ºÅÍ °´Ã¼ Á¦°Å void RemoveMonster( unsigned long objectIdx ); /// void AddGathering( unsigned long uIdx, unsigned long gatheringIdx, NiPoint3 genPos, float dir, unsigned char teamType = ePVPDM_TEAMTYPE_MAX ); /// void RemoveGathering( unsigned long idx ); void AddUserPortal( unsigned long uIdx, unsigned long ownerIdx, unsigned long posScriptIdx, NiPoint3 genPos ); void RemoveUserPortal( unsigned long uIdx ); /// 061012 PKH ¸ó½ºÅÍ À̵¿ °ü·Ã void MonsterMoveStop( unsigned long monsterIdx, float posX, float posY ); void MonsterGoto( int idx, NiPoint2* moveArray, unsigned long count, unsigned int moveSpeed, eMOVE_SPEED_TYPE moveSpeedType = eMOVESPEED_RUN, float range = 0, sObject* pTarget = NULL ); cBaseObject* GetObject( sObject* pInfo ); cBaseObject* GetObject( unsigned char type, unsigned long idx ); /// npc ¸Ê °¡Á®¿À±â const tPointerHashMap* GetNpcMap(); /// inline cHero* GetHero() { return mpHero; } /// 061123 PKH Ç÷¹À̾î Á¤º¸ °¡Á®°¨ cPlayer* GetPlayer( unsigned long idx ); cPlayer* GetPlayerByName( LPCTSTR name ); /// 061127 PKH ¸ó½ºÅÍ Á¤º¸¸¦ °¡Á®°¨ cMonster* GetMonster( unsigned long idx ); NiPoint3 GetGatherPos( unsigned long idx ); cSceneNode* GetGatherSceneNode( unsigned long idx ); /// NPC Á¤º¸¸¦ ȹµæ cNpc* GetNpc( unsigned long idx ); /// 070108 PKH player ġƮ //bool PlayerCheat( cLexer* pLexer ); //float GetMapSize() { return mMapSize; } //void SetMapSize( float mapSize ) { mMapSize = mapSize; } /// 070503 PKH Á×Àº ¸ó½ºÅÍ ±â·Ï void AddMonsterDie( unsigned long monsterUniqueIdx ) { mMonsterDieArray.PushBack( monsterUniqueIdx ); } void AddRemoveNpc( unsigned long npcIdx ) { mNpcRemoveArray.PushBack(npcIdx); } /// °´Ã¼¿¡ ´ëÇÑ Pickó¸® unsigned int ObjectPicking( int mouseX, int mouseY, cBaseObject** out ); void ClearPickObject(); /// cManagedStaticSceneNode* ManagedStaticPicking( int mouseX, int mouseY ); cMapPortalSceneNode* MapPotalPicking(); inline cBaseObject* GetOverObject() { return GetObject( &mOverObject); } inline void ResetOverObject() { mOverObject.index = 0; mOverObject.type = eOBJECTTYPE_NONE; } /// 080307 PKH ¿ÀºêÁ§Æ® º¸°£°Å¸®¸¦ Æ÷ÇÔÇÑ °Å¸® float ObjectSizeRange( cBaseObject* object1, cBaseObject* object2, float range ); /// ±æµå ¸¶Å© °»½Å void ChangeGuildMarkRegistDate( unsigned long guildIndex, tm markRegistDate ); /// ÁÖº¯ ¸ó½ºÅÍ ¼±°ø/ºñ¼±°ø À̸§ Ä÷¯ °»½Å void UpdateMonsterNameColor(); void UpdateHelmetState(); // void UpdateTutorialImage( eOBJECTTYPE type ); void ClearTutorialImage(); private: cHero* mpHero; /// Ä¿¼­»óÀÇ °´Ã¼ Á¤º¸.. sObject mPickObject; sObject mOverObject; cBaseObject* mRbuttonObject; struct sOverNode { unsigned int type; unsigned long indexByManager; }; sOverNode mOverNode; //float mMapSize; /// player map // typedef tPointerHashMap cPlayerHashMap; typedef tPointerHashMap cPlayerHashMap; cPlayerHashMap* mpPlayerMap; /// monster map // typedef tPointerHashMap cMonsterHashMap; typedef tPointerHashMap cMonsterHashMap; cMonsterHashMap* mpMonsterMap; /// npc map // typedef tPointerHashMap cNpcHashMap; typedef tPointerHashMap cNpcHashMap; cNpcHashMap* mpNpcMap; typedef tPointerHashMap cTotemHashMap; cTotemHashMap* mpTotemMap; typedef tPointerHashMap cGatheringMap; cGatheringMap* mpGatheringMap; typedef tPointerHashMap cFPortalHashMap; cFPortalHashMap* mpFPortalMap; /// pick½Ã À̺¥Æ® ó¸®¿ë °´Ã¼µé /// 1. °íÁ¤ÀûÀÎ À̵¿ Æ÷Å» /// Â÷Æó¹° // tArray mCollidableArray; tArray mCollidableArray; /// 061212 PKH Á×Àº ¸ó½ºÅ͸¦ ±â·ÏÇØµÎ´Â ¹è¿­ typedef tArray cMonsterDieArray; cMonsterDieArray mMonsterDieArray; /// ÀÓÀÇ Á¦°ÅµÇ´Â npc¿ë typedef tArray cNpcRemoveArray; cNpcRemoveArray mNpcRemoveArray; typedef tArray cPortalRemoveArray; cPortalRemoveArray mPortalRemoveArray; }; inline const tPointerHashMap* cObjectManager::GetNpcMap() { return (tPointerHashMap*)mpNpcMap; } #define OBJECTMANAGER cObjectManager::mpObjectManager #define OBJECTMAN cObjectManager::mpObjectManager #define HERO cObjectManager::mpObjectManager->GetHero()