#pragma once #include #include #include #include // Åë°è °£°Ý #include // ¿¬°á ¼­¹ö Á¤º¸ #include class Channel; class User; class FieldInfo; // ¿ùµå¼­¹ö ¿ÜÄ¡±â¿ë ¿¬°á Á¸ Á¤º¸ (references: 'shoutrange.txt') struct SERVER_LINKEDZONE_INFO { DWORD dwMapCode; // ¸ÊÄÚµå BYTE byMKind; // MKind DWORD dwLinkedMapCode[7]; // LField1~7 char szMapName[MAX_MAPNAME_LENGTH + 1]; // ¸ÊÀ̸§ }; typedef STLX_MAP CHANNEL_MAP; typedef CHANNEL_MAP::iterator CHANNEL_MAP_ITER; typedef std::pair CHANNEL_MAP_PAIR; typedef STLX_MAP LINKEDZONE_MAP; typedef LINKEDZONE_MAP::iterator LINKEDZONE_MAP_ITER; typedef std::pair LINKEDZONE_MAP_PAIR; typedef STLX_MAP FIELDINFO_MAP; typedef FIELDINFO_MAP::iterator FIELDINFO_MAP_ITER; typedef std::pair FIELDINFO_MAP_PAIR; //================================================================================================== class ChannelManager : public util::Singleton, public IParser { public: ChannelManager(void); ~ChannelManager(void); VOID Init(); VOID Release(); VOID Update(); Channel* AllocChannel(); VOID FreeChannel( Channel *pChannel ); VOID AddChannel( DWORD dwChannelID ); VOID RemoveChannel( DWORD dwChannelID ); Channel* GetChannel( DWORD dwChannelID ); // VOID SendToAllChannel( BYTE *pMsg, WORD wSize ); VOID SendToVillages( BYTE *pMsg, WORD wSize ); VOID SendToBattleZones( BYTE *pMsg, WORD wSize ); VOID DisplayChannelInfo(); CHANNEL_MAP& GetChannelMap() { return m_mapChannels; } BOOL LoadFieldInfo(); FieldInfo* GetFieldInfo( DWORD dwFieldCode ); inline BOOL FindLinkedZoneInfo( DWORD dwMapCode, SERVER_LINKEDZONE_INFO &LinkedZone ) { LINKEDZONE_MAP_ITER iter = m_mapLinkedZoneInfo.find( dwMapCode ); if( iter == m_mapLinkedZoneInfo.end() ) { return FALSE; } LinkedZone = (*iter).second; return TRUE; } public: virtual BOOL LoadScript( eSCRIPT_CODE ScriptCode, BOOL bReload ); BOOL _LoadLinkedZoneFile( BOOL bReload ); private: CHANNEL_MAP m_mapChannels; util::CMemoryPoolFactory* m_pChannelPool; util::Timer m_StatisticsTimer; // Åë°è¿ë ŸÀÌ¸Ó LINKEDZONE_MAP m_mapLinkedZoneInfo; FIELDINFO_MAP m_mapFieldInfo; };