EvEmu  0.8.4
11 September 2021
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
StaticDataMgr.h
Go to the documentation of this file.
1 
15 #ifndef _EVE_SERVER_STATIC_DATAMANAGER_H__
16 #define _EVE_SERVER_STATIC_DATAMANAGER_H__
17 
18 
19 #include "eve-server.h"
20 #include "POD_containers.h"
21 
22 #include "../eve-common/EVE_RAM.h"
23 #include "../eve-common/EVE_Market.h"
24 
25 #include "map/MapDB.h"
27 
29 : public Singleton< StaticDataMgr >
30 {
31 public:
32  StaticDataMgr();
34 
35  int Initialize();
36 
37  void Clear();
38  void Close();
39  void GetInfo();
40 
48 
49 
50  void GetCategory(uint8 catID, Inv::CatData &into);
51  void GetGroup(uint16 grpID, Inv::GrpData &into);
52  void GetType(uint16 typeID, Inv::TypeData &into);
53  void GetTypes(std::map<uint16, Inv::TypeData> &into);
54  const char* GetTypeName(uint16 typeID); // not sure if this will be needed
55  const char* GetGroupName(uint16 grpID);
56  const char* GetCategoryName(uint8 catID);
57 
58  void GetMineralData(std::map< uint16, Market::matlData >& into);
59  void GetSalvageData(std::map< uint16, Market::matlData >& into);
60  void GetCompoundData(std::map< uint16, Market::matlData >& into);
61  void GetComponentData(std::map< uint16, Market::matlData >& into);
62  void GetPIResourceData(std::map< uint16, Market::matlData >& into);
63  void GetPICommodityData(std::map< uint16, Market::matlData >& into);
64  void GetMiscCommodityData(std::map< uint16, Market::matlData >& into);
65  void GetMoonResouces(std::map<uint16, uint8>& data);
66 
67  bool IsSkillTypeID(uint16 typeID);
68  bool GetSkillName(uint16 skillID, std::string& name);
69 
70  bool GetNPCTypes(uint16 groupID, std::vector<uint16>& typeVec);
71  bool GetNPCGroups(uint32 factionID, std::map<uint8, uint16>& groupMap);
72  bool GetNPCClasses(uint8 sClass, std::vector<RatSpawnClass>& classMap);
73  uint16 GetRandRatType(uint8 sClass, uint16 groupID);
74  uint32 GetWreckID(uint32 typeID); // returns wreck typeID based on given shipTypeID (incomplete, most ships done.)
75  void GetLoot(uint32 groupID, std::vector<LootList>& lootList);
76 
77  bool IsRefinable(uint16 typeID);
78  bool IsRecyclable(uint16 typeID);
79  void GetRamReturns(uint16 typeID, int8 activityID, std::vector< EvERam::RequiredItem >& ramReqs); // bp typeID/data
80  void GetRamMaterials(uint16 typeID, std::vector<EvERam::RamMaterials>& ramMatls); // bp productTypeID/data{typeID/qty}
81  void GetRamRequirements(uint16 typeID, std::vector< EvERam::RamRequirements >& ramReqs); // bp typeID/data
82  // this is for ALL needed materials for RAM activity from BP. these are NOT modified.
83  void GetRamRequiredItems(const uint32 typeID, const int8 activity, std::vector<EvERam::RequiredItem> &into);
84 
87 
88  // this specific cache method is designed to use either a stationID or a systemID to determine system data wanted.
89  const char* GetSystemName(uint32 locationID); // allan 3Aug16
90  // this specific cache method is designed to use either a stationID or a systemID to determine system data wanted.
91  bool GetSystemData(uint32 locationID, SystemData& data); // allan 3Aug16
92 
94  // return regionID for given stationID
95  uint32 GetStationRegion(uint32 stationID);
96  // return constellationID for given stationID
98  // return systemID for given stationID
99  uint32 GetStationSystem(uint32 stationID);
100 
101  uint8 GetStationCount(uint32 systemID);
102  bool GetStationList(uint32 systemID, std::vector< uint32 >& data);
103 
104  bool GetRoidDist(const char* secClass, std::unordered_multimap<float, uint16>& roids);
105  uint8 GetRegionQuarter(uint32 regionID);
106  uint32 GetRegionFaction(uint32 regionID);
108 
109  uint8 GetWHSystemClass(uint32 systemID);
110 
111  void GetDgmTypeAttrVec(uint16 typeID, std::vector< DmgTypeAttribute >& typeAttrVec);
112 
113  PyDict* SetBPMatlType(int8 catID, uint16 typeID, uint16 prodID);
114  PyDict* GetBPMatlData(uint16 typeID); //this is called on EVERY "show info" of a blueprint
115  void GetBpTypeData(uint16 typeID, EvERam::bpTypeData& tData);
116  bool GetBpDataForItem(uint16 typeID, EvERam::bpTypeData& tData);
117 
118  uint32 GetFactionCorp(uint32 factionID);
119  uint32 GetCorpFaction(uint32 corpID);
120  uint32 GetRaceFaction(uint8 raceID);
121  uint8 GetFactionRace(uint32 factionID);
122  std::string GetCorpName(uint32 corpID);
123  std::string GetFactionName(uint32 factionID);
124  const char* GetRaceName(uint8 raceID);
125 
126  void GetSalvage(uint32 factionID, std::vector<uint32> &itemList);
127 
128  const char* GetFlagName(uint16 flag);
129  const char* GetFlagName(EVEItemFlags flag);
130 
131  const char* GetRigSizeName(uint8 size);
132 
133  PyInt* GetAgentSystemID(int32 agentID);
134 
135  // this will return owner's name from any type of ID...system, region, station, player item, etc.
136  std::string GetOwnerName(int32 ownerID);
137 
138  const char* GetProcStateName(int8 state);
139 
140  uint32 GetWreckFaction(uint32 typeID);
141 
142  // methods to verify valid locationID
143  bool IsStation(uint32 stationID=0);
144  bool IsSolarSystem(uint32 systemID=0);
145 
146  // common place for *FULL* DBRowDescriptor Header creation.
147  // this way all users are using the exact same data
149 
150 protected:
151  void Populate();
152 
153 private:
161 
162  std::map<uint16, Inv::CatData> m_catData;
163  std::map<uint16, Inv::GrpData> m_grpData;
164  std::map<uint16, Inv::TypeData> m_typeData;
165 
166  std::map<uint16, PyDict*> m_bpMatlData; // typeID/dict*
167  std::map<uint32, uint8> m_whRegions; // regionID/classID
168  std::map<uint32, uint32> m_regions; // regionID/ownerFactionID
169  std::map<uint32, uint32> m_ratRegions; // regionID/ratFactionID
170  std::map<uint32, SystemData> m_systemData; // systemID/data
171  std::map<uint32, uint32> m_agentSystem; // agentID/systemID
172  std::map<uint32, uint32> m_corpFaction; // corpID/factionID
173  std::map<uint32, uint8> m_stationCount; // systemID/count
174  std::map<uint32, std::vector<uint32>> m_stationList; // systemID/data<stationID>
175  std::map<uint32, uint32> m_stationRegion; // stationID/regionID
176  std::map<uint32, uint32> m_stationConst; // stationID/systemID
177  std::map<uint32, uint32> m_stationSystem; // stationID/systemID
178  std::map<uint32, uint8> m_factionRaces; // factionID/raceID
179  std::map<uint16, EvERam::bpTypeData> m_bpTypeData; // typeID/data
180  std::map<uint16, uint8> m_moonGoo; // typeID/rarity
181  std::map<uint16, std::string> m_skills; // typeID/name
182  std::map<uint32, StaticData> m_staticData; // itemID/data
183 
184  std::multimap<uint16, EvERam::RamMaterials> m_ramMatl; // itemTypeID/data
185  std::multimap<uint16, EvERam::RamRequirements> m_ramReq; // bpTypeID/data
186  std::multimap<std::string, OreTypeChance> m_oreBySecClass; // systemSecClass/data
187 
188  std::multimap<uint16, DmgTypeAttribute> m_typeAttrMap; // typeID/data<attrID, value>
189 
190  /* spawn data */
191  // roid rats
192  typedef std::vector<uint16> rt_typeIDs;
193  typedef std::map<uint16, rt_typeIDs> rt_groups; // groupID/[typeIDs]
194  std::multimap<uint8, rt_groups> m_npcTypes; // spawnClass/[ratGroupID/(ratTypeID)]
195  std::multimap<uint8, RatSpawnClass> m_npcClasses; // spawnType/data
196  std::multimap<uint32, RatFactionGroups> m_npcGroups; // factionID/data
197  // deadspace
198 
199  // incursion
200 
201  /* salvage data */
202  std::multimap<uint32, uint32> m_salvageMap; // factionID/itemID
203 
204  /* ship types to wreck types data */
205  std::map<uint32, uint32> m_WrecksToTypesMap; // typeID/wreckTypeID
206 
207  /* loot data */
208  std::multimap<uint32, LootGroup> m_LootGroupMap; // typeID/data
209  std::multimap<uint32, LootGroupType> m_LootGroupTypeMap; // typeID/data
210 
211  /* for pricing methods */
212  std::map<uint16, std::string> m_salvage; // typeID/name
213  std::map<uint16, std::string> m_minerals; // typeID/name
214  std::map<uint16, std::string> m_compounds; // typeID/name
215  std::map<uint16, std::string> m_resources; // typeID/name
216  std::map<uint16, std::string> m_components; // typeID/name
217  std::map<uint16, std::string> m_commodities; // typeID/name
218  std::map<uint16, std::string> m_miscCommodities; // typeID/name
219  std::map<uint16, EvERam::bpTypeData> m_bpProductData; // productTypeID/data
220 };
221 
222 //Singleton
223 #define sDataMgr \
224  ( StaticDataMgr::get() )
225 
226 
227 #endif // _EVE_SERVER_STATIC_DATAMANAGER_H__
228 
229 /* module (meta) types
230  * metaGroupID metaGroupName description iconID
231  * 1 Tech I
232  * 2 Tech II
233  * 3 Storyline
234  * 4 Faction
235  * 5 Officer
236  * 6 Deadspace
237  * 7 Frigate
238  * 8 Elite Frigate
239  * 9 Commander Frigate
240  * 10 Destroyer
241  * 11 Cruiser
242  * 12 Elite Cruiser
243  * 13 Commander Cruiser
244  * 14 Tech III
245  *
246  */
Base Python wire object.
Definition: PyRep.h:66
void GetMoonResouces(std::map< uint16, uint8 > &data)
void GetType(uint16 typeID, Inv::TypeData &into)
PyObjectEx * m_operands
unsigned __int8 uint8
Definition: eve-compat.h:46
std::map< uint16, PyDict * > m_bpMatlData
std::map< uint16, std::string > m_minerals
PyDict * GetBPMatlData(uint16 typeID)
std::map< uint16, std::string > m_skills
void GetMineralData(std::map< uint16, Market::matlData > &into)
void GetComponentData(std::map< uint16, Market::matlData > &into)
uint32 GetFactionCorp(uint32 factionID)
const char * GetProcStateName(int8 state)
void GetRamReturns(uint16 typeID, int8 activityID, std::vector< EvERam::RequiredItem > &ramReqs)
std::map< uint32, std::vector< uint32 > > m_stationList
PyTuple * m_factionInfo
PyObject * GetBillTypes()
Definition: StaticDataMgr.h:44
uint8 GetRegionQuarter(uint32 regionID)
const char * GetGroupName(uint16 grpID)
std::map< uint16, std::string > m_commodities
PyObject * m_keyMap
uint8 GetWHSystemClass(uint32 systemID)
void GetCategory(uint8 catID, Inv::CatData &into)
Python's dictionary.
Definition: PyRep.h:719
std::multimap< uint8, RatSpawnClass > m_npcClasses
const char * GetSystemName(uint32 locationID)
std::string GetCorpName(uint32 corpID)
PyTuple * GetFactionInfo()
Definition: StaticDataMgr.h:46
std::multimap< uint32, LootGroupType > m_LootGroupTypeMap
PyObject * GetEntryTypes()
Definition: StaticDataMgr.h:45
std::map< uint16, std::string > m_components
EVEItemFlags
Definition: EVE_Flags.h:13
uint32 GetStationSystem(uint32 stationID)
std::map< uint32, uint8 > m_stationCount
DBRowDescriptor * CreateHeader()
std::map< uint16, std::string > m_salvage
void GetDgmTypeAttrVec(uint16 typeID, std::vector< DmgTypeAttribute > &typeAttrVec)
std::map< uint32, uint32 > m_stationRegion
std::map< uint16, rt_typeIDs > rt_groups
std::vector< uint16 > rt_typeIDs
std::map< uint16, Inv::TypeData > m_typeData
std::map< uint16, EvERam::bpTypeData > m_bpTypeData
void GetPICommodityData(std::map< uint16, Market::matlData > &into)
std::map< uint32, uint32 > m_stationSystem
std::map< uint16, uint8 > m_moonGoo
void GetSalvage(uint32 factionID, std::vector< uint32 > &itemList)
bool GetNPCClasses(uint8 sClass, std::vector< RatSpawnClass > &classMap)
Python tuple.
Definition: PyRep.h:567
PyRep * GetStationCount()
const char * GetFlagName(uint16 flag)
signed __int8 int8
Definition: eve-compat.h:45
std::map< uint32, SystemData > m_systemData
uint32 GetWreckID(uint32 typeID)
void GetCompoundData(std::map< uint16, Market::matlData > &into)
void GetTypes(std::map< uint16, Inv::TypeData > &into)
PyObject * GetNPCDivisions()
Definition: StaticDataMgr.h:47
uint32 GetCorpFaction(uint32 corpID)
const char * GetCategoryName(uint8 catID)
void GetMiscCommodityData(std::map< uint16, Market::matlData > &into)
bool GetNPCGroups(uint32 factionID, std::map< uint8, uint16 > &groupMap)
uint32 GetRegionRatFaction(uint32 regionID)
signed __int32 int32
Definition: eve-compat.h:49
PyObject * m_entryTypes
std::multimap< std::string, OreTypeChance > m_oreBySecClass
PyObjectEx * GetAgents()
Definition: StaticDataMgr.h:42
std::map< uint32, uint8 > m_whRegions
typeID Spawn an NPC with the specified type text Search for items matching the specified query() type()() itemID() copy() materialLevel()()() itemID() itemID Fits selected item to active ship() skillID(level)-gives skillID to specified level." ) COMMAND( online
Python extended object.
Definition: PyRep.h:861
bool GetSkillName(uint16 skillID, std::string &name)
std::map< uint16, Inv::CatData > m_catData
bool IsRefinable(uint16 typeID)
std::string GetFactionName(uint32 factionID)
std::multimap< uint16, DmgTypeAttribute > m_typeAttrMap
Python object.
Definition: PyRep.h:826
Python object "blue.DBRowDescriptor".
Definition: PyDatabase.h:41
PyInt * GetAgentSystemID(int32 agentID)
void GetGroup(uint16 grpID, Inv::GrpData &into)
std::string GetOwnerName(int32 ownerID)
std::map< uint16, EvERam::bpTypeData > m_bpProductData
void GetRamRequiredItems(const uint32 typeID, const int8 activity, std::vector< EvERam::RequiredItem > &into)
std::multimap< uint32, RatFactionGroups > m_npcGroups
uint16 GetRandRatType(uint8 sClass, uint16 groupID)
Python integer.
Definition: PyRep.h:231
std::multimap< uint16, EvERam::RamMaterials > m_ramMatl
bool IsSkillTypeID(uint16 typeID)
const char * GetRaceName(uint8 raceID)
void GetRamRequirements(uint16 typeID, std::vector< EvERam::RamRequirements > &ramReqs)
bool GetStationList(uint32 systemID, std::vector< uint32 > &data)
void GetPIResourceData(std::map< uint16, Market::matlData > &into)
std::map< uint32, uint32 > m_WrecksToTypesMap
uint32 GetWreckFaction(uint32 typeID)
uint8 GetFactionRace(uint32 factionID)
PyObject * m_billTypes
std::map< uint32, uint32 > m_stationConst
PyObjectEx * GetOperands()
Definition: StaticDataMgr.h:43
PyDict * SetBPMatlType(int8 catID, uint16 typeID, uint16 prodID)
unsigned __int32 uint32
Definition: eve-compat.h:50
#define PyIncRef(op)
Definition: PyRep.h:56
bool IsSolarSystem(uint32 systemID=0)
void GetLoot(uint32 groupID, std::vector< LootList > &lootList)
std::map< uint16, std::string > m_miscCommodities
std::map< uint16, Inv::GrpData > m_grpData
const char * GetTypeName(uint16 typeID)
bool IsRecyclable(uint16 typeID)
std::map< uint32, uint32 > m_regions
bool GetNPCTypes(uint16 groupID, std::vector< uint16 > &typeVec)
bool GetRoidDist(const char *secClass, std::unordered_multimap< float, uint16 > &roids)
const char * GetRigSizeName(uint8 size)
uint16 GetStaticType(uint32 itemID)
void GetRamMaterials(uint16 typeID, std::vector< EvERam::RamMaterials > &ramMatls)
uint32 GetRaceFaction(uint8 raceID)
uint32 GetStationRegion(uint32 stationID)
std::map< uint32, uint8 > m_factionRaces
std::map< uint16, std::string > m_resources
std::map< uint32, uint32 > m_ratRegions
typeID Spawn an NPC with the specified type text Search for items matching the specified query() type()() itemID() copy() materialLevel()() itemID(attributeID)-Retrieves attribute value." ) COMMAND( setattr
PyObject * m_npcDivisions
bool GetBpDataForItem(uint16 typeID, EvERam::bpTypeData &tData)
Template used for singleton classes.
Definition: Singleton.h:43
PyObject * GetKeyMap()
Definition: StaticDataMgr.h:41
std::map< uint32, StaticData > m_staticData
PyObjectEx * m_agents
uint32 GetStationConstellation(uint32 stationID)
std::multimap< uint32, LootGroup > m_LootGroupMap
void GetBpTypeData(uint16 typeID, EvERam::bpTypeData &tData)
std::map< uint32, uint32 > m_agentSystem
bool GetStaticInfo(uint32 itemID, StaticData &data)
void GetSalvageData(std::map< uint16, Market::matlData > &into)
std::map< uint16, std::string > m_compounds
uint32 GetRegionFaction(uint32 regionID)
unsigned __int16 uint16
Definition: eve-compat.h:48
entityID heal the character with the entityID note giving you detailed ship status information gives a list of all dynamic entities and players and their destinyState in this bubble shows some current destiny variables save all kick all and halt server immediate command list all items in current location s gives list of cargo contents and volumes in all holds list current session values show current ship DNA show current objects in their destiny state
bool IsStation(uint32 stationID=0)
std::multimap< uint8, rt_groups > m_npcTypes
std::multimap< uint16, EvERam::RamRequirements > m_ramReq
std::map< uint32, uint32 > m_corpFaction
std::multimap< uint32, uint32 > m_salvageMap
bool GetSystemData(uint32 locationID, SystemData &data)