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

📄 user.h

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

#include <NetworkObject.h>
#include <string>

// 模备 包府 困秦 include
#include <map>
using namespace std;

struct STRUCT_FRIEND_INFO;
struct STRUCT_BLOCK_INFO;

class User;

typedef map< DWORD, STRUCT_FRIEND_INFO* >			FRIEND_INFO_MAP;
typedef FRIEND_INFO_MAP::iterator					FRIEND_INFO_MAP_ITER;
typedef std::pair< DWORD, STRUCT_FRIEND_INFO* >		FRIEND_INFO_MAP_PAIR;

typedef map< DWORD, STRUCT_BLOCK_INFO* >			BLOCK_INFO_MAP;
typedef BLOCK_INFO_MAP::iterator					BLOCK_INFO_MAP_ITER;
typedef std::pair< DWORD, STRUCT_BLOCK_INFO* >		BLOCK_INFO_MAP_PAIR;

typedef map< DWORD, User* >							FRIEND_ONLINE_MAP;
typedef FRIEND_ONLINE_MAP::iterator					FRIEND_ONLINE_MAP_ITER;
typedef std::pair< DWORD, User* >					FRIEND_ONLINE_MAP_PAIR;

enum eUSER_TYPE { INVALID_USER, TEMP_USER, ACTIVE_USER };

class Zone;

class User : public NetworkObject
{
	friend class UserManager;

	enum { WAITING_TICK = 1000 * 100 };

	enum { FRIEND_STAT_LOGIN = 0, FRIEND_STAT_LOGOUT = 1 };

public:
	User();
	virtual ~User();

	virtual VOID			Init();
	virtual VOID			Release();
	virtual VOID			Update();
	virtual VOID			OnRedirect() {}

	VOID					Logout();
	VOID					OnEnterZone( Zone *pZone );
	VOID					OnLeaveZone( Zone *pZone );
	VOID					OnEnterSector( Zone *pZone );
	VOID					OnLeaveSector( Zone *pZone );
	VOID					ProcessLogout();

	inline VOID				SetNetworkIndex( DWORD index ) { m_dwNetworkIndex = index; }
	inline DWORD			GetNetworkIndex() { return m_dwNetworkIndex; }
	inline VOID				SetGUID( DWORD dwGUID ) { m_dwGUID = dwGUID; }
	inline DWORD			GetGUID() { return m_dwGUID; }
	inline VOID				SetCharGuid( DWORD CharGuid ) { m_CharGuid = CharGuid; }
	inline DWORD			GetCharGuid() { return m_CharGuid; }
	inline VOID				SetCharName( std::string charName ) { m_strCharName = charName; }
	inline std::string&		GetCharName() { return m_strCharName; }
	inline VOID				SetUserType( eUSER_TYPE type ) { m_userType = type; }
	inline eUSER_TYPE		GetUserType() { return m_userType; }
	inline VOID				StartTimeCheck() { m_dwTimeoutTick = GetTickCount() + WAITING_TICK; }
	inline BOOL				IsTimeout()
	{
		return FALSE;
//		return GetTickCount() > m_dwTimeoutTick;
	}
	inline VOID				SetAuthIP( char *pszIP ) { strncpy( m_szAuthIP, pszIP, IP_MAX_LEN ); }
	inline char*			GetAuthIP() { return m_szAuthIP; }
	inline VOID				SetAuthID( DWORD dwAuthID ) { m_dwAuthID = dwAuthID; }
	inline DWORD			GetAuthID() { return m_dwAuthID; }
	inline VOID				SetChannelID( DWORD channelID ) { m_dwChannelID = channelID; }
	inline DWORD			GetChannelID() { return m_dwChannelID; }
	inline VOID				SetZoneKey( DWORD dwZoneKey ) { m_dwZoneKey = dwZoneKey; }
	inline DWORD			GetZoneKey() { return m_dwZoneKey; }
	inline VOID				SetStatus( eZONETYPE status ) { m_status = status; }
	inline eZONETYPE		GetStatus() { return m_status; }

	inline VOID				SetWhisper(BOOL bWhisper=TRUE)	{	m_bWhisper = bWhisper;	}	// 庇富 罐阑 巴牢瘤 技飘. 扁夯 蔼篮 TRUE(倾侩)
	inline BOOL				CanWhisper()	{	return m_bWhisper;	}						// 庇富 罐绰 惑怕牢瘤(TRUE), 酒囱瘤(FALSE)
	void					OnLogString(char *pszLog);										// 惑加

	inline VOID				SetFieldCode(DWORD dwFieldCode)	{ m_dwFieldCode = dwFieldCode; }
	inline DWORD			GetFieldCode()	{ return m_dwFieldCode; }
	inline VOID				SetSectorIndex(DWORD dwSectorIndex)	{ m_dwSectorIndex = dwSectorIndex; }
	inline DWORD			GetSectorIndex()	{ return m_dwSectorIndex; }

