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

DataBase.h 5.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  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 Database.h
  19. * Defines functions relating to the database.
  20. */
  21. #ifndef __DATABASE_H
  22. #define __DATABASE_H
  23. #include <sql.h>
  24. #include <sqlext.h>
  25. #include <sstream>
  26. #include <vector>
  27. #include "Account.h"
  28. #include "Shared.h"
  29. class cAvatar;
  30. class cDatabase
  31. {
  32. public:
  33. static HENV m_hEnv;
  34. static HDBC m_hDBC;
  35. static HSTMT m_hStmt;
  36. static int wMaxModel;
  37. static char szModelName[1000][5];
  38. static char szModelNumber[1000][3];
  39. static char szDBIP[16];
  40. static char szDBNAME[20];
  41. static char szDBUSER[20];
  42. static char szDBPASSWORD[20];
  43. static int intDBType;
  44. /** @name Database Initialization and Loading
  45. * Functions to initialize or load objects using database information
  46. * @{
  47. */
  48. static void Load ( );
  49. static void Unload ( );
  50. static void GetError ( SQLSMALLINT type, SQLHANDLE *hptr );
  51. static int InitializeSQLEnvironment( );
  52. static int FreeSQLEnvironment ( );
  53. static void cDatabase::InitializeMaxModel( );
  54. static void cDatabase::LoadModelList( );
  55. static void InitializeAvatarGUIDs ( DWORD &dwGUIDCycle_Avatar );
  56. static void InitializeObjectGUIDs ( DWORD &dwGUIDCycle_Object );
  57. static void InitializeAllegIDs ( DWORD &dwIDAllegiance );
  58. static BOOL VerifyAccount ( char* szUserName, char* szPassword, DWORD &dwAccountID, BOOL fCreate );
  59. static BOOL CreateAccount ( char* szUserName, char* szPassword, DWORD &dwAccountID );
  60. static void LoadAvatarList ( DWORD dwAccountID, std::vector< cAvatarList > &AvatarList );
  61. static BOOL CreateAvatar ( DWORD dwAccountID, CreateCharacterMessage &ccm, DWORD &dwNewAvatarGUID );
  62. static void DeleteAvatar ( DWORD dwAvatarGUID );
  63. static void LoadAvatar ( cAvatar* pcAvatar );
  64. static BOOL LoadDungeonList ( char strName, std::vector< cDungeonList > &DungeonList );
  65. static void SetupDB ( int DBType, char* szDBIP, char* szDBNAME, char* szDBUSER, char* szDBPASSWORD );
  66. //@}
  67. //eLeM: Functions to update avatar inventory in the database
  68. static void AddToInventoryDB ( DWORD dwAvatarGUID, cObject* pcObj );
  69. static void RemoveFromInventoryDB ( DWORD dwAvatarGUID, DWORD dwObjectGUID );
  70. //k109: Adding functions to ease adding spells to Avatar
  71. static void AddSpell ( DWORD dwAvatarGUID, int SpellCount, int SpellID );
  72. static void AddSpellToTab (DWORD dwAvatarGUID, int SpellID, int SpellCount, int TabID);
  73. //k109: Functions to add starting items
  74. static void AddGeneralItems (DWORD dwAvatarGUID);
  75. static void AddRaceItemsAluvian (DWORD dwAvatarGUID);
  76. static void AddRaceItemsGharundim (DWORD dwAvatarGUID);
  77. static void AddRaceItemsSho (DWORD dwAvatarGUID);
  78. static void AddCasterItems (DWORD dwAvatarGUID);
  79. static void AddFoci (DWORD dwAvatarGUID, CreateCharacterMessage &ccm);
  80. static void AddProfessionItems (DWORD dwAvatarGUID, CreateCharacterMessage &ccm);
  81. static void SaveCharacterFlags (DWORD dwAvatarGUID, DWORD Flags);
  82. //eLeM: Functions to convert between numerical types
  83. static float Hex2Float (DWORD hexValue);
  84. static DWORD Float2Hex (float floatValue);
  85. static inline char *ReturnClass( DWORD dwClass )
  86. {
  87. switch ( dwClass )
  88. {
  89. case CHARDATA_CLASS_CUSTOM: return "Custom";
  90. case CHARDATA_CLASS_BOW_HUNTER: return "Bow Hunter";
  91. case CHARDATA_CLASS_SWASHBUCKLER: return "Swashbuckler";
  92. case CHARDATA_CLASS_LIFE_CASTER: return "Life Caster";
  93. case CHARDATA_CLASS_WAR_MAGE: return "War Mage";
  94. case CHARDATA_CLASS_WAYFARER: return "Wayfarer";
  95. case CHARDATA_CLASS_SOLDIER: return "Soldier";
  96. default: return NULL;
  97. }
  98. }
  99. static inline char *ReturnGender( DWORD dwGender )
  100. {
  101. switch ( dwGender )
  102. {
  103. case CHARDATA_SEX_FEMALE: return "Female";
  104. case CHARDATA_SEX_MALE: return "Male";
  105. default: return NULL;
  106. }
  107. }
  108. static inline char *ReturnRace( DWORD dwRace )
  109. {
  110. switch ( dwRace )
  111. {
  112. case CHARDATA_RACE_ALUVIAN: return "Aluvian";
  113. case CHARDATA_RACE_GHARU: return "Gharu'ndim";
  114. case CHARDATA_RACE_SHO: return "Sho";
  115. default: return NULL;
  116. }
  117. }
  118. static inline char *ReturnNamePrefix( BYTE bLevel )
  119. {
  120. switch ( bLevel )
  121. {
  122. case eDeveloper: return "+Developer ";
  123. case eAdmin: return "+Envoy ";
  124. case eUeber: return "+Uber ";
  125. case eSentinel: return "+Sentinel ";
  126. case eAdvocate: return "+Advocate ";
  127. case eStaff: return "+";
  128. case eVIP: return "*";
  129. case eNormal: return "";
  130. default: return NULL;
  131. }
  132. }
  133. private:
  134. };
  135. #endif // #ifndef __DATABSE_H