/* ========================================================================== * ÆÄ ÀÏ : DuelManager.h * ¸ñ Àû : °áÅõ ½Ã½ºÅÛ - °³ÀÎ * ÀÛ ¼º ÀÚ : ¹Ú°æÈñ * ÀÛ ¼º ÀÏ : 2008-04-23 * ÁÖÀÇ»çÇ× : *===========================================================================*/ #pragma once #include "Duel_Common.h" #include "IndexGenerator.h" #include "RangeCheck.h" #include "DuelObject.h" class cDuelObject; class cDuelManager { public: static cDuelManager* mpDuelManager; public: cDuelManager(); ~cDuelManager(); bool Init(); void Release(); void Process( unsigned long elapsedTime, unsigned long accumTime ); /// pool ó¸® cDuelObject* AllocDuelObject() { return mDuelObjectPool.Alloc(); } void FreeDuelObject(cDuelObject* ptr) { mDuelObjectPool.Free(ptr); } cDuelObject* GetDuel( unsigned long duelIdx ) { return (cDuelObject*)mDuelMap.GetAt( duelIdx ); } /// °áÅõ ¿äû °¡´É ¿©ºÎ üũ int ReqDuel( unsigned long attackerIdx, unsigned long targetIdx ); bool IsDuel( cPlayer* pAttacker, cPlayer* pTarget ); /// °áÅõ µ¿ÀÇ void DuelAllReady( bool mIsAccept, cPlayer* pTarget ); /// °áÅõ »ý¼º bool CreateDuel( cPlayer* pAttacker, cPlayer* pTarget ); /// °áÅõ Æ÷±â void DuelGiveUp( unsigned long duelIdx, unsigned long playerIdx ); /// ¸¶Áö¸· µ¥¹ÌÁö ó¸® bool DuelLastAttack( sObject attacker, sObject target, unsigned long damage, bool isCri, unsigned long* appDamage ); /// »èÁ¦ ¹è¿­¿¡ Ãß°¡ void DelDuel( unsigned long duelIdx ); /// °áÅõÀÚ ÁÖº¯¿¡ ÇØ´çÇÏ´Â Ç÷¹À̾îµé¿¡°Ô QuickSendExcept void TwoPlayerQuickSend( cPlayer* pPlayer1, cPlayer* pPlayer2, char* msg, int length ); /// °áÅõÀÚ °áÅõ ºÒ°¡´É(ÆÐ¹è/·Î±×¾Æ¿ô) ó¸® void DuelObjectEnd( unsigned long attackerIdx, unsigned long targetIdx, unsigned long duelIdx, bool isAttackerEnd ); private: typedef tPointerHashMap cPHashMap; typedef tHashSet cHashSet; typedef tArray cAry; /// °áÅõ °´Ã¼¸¦ ´ãÀ» pool typedef tPool cDuelObjectPool; cDuelObjectPool mDuelObjectPool; /// À妽º »ý¼º±â cIndexGenerator mDuelGen; /// °áÅõ °´Ã¼¸¦ ´ãÀ» ¸Ê //typedef tPointerHashMap cDuelMap; cPHashMap mDuelMap; /// °áÅõ °´Ã¼ »èÁ¦ ¹è¿­ cAry mDelDuel; /// sync¸Þ¼¼Áö¸¦ º¸³¾ ´ë»óµé cHashSet mSendSet; cRangeCheck mRangeCheck; }; #define DUELMANAGER cDuelManager::mpDuelManager