Clone of UAS2 @ https://github.com/drudgedance/uas2

Allegiance.h 6.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. /*
  2. * This file is part of UAS2.
  3. *
  4. * UAS2 is free software; you can redistribute it and/or modify
  5. * it under the terms of the GNU General Public License as published by
  6. * the Free Software Foundation; either version 2 of the License, or
  7. * (at your option) any later version.
  8. *
  9. * UAS2 is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. * GNU General Public License for more details.
  13. * You should have received a copy of the GNU General Public License
  14. * along with UASv1; if not, write to the Free Software
  15. * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  16. */
  17. /**
  18. * @file Allegiance.h
  19. */
  20. #ifndef __ALLEGIANCES_H
  21. #define __ALLEGIANCES_H
  22. #pragma warning(disable:4786) //warning: identifier was truncated to '255' characters in the browser information
  23. #include <map>
  24. //#include <vector>
  25. #include "Avatar.h"
  26. #include "Shared.h"
  27. struct Member
  28. {
  29. // allegiance table
  30. DWORD m_dwGUID;
  31. std::string m_szName;
  32. bool m_online;
  33. BYTE m_bGender;
  34. BYTE m_bRace;
  35. BYTE m_bRank;
  36. WORD m_wLeadership;
  37. WORD m_wLoyalty;
  38. DWORD m_dwPatron;
  39. DWORD m_dwVassals[MAX_VASSALS]; // vassals determined at run-time
  40. DWORD m_dwFollowers; // number of personal followers
  41. float m_avgIGSworn; // average in-game sworn time of vassals
  42. float m_avgRTSworn; // average real-time sworn time of vassals
  43. DWORD m_passupXP; // experience generated
  44. DWORD m_pendingXP; // experience pending since previous login
  45. // avatar table
  46. DWORD m_dwLevel;
  47. ULONG m_timeBirth;
  48. ULONG m_timeRLSwear; // sworn time, real-life
  49. ULONG m_timeIGTotal; // total time in-game (character age)
  50. ULONG m_timeIGSwear; // sworn time, in-game (character age)
  51. };
  52. class cAllegiance
  53. {
  54. friend class cMasterServer;
  55. public:
  56. cAllegiance();
  57. ~cAllegiance();
  58. void LoadAllegiance (DWORD ID, DWORD leaderGUID, char name[40], char MOTD[255]);
  59. void CreateAllegiance ( DWORD leaderGUID );
  60. void Disband ( );
  61. typedef std::map<DWORD, Member> MemberList;
  62. Member* FindMember ( DWORD memberGUID ) { return &this->members.find(memberGUID)->second; }
  63. static cAllegiance* GetAllegianceByID ( DWORD AllegianceID );
  64. DWORD GetID() { return m_ID; }
  65. DWORD GetLeader() { return m_LeaderGUID; }
  66. DWORD GetSize() { return m_Size; }
  67. std::string GetName() { return m_Name.c_str(); }
  68. std::string GetMOTD() { return m_MOTD.c_str(); }
  69. static void SetLeader ( DWORD allegianceID, DWORD leaderGUID );
  70. static bool AddNewMember ( DWORD dwAvatarGUID, DWORD dwPatronGUID, DWORD oldAllegianceID, DWORD newAllegianceID );
  71. static bool AddRemMember ( Member* member, DWORD oldAllegianceID, DWORD newAllegianceID );
  72. static bool RemMember ( DWORD dwRemMemberGUID, DWORD oldAllegianceID, bool isDisbanding=false );
  73. static bool SwitchMonarchAndVassals ( Member* member, DWORD oldAllegianceID, DWORD newAllegianceID );
  74. static bool SwitchNonMonarchVassals ( Member* member, DWORD oldAllegianceID, DWORD newAllegianceID );
  75. void InsertMember ( Member member, DWORD dwPatronGUID );
  76. void EraseMember ( Member* member );
  77. void EraseMember ( DWORD dwMemberGUID );
  78. bool AddDirectVassal ( Member* memPatron, Member* memVassal );
  79. bool AddDirectVassal ( DWORD dwPatronGUID, DWORD dwVassalGUID );
  80. bool RemDirectVassal ( Member* memVassal );
  81. bool RemDirectVassal ( DWORD dwVassalGUID );
  82. void SetMOTD ( std::string motd );
  83. std::string GetMemberName ( Member* member ) { return member->m_szName.c_str(); }
  84. std::string GetMemberName ( DWORD dwMemberGUID ) { Member* member = FindMember(dwMemberGUID); return member->m_szName.c_str(); }
  85. int GetVassalCount ( Member* member );
  86. int GetVassalCount ( DWORD dwMemberGUID );
  87. int GetFollowerCount ( Member* member );
  88. int GetFollowerCount ( DWORD dwMemberGUID );
  89. static void UpdatePlayerAllegID ( Member* member, DWORD newAllegianceID );
  90. static void UpdatePlayerAllegID ( DWORD dwPlayerGUID, DWORD newAllegianceID );
  91. void UpdateFollowers ( Member* member, int numFollowers );
  92. void UpdateFollowers ( DWORD dwMemberGUID, int numFollowers );
  93. void UpdateRank ( Member* member );
  94. void UpdateRank ( DWORD dwMemberGUID );
  95. void VassalPassupXP ( Member* memVassal, UINT64 experience, bool isGrandVassal=false );
  96. void UpdateGeneratedXP ( Member* member, UINT64 experience );
  97. void UpdateEarnedXP ( Member* member, UINT64 experience );
  98. UINT64 CalcVassalGeneratedXP ( Member* memVassal, UINT64 experience, bool isGrandPatron=false );
  99. UINT64 CalcPatronReceivedXP ( Member* memPatron, UINT64 experience, bool isGrandPatron=false );
  100. void UpdateAverageSwornTimeOfVassals ( Member* memPatron );
  101. float CalcVassalFactor ( int numVassals );
  102. cMessage GetAllegianceInfo ( DWORD avatarGUID );
  103. static void LoadMembersFromDB ( cAllegiance* aAllegiance );
  104. static void UpdateAvatarAllegIDDB ( DWORD dwGUID, DWORD allegianceID );
  105. static void UpdateMemberAllegIDDB ( DWORD dwGUID, DWORD allegianceID );
  106. static void UpdateAvatarRecordDB ( DWORD dwAvatarGUID );
  107. static void AddMemberRecordDB ( DWORD allegianceID, DWORD dwAvatarGUID, DWORD dwPatronGUID );
  108. static void DeleteMemberRecordDB ( DWORD allegianceID, DWORD dwMemberGUID );
  109. static void UpdateMemberRecordDB ( Member* member );
  110. static void UpdateMemberXPPassupDB ( DWORD memberGUID, UINT64 passedXP );
  111. static void UpdateMemberXPPendingDB ( DWORD memberGUID, UINT64 pendingXP );
  112. static void UpdateMemberFollowersDB ( DWORD memberGUID, int numFollowers );
  113. static void UpdateMemberRankDB ( DWORD memberGUID, int rank );
  114. static void UpdateMemberPatronDB ( DWORD memberGUID, DWORD patronGUID );
  115. MemberList members;
  116. protected:
  117. DWORD m_ID;
  118. std::string m_Name;
  119. DWORD m_LeaderGUID;
  120. std::string m_MOTD;
  121. int m_Size; // calculated at run-time
  122. ULONG m_CreationTime;
  123. };
  124. #endif // #ifndef __ALLEGIANCES_H