⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 channel.h

📁 奇迹世界 部分源代码奇迹世界 部分源代码奇迹世界 部分源代码
💻 H
字号:
#pragma once

#include <hash_map>

// 盲泼规 虐 包府侩
#include <ObjKeyGenerator.h>
using namespace util;

class Zone;
class User;
class ViewPortManager;

typedef stdext::hash_map<DWORD, Zone*>		ZONE_MAP;
typedef ZONE_MAP::iterator					ZONE_MAP_ITER;
typedef std::pair<DWORD, Zone*>				ZONE_MAP_PAIR;

typedef stdext::hash_map<DWORD, User*>		USER_MAP;
typedef USER_MAP::iterator					USER_MAP_ITER;
typedef std::pair<DWORD, User*>				USER_MAP_PAIR;

class Channel
{
public:
	Channel(void);
	~Channel(void);

	VOID					Init();
	VOID					Release();
	VOID					Update();

	Zone*					AddVillage( DWORD dwZoneKey );
//	Zone*					AddBattleZone( DWORD dwZoneKey );
	Zone*					AddLobby( DWORD dwZoneKey );
	Zone*					AddMissionZone( DWORD dwZoneKey );
	Zone*					AddHuntingZone( DWORD dwZoneKey );
	Zone*					AddQuestZone( DWORD dwZoneKey );
	Zone*					AddPVPZone( DWORD dwZoneKey );
	Zone*					AddEventZone( DWORD dwZoneKey );
	Zone*					AddGuildZone( DWORD dwZoneKey );
	Zone*					AddSiegeZone( DWORD dwZoneKey );
	Zone*					AddFriendChat( DWORD dwZoneKey );
	VOID					RemoveVillage( DWORD dwZoneKey );
//	VOID					RemoveBattleZone( DWORD dwZoneKey );
	VOID					RemoveLobby( DWORD dwZoneKey );
	VOID					RemoveMissionZone( DWORD dwZoneKey );
	VOID					RemoveHuntingZone( DWORD dwZoneKey );
	VOID					RemoveQuestZone( DWORD dwZoneKey );
	VOID					RemovePVPZone( DWORD dwZoneKey );
	VOID					RemoveEventZone( DWORD dwZoneKey );
	VOID					RemoveGuildZone( DWORD dwZoneKey );
	VOID					RemoveSiegeZone( DWORD dwZoneKey );
	VOID					RemoveFriendChat( DWORD dwZoneKey );

	Zone*					FindZone( eZONETYPE eZoneType, DWORD dwZoneKey );
	Zone*					FindVillage( DWORD dwZoneKey );
//	Zone*					FindBattleZone( DWORD dwZoneKey );
	Zone*					FindLobby( DWORD dwZoneKey );
	Zone*					FindMissionZone( DWORD dwZoneKey );
	Zone*					FindHuntingZone( DWORD dwZoneKey );
	Zone*					FindQuestZone( DWORD dwZoneKey );
	Zone*					FindPVPZone( DWORD dwZoneKey );
	Zone*					FindEventZone( DWORD dwZoneKey );
	Zone*					FindGuildZone( DWORD dwZoneKey );
	Zone*					FindSiegeZone( DWORD dwZoneKey );
	Zone*					FindFriendChat( DWORD dwZoneKey );

	VOID					AddUser( User *pUser, eZONETYPE userStatus, DWORD dwZoneKey );
	VOID					RemoveUser( User *pUser );
	BOOL					AddViewPortUser( User *pUser, DWORD dwField, DWORD dwSector );
	BOOL					MoveViewPortUser( User *pUser, DWORD dwField, DWORD dwSector );
	VOID					RemoveViewPortUser( User *pUser );
	VOID					UserEnterCharScene( User *pUser );
	VOID					UserEnterVillage( User *pUser, DWORD dwNewZoneKey );
//	VOID					UserEnterBattleZone( User *pUser, DWORD dwNewZoneKey );
	VOID					UserEnterLobby( User *pUser, DWORD dwNewZoneKey );
	VOID					UserEnterMissionZone( User *pUser, DWORD dwNewZoneKey );
	VOID					UserEnterHuntingZone( User *pUser, DWORD dwNewZoneKey );
	VOID					UserEnterQuestZone( User *pUser, DWORD dwNewZoneKey );
	VOID					UserEnterPVPZone( User *pUser, DWORD dwNewZoneKey );
	VOID					UserEnterEventZone( User *pUser, DWORD dwNewZoneKey );
	VOID					UserEnterGuildZone( User *pUser, DWORD dwNewZoneKey );
	VOID					UserEnterSiegeZone( User *pUser, DWORD dwNewZoneKey );
	VOID					UserEnterFriendChat( User *pUser, DWORD dwNewZoneKey );

