EvEmu  0.8.4
11 September 2021
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
TCU.cpp
Go to the documentation of this file.
1 
10 /*
11  * POS__ERROR
12  * POS__WARNING
13  * POS__MESSAGE
14  * POS__DUMP
15  * POS__DEBUG
16  * POS__DESTINY
17  * POS__SLIMITEM
18  * POS__TRACE
19  */
20 
21 #include "Client.h"
22 #include "EntityList.h"
23 #include "EVEServerConfig.h"
24 #include "planet/Planet.h"
25 #include "pos/sovStructures/TCU.h"
26 #include "packets/Sovereignty.h"
27 #include "system/Container.h"
28 #include "system/Damage.h"
29 #include "system/SystemBubble.h"
30 #include "system/SystemManager.h"
32 
34  : StructureSE(structure, services, system, fData)
35 {
36 }
37 
39 {
40  _log(SE__TRACE, "TCUSE %s(%u) is being initialized", m_self->name(), m_self->itemID());
42 
43  // check for valid bubble
44  if (m_bubble == nullptr)
45  assert(0);
46  m_bubble->SetTCUSE(this);
47 
48  // set global attribute
50 }
51 
53 {
54  _log(SOV__DEBUG, "Onlining TCU... Creating a new claim.");
55 
57 
58  SovereigntyData sovData = SovereigntyData();
59  sovData.solarSystemID = m_system->GetID();
60  sovData.regionID = m_system->GetRegionID();
62  sovData.corporationID = m_corpID;
63  sovData.allianceID = m_allyID;
64  sovData.claimStructureID = m_data.itemID;
65  sovData.claimTime = GetFileTimeNow();
66  svDataMgr.AddSovClaim(sovData);
67 
68  //Send ProcessSovStatusChanged Notification
69  PyDict *args = new PyDict;
70  _log(SOV__DEBUG, "Sending ProcessSovStatusChanged for %u:%u", sovData.solarSystemID, sovData.allianceID);
71 
72  args->SetItemString("contested", new PyInt(sovData.contested));
73  args->SetItemString("corporationID", new PyInt(sovData.corporationID));
74  args->SetItemString("claimTime", new PyLong(sovData.claimTime));
75  args->SetItemString("claimStructureID", new PyInt(sovData.claimStructureID));
76  args->SetItemString("hubID", new PyInt(sovData.hubID));
77  args->SetItemString("allianceID", new PyInt(sovData.allianceID));
78  args->SetItemString("solarSystemID", new PyInt(sovData.solarSystemID));
79 
80  PyTuple* data = new PyTuple(2);
81  data->SetItem(0, new PyInt(sovData.solarSystemID));
82  data->SetItem(1, new PyObject("util.KeyVal", args));
83 
84  std::vector<Client*> list;
85  sEntityList.GetClients(list);
86  for (auto cur : list)
87  {
88  if (cur != nullptr)
89  {
90  cur->SendNotification("ProcessSovStatusChanged", "clientID", &data);
91  _log(SOV__DEBUG, "ProcessSovStatusChanged sent to %s (%u)", cur->GetName(), cur->GetCharID());
92  }
93  }
94 }
95 
97 {
98  _log(SOV__DEBUG, "Offlining TCU... Removing claim.");
99  svDataMgr.RemoveSovClaim(m_system->GetID());
100 
101  //Send ProcessSovStatusChanged Notification
102  _log(SOV__DEBUG, "Sending ProcessSovStatusChanged (removing sov claim) %u", m_system->GetID());
103 
104  PyTuple* data = new PyTuple(2);
105  data->SetItem(0, new PyInt(m_system->GetID()));
106  data->SetItem(1, PyStatic.NewNone());
107 
108  std::vector<Client*> list;
109  sEntityList.GetClients(list);
110  for (auto cur : list)
111  {
112  if (cur != nullptr)
113  {
114  cur->SendNotification("ProcessSovStatusChanged", "clientID", &data);
115  _log(SOV__DEBUG, "ProcessSovStatusChanged sent to %s (%u)", cur->GetName(), cur->GetCharID());
116  }
117  }
118 
120 }
121 
123 {
125 }
#define _log(type, fmt,...)
Definition: logsys.h:124
Python's dictionary.
Definition: PyRep.h:719
virtual void Process()
Definition: TCU.cpp:122
virtual void Init()
Definition: TCU.cpp:38
SystemBubble * m_bubble
Definition: SystemEntity.h:262
#define sEntityList
Definition: EntityList.h:208
uint32 GetID() const
Definition: SystemManager.h:80
virtual void SetOnline()
Definition: Structure.cpp:869
const char * name()
Python tuple.
Definition: PyRep.h:567
* args
InventoryItemRef m_self
Definition: SystemEntity.h:269
Python object.
Definition: PyRep.h:826
uint32 m_corpID
Definition: SystemEntity.h:281
void SetItem(size_t index, PyRep *object)
Stores Python object.
Definition: PyRep.h:610
Python integer.
Definition: PyRep.h:231
SystemManager * m_system
Definition: SystemEntity.h:263
virtual void SetOnline()
Definition: TCU.cpp:52
void SetAttribute(uint16 attrID, int num, bool notify=true)
#define PyStatic
Definition: PyRep.h:1209
virtual void SetOffline()
Definition: TCU.cpp:96
EVEPOS::StructureData m_data
Definition: Structure.h:212
virtual void Process()
Definition: Structure.cpp:458
virtual void SetOffline()
Definition: Structure.cpp:888
double GetFileTimeNow()
Definition: utils_time.cpp:84
void SetTCUSE(TCUSE *pTCU)
Definition: SystemBubble.h:148
TCUSE(StructureItemRef structure, PyServiceMgr &services, SystemManager *system, const FactionData &fData)
Definition: TCU.cpp:33
uint32 GetRegionID()
Definition: SystemManager.h:81
EvilNumber EvilOne
Definition: EvilNumber.cpp:34
#define svDataMgr
uint32 GetConstellationID()
Definition: SystemManager.h:82
virtual void Init()
Definition: Structure.cpp:275
uint32 itemID() const
Definition: InventoryItem.h:98
void SetItemString(const char *key, PyRep *value)
SetItemString adds or sets a database entry.
Definition: PyRep.h:812
Python long integer.
Definition: PyRep.h:261
Reference-counting-based smart pointer.
Definition: RefPtr.h:133