	// 模备 沥焊 包府
	int						CheckFriendList();
	STRUCT_FRIEND_INFO*		GetFirstFriend();
	STRUCT_FRIEND_INFO*		GetNextFriend();
	BOOL					AddFriendInfo( STRUCT_FRIEND_INFO* pFriend );
	STRUCT_FRIEND_INFO*		FindFriend( DWORD dwCharGuid );
	STRUCT_FRIEND_INFO*		FindFriend( TCHAR* ptszFriendName );
	VOID					RemoveFriend( DWORD dwGuid );
	inline BOOL				GetFriendChatBlock() { return m_bFriendChatBlock; }
	inline VOID				SetFriendChatBlock(BOOL bBlock) { m_bFriendChatBlock = bBlock; }
	VOID					AddOnlineFriend( User *pUser );
	VOID					RemoveOnlineFriend( User *pUser );
	User*					FindOnlineFriend( DWORD CharGuid );
	VOID					AlarmFriendStatChange( int nFlag, User *pUser );

	// 瞒窜 沥焊 包府
	inline BOOL				CheckBlockList()	{ return m_bBlockList; }
	inline VOID				SetBlockList( BOOL bBlock = TRUE ) { m_bBlockList = bBlock; }
	STRUCT_BLOCK_INFO*		GetFirstBlock();
	STRUCT_BLOCK_INFO*		GetNextBlock();
	BOOL					AddBlockInfo( STRUCT_BLOCK_INFO* pBlock );
	STRUCT_BLOCK_INFO*		FindBlock( DWORD dwGuid );
	STRUCT_BLOCK_INFO*		FindBlock( TCHAR* ptszBlockName );
	VOID					RemoveBlock( DWORD dwGuid );
	VOID					RemoveBlock( TCHAR* ptszBlockedName );

	// 辨靛 沥焊 包府
	inline BOOL				CheckGuildList() { return m_bGuildList; }
	inline VOID				SetGuildList( BOOL bGuildList = TRUE ) { m_bGuildList = bGuildList; }
	inline VOID				SetGuildGuid( GUILDGUID GuildGuid ) { m_GuildGuid = GuildGuid; }
	inline GUILDGUID		GetGuildGuid() { return m_GuildGuid; }

protected:
	virtual VOID			OnAccept( DWORD dwNetworkIndex );
	virtual VOID			OnDisconnect();
	virtual VOID			OnRecv( BYTE *pMsg, WORD wSize );

private:
	BOOL					m_bLogoutProcessed;
	eUSER_TYPE				m_userType;
	DWORD					m_dwNetworkIndex;
	DWORD					m_dwGUID;
	DWORD					m_CharGuid;
	std::string				m_strCharName;
	DWORD					m_dwTimeoutTick;
	char					m_szAuthIP[IP_MAX_LEN];
	DWORD					m_dwChannelID;
	DWORD					m_dwZoneKey;
	eZONETYPE				m_status;
	DWORD					m_dwAuthID;

	//庇富 脑/阐 惑怕
	BOOL					m_bWhisper;			// TRUE搁 庇富 脑, FALSE搁 庇富 阐

	DWORD					m_dwFieldCode;		// 泅犁 加秦 乐绰 鞘靛 内靛
	DWORD					m_dwSectorIndex;	// 泅犁 加秦 乐绰 冀磐 牢郸胶

	// 模备 沥焊 包府
	FRIEND_INFO_MAP			m_mapFriend;		// 模备 包府侩 甘
	FRIEND_INFO_MAP_ITER	m_iterNowFriend;	// GetFirst...(), GetNext...() 俊辑 荤侩.
	BOOL					m_bFriendList;		// 模备 府胶飘 罐疽菌唱?(TRUE: 罐疽澜, FALSE: 救 罐疽澜)
	BOOL					m_bFriendChatBlock;	// 模备 盲泼 瞒窜 咯何(0: 倾侩 1: 芭何)

	FRIEND_ONLINE_MAP		m_mapOnlineFriend;	// 柯扼牢 模备 包府侩 甘

	// 瞒窜 沥焊 包府
	BLOCK_INFO_MAP			m_mapBlock;		// 瞒窜 包府侩 甘
	BLOCK_INFO_MAP_ITER		m_iterNowBlock;	// GetFirst...(), GetNext...() 俊辑 荤侩.
	BOOL					m_bBlockList;	// 瞒窜 府胶飘 罐疽菌唱?(TRUE: 罐疽澜, FALSE: 救 罐疽澜)

	// 辨靛 包访
	BOOL					m_bGuildList;	// 辨靛 府胶飘 罐疽菌唱?(TRUE:罐疽澜, FALSE: 救 罐疽澜)
	GUILDGUID				m_GuildGuid;	// 家加 辨靛 guid
};

⌨️ 快捷键说明

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