	VOID					SendToAll( BYTE *pMsg, WORD wSize );
	BOOL					SendToOneVillage( DWORD dwFieldCode, BYTE *pMsg, WORD wSize );
	VOID					SendToVillages( BYTE *pMsg, WORD wSize );
//	VOID					SendToBattleZones( BYTE *pMsg, WORD wSize );
	VOID					SendToLobby( BYTE *pMsg, WORD wSize );
	VOID					SendToMissionZones( BYTE *pMsg, WORD wSize );
	VOID					SendToHuntingZones( BYTE *pMsg, WORD wSize );
	VOID					SendToQuestZones( BYTE *pMsg, WORD wSize );
	VOID					SendToPVPZones( BYTE *pMsg, WORD wSize );
	VOID					SendToEventZones( BYTE *pMsg, WORD wSize );
	VOID					SendToGuildZones( BYTE *pMsg, WORD wSize );
	VOID					SendToSiegeZones( BYTE *pMsg, WORD wSize );
	BOOL					SendToViewPort( User *pUser, BYTE *pMsg, WORD wSize );

	inline VOID				SetChannelID( DWORD dwChannelID ) { m_dwChannelID = dwChannelID; }
	inline DWORD			GetChannelID() { return m_dwChannelID; }

	VOID					DisplayInfo();

	VOID					UserLeavePrevZone( User *pUser );

	inline VOID						SetVillageUserNum( DWORD &dwUserNum ) { m_dwVillageUserNum = dwUserNum; }
	inline VOID						SetLobbyUserNum( DWORD &dwUserNum ) { m_dwLobbyUserNum = dwUserNum; }
	inline VOID						SetMissionUserNum( DWORD &dwUserNum ) { m_dwMissionUserNum = dwUserNum; }
	inline VOID						SetHuntingUserNum( DWORD &dwUserNum ) { m_dwHuntingUserNum = dwUserNum; }
	inline VOID						SetQuestUserNum( DWORD &dwUserNum ) { m_dwQuestUserNum = dwUserNum; }
	inline VOID						SetPVPUserNum( DWORD &dwUserNum ) { m_dwPVPUserNum = dwUserNum; }
	inline VOID						SetEventUserNum( DWORD &dwUserNum ) { m_dwEventUserNum = dwUserNum; }
	inline VOID						SetGuildUserNum( DWORD &dwUserNum ) { m_dwGuildUserNum = dwUserNum; }
	inline VOID						SetSiegeUserNum( DWORD &dwUserNum ) { m_dwSiegeUserNum = dwUserNum; }

	inline VOID						IncVillageUserNum() { m_dwVillageUserNum++; }
	inline VOID						IncLobbyUserNum() { m_dwLobbyUserNum++; }
	inline VOID						IncMissionUserNum() { m_dwMissionUserNum++; }
	inline VOID						IncHuntingUserNum() { m_dwHuntingUserNum++; }
	inline VOID						IncQuestUserNum() { m_dwQuestUserNum++; }
	inline VOID						IncPVPUserNum() { m_dwPVPUserNum++; }
	inline VOID						IncEventUserNum() { m_dwEventUserNum++; }
	inline VOID						IncGuildUserNum() { m_dwGuildUserNum++; }
	inline VOID						IncSiegeUserNum() { m_dwSiegeUserNum++; }

