EvEmu  0.8.4
11 September 2021
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
FleetProxy.cpp
Go to the documentation of this file.
1 
14 #include "eve-server.h"
15 
16 #include "PyServiceCD.h"
17 #include "fleet/FleetProxy.h"
18 
20 
22 : PyService(mgr, "fleetProxy"),
23  m_dispatch(new Dispatcher(this))
24 {
25  _SetCallDispatcher(m_dispatch);
26 
27  PyCallable_REG_CALL(FleetProxy, GetAvailableFleets);
28  PyCallable_REG_CALL(FleetProxy, AddFleetFinderAdvert);
29  PyCallable_REG_CALL(FleetProxy, RemoveFleetFinderAdvert);
30  PyCallable_REG_CALL(FleetProxy, GetMyFleetFinderAdvert);
31  PyCallable_REG_CALL(FleetProxy, UpdateAdvertInfo);
32  PyCallable_REG_CALL(FleetProxy, ApplyToJoinFleet);
33 }
34 
36 {
37  delete m_dispatch;
38 }
39 
40 /*
41 FLEET__ERROR
42 FLEET__WARNING
43 FLEET__MESSAGE
44 FLEET__DEBUG
45 FLEET__INFO
46 FLEET__TRACE
47 FLEET__DUMP
48 FLEET__BIND_DUMP
49 */
50 PyResult FleetProxy::Handle_GetAvailableFleets(PyCallArgs &call) {
51  return sFltSvc.GetAvailableFleets();
52 }
53 
54 PyResult FleetProxy::Handle_ApplyToJoinFleet(PyCallArgs &call) {
55  // ret = sm.ProxySvc('fleetProxy').ApplyToJoinFleet(fleetID)
56  // sLog.White("FleetProxy", "Handle_ApplyToJoinFleet() size=%u", call.tuple->size() );
57  // call.Dump(FLEET__DUMP);
58 
59  Call_SingleIntegerArg arg;
60  if (!arg.Decode(&call.tuple)) {
61  codelog(SERVICE__ERROR, "%s: Failed to decode args.", call.client->GetChar()->name());
62  return new PyBool(false);
63  }
64 
65  // returns boolean
66  return new PyBool(sFltSvc.AddJoinRequest(arg.arg, call.client));
67 }
68 
69  // this is also used to update advert info
70 PyResult FleetProxy::Handle_AddFleetFinderAdvert(PyCallArgs &call) {
71  // sm.ProxySvc('fleetProxy').AddFleetFinderAdvert(info)
72  //sLog.White("FleetProxy", "Handle_AddFleetFinderAdvert() size=%u", call.tuple->size() );
73  //call.Dump(FLEET__DUMP);
74 
77  FleetAdvertCall args;
78  if (!args.Decode(&call.tuple)) {
79  codelog(SERVICE__ERROR, "%s: Failed to decode args.", call.client->GetChar()->name());
80  return nullptr;
81  }
82 
83  int32 fleetID = call.client->GetChar()->fleetID();
84 
85  FleetData fData = FleetData();
86  sFltSvc.GetFleetData(fleetID, fData);
87 
88  FleetAdvert adata = FleetAdvert();
89  adata.fleetID = fleetID;
90  adata.hideInfo = args.hideInfo;
91  adata.inviteScope = args.inviteScope;
92  adata.leader = call.client;
93  adata.fleetName = PyRep::StringContent(args.fleetName);
94  adata.advertTime = GetFileTimeNow();
95  adata.dateCreated = fData.dateCreated;
96  adata.description = PyRep::StringContent(args.description);
97  adata.solarSystemID = call.client->GetSystemID();
98  adata.joinNeedsApproval = args.joinNeedsApproval;
99  adata.local_minSecurity = args.local_minSecurity;
100  adata.local_minStanding = args.local_minStanding;
101  adata.public_minSecurity = args.public_minSecurity;
102  adata.public_minStanding = args.public_minStanding;
103  PyList* localList = args.local_allowedEntities->header()->AsTuple()->GetItem(1)->AsTuple()->GetItem(0)->AsList();
104  adata.local_allowedEntities.clear();
105  for (PyList::const_iterator itr = localList->begin(); itr != localList->end(); ++itr)
106  adata.local_allowedEntities.push_back(PyRep::IntegerValueU32(*itr));
107  PyList* publicList = args.public_allowedEntities->header()->AsTuple()->GetItem(1)->AsTuple()->GetItem(0)->AsList();
108  adata.public_allowedEntities.clear();
109  for (PyList::const_iterator itr = publicList->begin(); itr != publicList->end(); ++itr)
110  adata.public_allowedEntities.push_back(PyRep::IntegerValueU32(*itr));
111  sFltSvc.CreateFleetAdvert(fleetID, adata);
112 
113  return nullptr;
114 }
115 
116 PyResult FleetProxy::Handle_RemoveFleetFinderAdvert(PyCallArgs &call) {
117  // sLog.White("FleetProxy", "Handle_RemoveFleetFinderAdvert() size=%u", call.tuple->size() );
118  //call.Dump(FLEET__DUMP);
119 
120  sFltSvc.RemoveFleetAdvert(call.client->GetChar()->fleetID());
121 
122  return nullptr;
123 }
124 
125 PyResult FleetProxy::Handle_GetMyFleetFinderAdvert(PyCallArgs &call) {
126  // sLog.White("FleetProxy", "Handle_GetMyFleetFinderAdvert() size=%u", call.tuple->size() );
127  // call.Dump(FLEET__DUMP);
128 
129  return sFltSvc.GetFleetAdvert(call.client->GetChar()->fleetID());
130 }
131 
132 PyResult FleetProxy::Handle_UpdateAdvertInfo(PyCallArgs &call) {
133  // sm.ProxySvc('fleetProxy').UpdateAdvertInfo(numMembers)
134  // this call just updates member count in fleet advert. not needed here, as that is dynamic data.
135  //sLog.White("FleetProxy", "Handle_UpdateAdvertInfo() size=%u", call.tuple->size() );
136  //call.Dump(FLEET__DUMP);
137 
138  return nullptr;
139 }
PyTuple * AsTuple()
Definition: PyRep.h:138
Dispatcher *const m_dispatch
static std::string StringContent(PyRep *pRep)
Definition: PyRep.cpp:103
uint32 GetSystemID() const
Definition: Client.h:152
int32 fleetID
Definition: FleetData.h:84
float local_minSecurity
Definition: FleetData.h:88
PyRep * GetItem(size_t index) const
Returns Python object.
Definition: PyRep.h:602
float local_minStanding
Definition: FleetData.h:90
const_iterator begin() const
Definition: PyRep.h:660
storage_type::const_iterator const_iterator
Definition: PyRep.h:644
static uint32 IntegerValueU32(PyRep *pRep)
Definition: PyRep.cpp:134
const char * name()
std::string description
Definition: FleetData.h:94
CharacterRef GetChar() const
Definition: Client.h:164
Client * leader
Definition: FleetData.h:92
uint32 solarSystemID
Definition: FleetData.h:85
signed __int32 int32
Definition: eve-compat.h:49
* args
Python boolean.
Definition: PyRep.h:323
#define sFltSvc
Definition: FleetService.h:147
bool joinNeedsApproval
Definition: FleetData.h:82
#define codelog(type, fmt,...)
Definition: logsys.h:128
PyList * AsList()
Definition: PyRep.h:140
int64 dateCreated
Definition: FleetData.h:105
float public_minSecurity
Definition: FleetData.h:91
std::vector< uint32 > public_allowedEntities
Definition: FleetData.h:95
Client *const client
Definition: PyCallable.h:49
#define PyCallable_REG_CALL(c, m)
Definition: PyServiceCD.h:78
double GetFileTimeNow()
Definition: utils_time.cpp:84
std::string fleetName
Definition: FleetData.h:93
const_iterator end() const
Definition: PyRep.h:661
Dispatcher *const m_dispatch
Definition: FleetProxy.h:26
uint8 inviteScope
Definition: FleetData.h:83
int32 fleetID() const
Definition: Character.h:318
int64 advertTime
Definition: FleetData.h:86
PyCallable_Make_InnerDispatcher(FleetProxy) FleetProxy
Definition: FleetProxy.cpp:19
bool hideInfo
Definition: FleetData.h:81
float public_minStanding
Definition: FleetData.h:89
std::vector< uint32 > local_allowedEntities
Definition: FleetData.h:96
Python list.
Definition: PyRep.h:639
int64 dateCreated
Definition: FleetData.h:87
PyTuple * tuple
Definition: PyCallable.h:50