kroleinfomation.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:2k
源码类别:

模拟服务器

开发平台:

C/C++

  1. // KRoleInfomation.h: interface for the KRoleInfomation class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_KROLEINFOMATION_H__AECE97BE_EEC0_48CE_AFA1_C55FCFE87C3E__INCLUDED_)
  5. #define AFX_KROLEINFOMATION_H__AECE97BE_EEC0_48CE_AFA1_C55FCFE87C3E__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. #define MAX_ROLEINFORMATION_SIZE 50000
  10. #define MAXSIZE_ROLENAME 100
  11. #include "windows.h"
  12. #pragma warning(disable:4786)
  13. #include "s3dbinterface.h"
  14. #include "KroleDBHeader.h"
  15. #include "CriticalSection.h"
  16. #include "..MultiServerCommontstring.h"
  17. #include <list>
  18. #include <map>
  19. using namespace std;
  20. struct TGetRoleInfoFromDB
  21. {
  22. unsigned long nNetId;
  23. char szRoleName[MAXSIZE_ROLENAME];
  24. unsigned long ulIdentity;
  25. unsigned char nSaveCmd;
  26. };
  27. class KRoleInfomation  
  28. {
  29. public:
  30. KRoleInfomation();
  31. virtual ~KRoleInfomation();
  32. void Clear(); //清除所有数据
  33. BYTE * GetRoleInfoBuffer(size_t & nRoleInfoSize);
  34. TCmd * CreateRoleInfoTCmdData(size_t &nRoleInfoSize);
  35. BOOL CopyRoleInfoBuffer(BYTE * pBuffer ,size_t & nRoleInfoSize);
  36. BOOL GetBaseRoleInfo(TRoleBaseInfo * pRoleBaseInfo);
  37. BOOL SetRoleInfoBuffer(BYTE * pRoleInfoBuffer, size_t nRoleInfoSize);
  38. BOOL GetRoleName(char * pName, size_t& nLen);
  39. BOOL CheckRoleInfoValid(const char * szRoleName); //验证Buffer数据是否为RoleName的数据
  40. BOOL CheckRoleInfoValid();
  41. BOOL IsValid();
  42. size_t  GetBufferSize();
  43. int m_nSaveCmdCount; //从客户端获得的通知存档的次数
  44. int m_nSaveDBCount; //实际向数据库存档的次数
  45. int m_nLoadCmdCount; //从客户端获得的通知取档的次数
  46. DWORD m_nLastSaveTime;
  47. int m_nUnModifyTime;
  48. BOOL m_bModify; //是否更改了,也就是是否需要向数据库内存档
  49. private:
  50. BYTE m_RoleInfoBuffer[MAX_ROLEINFORMATION_SIZE];
  51. size_t m_nRoleInfoSize; //实际数据的长度
  52. OnlineGameLib::Win32::CCriticalSection m_cs;
  53. };
  54. //按照角色登入的顺序存入的玩家列表,用于自动保存的顺序
  55. extern list<KRoleInfomation*> g_RoleInfoList;
  56. //以角色姓名作为关键名,存放玩家的列表,用于在客户端读取档快速检索
  57. extern map<OnlineGameLib::Win32::_tstring , KRoleInfomation * > g_RoleInfoMap;
  58. //存取档必须互斥!
  59. #endif // !defined(AFX_KROLEINFOMATION_H__AECE97BE_EEC0_48CE_AFA1_C55FCFE87C3E__INCLUDED_)