	inline VOID						DecVillageUserNum() { if( m_dwVillageUserNum > 0 ) m_dwVillageUserNum--; }
	inline VOID						DecLobbyUserNum() { if( m_dwLobbyUserNum > 0 ) m_dwLobbyUserNum--; }
	inline VOID						DecMissionUserNum() { if( m_dwMissionUserNum > 0 ) m_dwMissionUserNum--; }
	inline VOID						DecHuntingUserNum() { if( m_dwHuntingUserNum > 0 ) m_dwHuntingUserNum--; }
	inline VOID						DecQuestUserNum() { if( m_dwQuestUserNum > 0 ) m_dwQuestUserNum--; }
	inline VOID						DecPVPUserNum() { if( m_dwPVPUserNum > 0 ) m_dwPVPUserNum--; }
	inline VOID						DecEventUserNum() { if( m_dwEventUserNum > 0 ) m_dwEventUserNum--; }
	inline VOID						DecGuildUserNum() { if( m_dwGuildUserNum > 0 ) m_dwGuildUserNum--; }
	inline VOID						DecSiegeUserNum() { if( m_dwSiegeUserNum > 0 ) m_dwSiegeUserNum--; }

	inline DWORD					GetTotalUserNum() { return (DWORD)m_mapUsers.size(); }
	inline DWORD					GetVillageUserNum() { return (DWORD)m_dwVillageUserNum; }
	inline DWORD					GetLobbyUserNum() { return (DWORD)m_dwLobbyUserNum; }
	inline DWORD					GetMissionUserNum() { return (DWORD)m_dwMissionUserNum; }
	inline DWORD					GetHuntingUserNum() { return (DWORD)m_dwHuntingUserNum; }
	inline DWORD					GetQuestUserNum() { return (DWORD)m_dwQuestUserNum; }
	inline DWORD					GetPVPUserNum() { return (DWORD)m_dwPVPUserNum; }
	inline DWORD					GetEventUserNum() { return (DWORD)m_dwEventUserNum; }
	inline DWORD					GetGuildUserNum() { return (DWORD)m_dwGuildUserNum; }
	inline DWORD					GetSiegeUserNum() { return (DWORD)m_dwSiegeUserNum; }

	inline DWORD					GetVillageZoneCount() { return (DWORD)m_mapVillageZones.size(); }
	inline DWORD					GetLobbyZoneCount() { return (DWORD)m_mapLobby.size(); }
	inline DWORD					GetHuntingZoneCount() { return (DWORD)m_mapHuntingZones.size(); }
	inline DWORD					GetMissionZoneCount() { return (DWORD)m_mapMissionZones.size(); }
	inline DWORD					GetQuestZoneCount() { return (DWORD)m_mapQuestZones.size(); }
	inline DWORD					GetPVPZoneCount() { return (DWORD)m_mapPVPZones.size(); }
	inline DWORD					GetEventZoneCount() { return (DWORD)m_mapEventZones.size(); }
	inline DWORD					GetGuildZoneCount() { return (DWORD)m_mapGuildZones.size(); }
	inline DWORD					GetSiegeZoneCount() { return (DWORD)m_mapSiegeZones.size(); }

	inline KEYTYPE					AllocKey()						{ return m_ChatRoomKeyGenerator.GetKey(); }
	inline VOID						FreeKey( KEYTYPE Key )			{ m_ChatRoomKeyGenerator.RestoreKey(Key); }

private:

	Zone					*m_pCharSceneZone;
	ZONE_MAP				m_mapVillageZones;
//	ZONE_MAP				m_mapBattleZones;
	ZONE_MAP				m_mapLobby;
	ZONE_MAP				m_mapMissionZones;
	ZONE_MAP				m_mapHuntingZones;
	ZONE_MAP				m_mapQuestZones;
	ZONE_MAP				m_mapPVPZones;
	ZONE_MAP				m_mapEventZones;
	ZONE_MAP				m_mapGuildZones;
	ZONE_MAP				m_mapSiegeZones;
	util::CObjKeyGenerator	m_ChatRoomKeyGenerator;	// 盲泼规 虐 力炼扁
	ZONE_MAP				m_mapFriendChat;		// 模备 盲泼侩
	USER_MAP				m_mapUsers;
	DWORD					m_dwChannelID;

	DWORD					m_dwVillageUserNum;
	DWORD					m_dwLobbyUserNum;
	DWORD					m_dwMissionUserNum;
	DWORD					m_dwHuntingUserNum;
	DWORD					m_dwQuestUserNum;
	DWORD					m_dwPVPUserNum;
	DWORD					m_dwEventUserNum;
	DWORD					m_dwGuildUserNum;
	DWORD					m_dwSiegeUserNum;

	ViewPortManager			*m_pViewPortManager;
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -