EvEmu  0.8.4
11 September 2021
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
CustomsSE Class Reference

#include "CustomsOffice.h"

Inheritance diagram for CustomsSE:
Collaboration diagram for CustomsSE:

Public Member Functions

virtual ~CustomsSE ()
 
virtual CustomsSEGetCOSE ()
 
virtual bool IsCOSE ()
 
virtual void MissileLaunched (Missile *pMissile)
 
PlanetSEGetPlanetSE ()
 
void Reinforced ()
 
uint8 GetState () const
 
float GetStatus ()
 
bool IsReinforced ()
 
void SetPlanet (uint32 planetID)
 
uint32 GetPlanetID ()
 
void GetSettingsInfo (EVEPOS::CustomsData &data)
 
- Public Member Functions inherited from ObjectSystemEntity
 ObjectSystemEntity (InventoryItemRef self, PyServiceMgr &services, SystemManager *system)
 
virtual ~ObjectSystemEntity ()
 
virtual ObjectSystemEntityGetObjectSE ()
 
virtual bool IsInanimateSE ()
 
virtual bool IsObjectEntity ()
 
virtual void UpdateDamage ()
 
virtual void MakeDamageState (DoDestinyDamageState &into)
 
virtual bool IsInvul ()
 
void SetInvul (bool invul=false)
 
- Public Member Functions inherited from SystemEntity
 SystemEntity (InventoryItemRef self, PyServiceMgr &services, SystemManager *system)
 
virtual ~SystemEntity ()
 
virtual bool ProcessTic ()
 
virtual SystemEntityGetSE ()
 
virtual StaticSystemEntityGetStaticSE ()
 
virtual StationSEGetStationSE ()
 
virtual MoonSEGetMoonSE ()
 
virtual StargateSEGetGateSE ()
 
virtual BeltSEGetBeltSE ()
 
virtual ItemSystemEntityGetItemSE ()
 
virtual ContainerSEGetContSE ()
 
virtual WreckSEGetWreckSE ()
 
virtual AnomalySEGetAnomalySE ()
 
virtual WormholeSEGetWormholeSE ()
 
virtual FieldSEGetFieldSE ()
 
virtual ProbeSEGetProbeSE ()
 
virtual AsteroidSEGetAsteroidSE ()
 
virtual StructureSEGetPOSSE ()
 
virtual StructureSEGetJammerSE ()
 
virtual JumpBridgeSEGetJumpBridgeSE ()
 
virtual StructureSEGetOutpostSE ()
 
virtual TowerSEGetTowerSE ()
 
virtual ArraySEGetArraySE ()
 
virtual WeaponSEGetWeaponSE ()
 
virtual BatterySEGetBatterySE ()
 
virtual DeployableSEGetDeployableSE ()
 
virtual SentryGetSentrySE ()
 
virtual ModuleSEGetModuleSE ()
 
virtual ReactorSEGetReactorSE ()
 
virtual TCUSEGetTCUSE ()
 
virtual SBUSEGetSBUSE ()
 
virtual IHubSEGetIHubSE ()
 
virtual DynamicSystemEntityGetDynamicSE ()
 
virtual NPCGetNPCSE ()
 
virtual DroneSEGetDroneSE ()
 
virtual MissileGetMissileSE ()
 
virtual ShipSEGetShipSE ()
 
virtual ConcordGetConcordSE ()
 
virtual bool isGlobal ()
 
virtual bool IsSystemEntity ()
 
virtual bool IsStaticEntity ()
 
virtual bool IsBeltSE ()
 
virtual bool IsGateSE ()
 
virtual bool IsPlanetSE ()
 
virtual bool IsMoonSE ()
 
virtual bool IsStationSE ()
 
virtual bool IsItemEntity ()
 
virtual bool IsAnomalySE ()
 
virtual bool IsWormholeSE ()
 
virtual bool IsCelestialSE ()
 
virtual bool IsContainerSE ()
 
virtual bool IsFieldSE ()
 
virtual bool IsProbeSE ()
 
virtual bool IsSentrySE ()
 
virtual bool IsPOSSE ()
 
virtual bool IsTCUSE ()
 
virtual bool IsSBUSE ()
 
virtual bool IsIHubSE ()
 
virtual bool IsTowerSE ()
 
virtual bool IsArraySE ()
 
virtual bool IsJammerSE ()
 
virtual bool IsWeaponSE ()
 
virtual bool IsBatterySE ()
 
virtual bool IsModuleSE ()
 
virtual bool IsMoonMiner ()
 
virtual bool IsOutpostSE ()
 
virtual bool IsAsteroidSE ()
 
virtual bool IsDeployableSE ()
 
virtual bool IsJumpBridgeSE ()
 
virtual bool IsReactorSE ()
 
virtual bool IsOperSE ()
 
virtual bool IsDynamicEntity ()
 
virtual bool IsLogin ()
 
virtual bool IsFrozen ()
 
virtual bool IsNPCSE ()
 
virtual bool IsDroneSE ()
 
virtual bool IsWreckSE ()
 
virtual bool IsMissileSE ()
 
virtual bool IsShipSE ()
 
virtual bool IsConcord ()
 
PyServiceMgrGetServices ()
 
SystemBubbleSysBubble ()
 
SystemManagerSystemMgr ()
 
TargetManagerTargetMgr ()
 
DestinyManagerDestinyMgr ()
 
InventoryItemRef GetSelf ()
 
uint16 GetTypeID ()
 
uint32 GetGroupID ()
 
uint8 GetCategoryID ()
 
EVEItemFlags GetFlag ()
 
uint32 GetID ()
 
double GetRadius ()
 
uint32 GetLocationID ()
 
const char * GetName () const
 
const GPointGetPosition () const
 
void SetPosition (const GPoint &pos)
 
double x ()
 
double y ()
 
double z ()
 
int32 GetAllianceID ()
 
int32 GetWarFactionID ()
 
uint32 GetCorporationID ()
 
uint32 GetOwnerID ()
 
uint32 GetFleetID ()
 
void SetFleetID (uint32 set)
 
int8 GetHarmonic ()
 
void SetHarmonic (int8 set)
 
void DropLoot (WreckContainerRef wreckRef, uint32 groupID, uint32 owner)
 
void AwardSecurityStatus (InventoryItemRef iRef, Character *pChar)
 
void SendDamageStateChanged ()
 
bool ApplyDamage (Damage &d)
 
double DistanceTo2 (const SystemEntity *other)
 
PyTupleMakeDamageState ()
 
virtual void Abandon ()
 
const bool IsDead ()
 
const GVectorGetVelocity ()
 
virtual bool LoadExtras ()
 
virtual void Delete ()
 
virtual void SetPilot (Client *pClient)
 
virtual bool HasPilot ()
 
virtual ClientGetPilot ()
 

Private Attributes

PosMgrDB m_db
 
EVEPOS::CustomsData m_cData
 
EVEPOS::OrbitalData m_oData
 
SystemManagerm_system
 
PlanetSEm_planetSE
 

CustomsOffice.h

Class for Customs Offices.

: Allan

Date
: 14 July 2019
 CustomsSE (StructureItemRef sRef, PyServiceMgr &services, SystemManager *system, const FactionData &data)
 
virtual void Process ()
 
virtual void EncodeDestiny (Buffer &into)
 
virtual PyDictMakeSlimItem ()
 
virtual void Killed (Damage &fatal_blow)
 
virtual void InitData ()
 
virtual void Init ()
 
void SetAnchor (Client *pClient, GPoint &pos)
 
void PullAnchor ()
 
void GetEffectState (PyList &into)
 
float GetTaxRate (Client *pClient)
 
PyRepGetSettingsInfo ()
 
void UpdateSettings (int8 selectedHour, int8 standingValue, bool ally, bool standings, Call_TaxRateValuesDict &taxRateValues)
 
void VerifyAddItem (InventoryItemRef iRef)
 
void SendSlimUpdate ()
 
void SendEffectUpdate (int16 effectID, bool active)
 

Additional Inherited Members

- Protected Attributes inherited from SystemEntity
SystemBubblem_bubble
 
SystemManagerm_system
 
TargetManagerm_targMgr
 
DestinyManagerm_destiny
 
PyServiceMgrm_services
 
InventoryItemRef m_self
 
bool m_killed
 
double m_radius
 
int32 m_harmonic
 
int32 m_warID
 
int32 m_allyID
 
uint32 m_corpID
 
uint32 m_fleetID
 
uint32 m_ownerID
 

Detailed Description

Definition at line 23 of file CustomsOffice.h.

Constructor & Destructor Documentation

CustomsSE::CustomsSE ( StructureItemRef  sRef,
PyServiceMgr services,
SystemManager system,
const FactionData data 
)

Definition at line 38 of file CustomsOffice.cpp.

References _log, FactionData::allianceID, FactionData::corporationID, InventoryItem::customInfo(), FactionData::factionID, SystemManager::GetPlanet(), SystemEntity::GetPlanetSE(), SystemEntity::m_allyID, m_cData, SystemEntity::m_corpID, m_oData, SystemEntity::m_ownerID, m_planetSE, SystemEntity::m_self, m_system, SystemEntity::m_warID, FactionData::ownerID, and EVEPOS::OrbitalData::planetID.

39 : ObjectSystemEntity(sRef, services, system),
40 m_system(system)
41 {
42  m_warID = data.factionID;
43  m_allyID = data.allianceID;
44  m_corpID = data.corporationID;
45  m_ownerID = data.ownerID;
46 
47  // zero-init data
50 
51  m_oData.planetID = atoi(m_self->customInfo().c_str());
53 
54  sRef->SetMySE(this);
55 
56  _log(SE__DEBUG, "Created CustomsSE for item %s (%u).", sRef->name(), sRef->itemID());
57 }
#define _log(type, fmt,...)
Definition: logsys.h:124
uint32 m_ownerID
Definition: SystemEntity.h:283
virtual PlanetSE * GetPlanetSE()
Definition: SystemEntity.h:101
SystemManager * m_system
Definition: CustomsOffice.h:83
const std::string & customInfo() const
SystemEntity * GetPlanet(uint32 planetID)
EVEPOS::CustomsData m_cData
Definition: CustomsOffice.h:80
InventoryItemRef m_self
Definition: SystemEntity.h:269
uint32 m_corpID
Definition: SystemEntity.h:281
uint32 corporationID
EVEPOS::OrbitalData m_oData
Definition: CustomsOffice.h:81
ObjectSystemEntity(InventoryItemRef self, PyServiceMgr &services, SystemManager *system)
PlanetSE * m_planetSE
Definition: CustomsOffice.h:84

Here is the call graph for this function:

virtual CustomsSE::~CustomsSE ( )
inlinevirtual

Definition at line 28 of file CustomsOffice.h.

28 { /* do nothing here */ }

Member Function Documentation

void CustomsSE::EncodeDestiny ( Buffer into)
virtual

Reimplemented from ObjectSystemEntity.

Definition at line 350 of file CustomsOffice.cpp.

References _log, Buffer::Append(), Destiny::BallHeader::entityID, Destiny::BallHeader::flags, Destiny::RIGID_Struct::formationID, SystemEntity::GetName(), SystemEntity::GetRadius(), Destiny::Ball::Flag::IsGlobal, EVEPOS::CustomsData::itemID, m_cData, main(), Destiny::BallHeader::mode, Destiny::BallHeader::posX, Destiny::BallHeader::posY, Destiny::BallHeader::posZ, Destiny::BallHeader::radius, Destiny::Ball::Mode::RIGID, SystemEntity::x(), SystemEntity::y(), and SystemEntity::z().

351 {
352  using namespace Destiny;
353  //const uint16 miniballsCount = GetMiniBalls();
354  BallHeader head = BallHeader();
355  head.entityID = m_cData.itemID;
356  head.radius = GetRadius();
357  head.posX = x();
358  head.posY = y();
359  head.posZ = z();
360  head.mode = Ball::Mode::RIGID;
361  head.flags = Ball::Flag::IsGlobal /*| Ball::Flag::IsMassive | HasMiniBalls*/;
362  into.Append( head );
363 
365  main.formationID = 0xFF;
366  into.Append( main );
367 
368  /* TODO query and configure miniballs for entity
369  * NOTE MiniBalls are BROKEN!!! DO NOT USE!
370  * into.Append( miniballsCount );
371  * MiniBall miniball;
372  * for (int16 i; i<miniballsCount; i++) {
373  * miniball.x = -7701.181;
374  * miniball.y = 8060.06;
375  * miniball.z = 27878.900;
376  * miniball.radius = 1639.241;
377  * into.Append( miniball );
378  * miniball.clear();
379  * }
380 [MiniBall]
381 [Radius: 963.8593]
382 [Offset: (0, -2302, 1)]
383 [MiniBall]
384 [Radius: 1166.27]
385 [Offset: (0, 1298, 1)]
386 [MiniBall]
387 [Radius: 876.2357]
388 [Offset: (0, -502, 1)]
389 [MiniBall]
390 [Radius: 796.5781]
391 [Offset: (0, 2598, 1)]
392 */
393 
394  _log(SE__DESTINY, "CustomsSE::EncodeDestiny(): %s - id:%li, mode:%u, flags:0x%X", GetName(), head.entityID, head.mode, head.flags);
395 }
void Append(const T &value)
Appends a single value to buffer.
Definition: Buffer.h:437
#define _log(type, fmt,...)
Definition: logsys.h:124
double GetRadius()
Definition: SystemEntity.h:208
double y()
Definition: SystemEntity.h:214
EVEPOS::CustomsData m_cData
Definition: CustomsOffice.h:80
double z()
Definition: SystemEntity.h:215
const char * GetName() const
Definition: SystemEntity.h:210
double x()
Definition: SystemEntity.h:213
int main(int argc, char *argv[])

Here is the call graph for this function:

virtual CustomsSE* CustomsSE::GetCOSE ( )
inlinevirtual

Reimplemented from SystemEntity.

Definition at line 32 of file CustomsOffice.h.

32 { return this; }
void CustomsSE::GetEffectState ( PyList into)

Definition at line 237 of file CustomsOffice.cpp.

238 {
239 
240 }
uint32 CustomsSE::GetPlanetID ( )
inline

Definition at line 63 of file CustomsOffice.h.

References m_oData, and EVEPOS::OrbitalData::planetID.

63 { return m_oData.planetID; }
EVEPOS::OrbitalData m_oData
Definition: CustomsOffice.h:81
PlanetSE* CustomsSE::GetPlanetSE ( )
inlinevirtual

Reimplemented from SystemEntity.

Definition at line 54 of file CustomsOffice.h.

References m_planetSE.

54 { return m_planetSE; }
PlanetSE * m_planetSE
Definition: CustomsOffice.h:84
PyRep * CustomsSE::GetSettingsInfo ( )

Definition at line 174 of file CustomsOffice.cpp.

References EVEPOS::TaxValues::Alliance, EVEPOS::CustomsData::allowAlliance, EVEPOS::CustomsData::allowStandings, EVEPOS::TaxValues::Corp, m_cData, EVEPOS::CustomsData::selectedHour, PyTuple::SetItem(), PyDict::SetItemString(), EVEPOS::TaxValues::StandingBad, EVEPOS::TaxValues::StandingGood, EVEPOS::TaxValues::StandingHigh, EVEPOS::TaxValues::StandingHorrible, EVEPOS::TaxValues::StandingNeutral, EVEPOS::CustomsData::standingValue, and EVEPOS::CustomsData::taxRateValues.

175 { //self.selectedHour, self.taxRateValues, self.standingValue, self.allowAlliance, self.allowStandings = self.orbitalData
176  /*
177  self.taxRates = [util.KeyVal(key='corporation'),
178  util.KeyVal(key='alliance'),
179  util.KeyVal(key='standingHorrible', standing=const.contactHorribleStanding),
180  util.KeyVal(key='standingBad', standing=const.contactBadStanding),
181  util.KeyVal(key='standingNeutral', standing=const.contactNeutralStanding),
182  util.KeyVal(key='standingGood', standing=const.contactGoodStanding),
183  util.KeyVal(key='standingHigh', standing=const.contactHighStanding)]
184  */
185  PyDict* dict = new PyDict();
193  PyTuple* tuple = new PyTuple(5);
194  tuple->SetItem(0, new PyInt(m_cData.selectedHour));
195  tuple->SetItem(1, new PyObject("util.KeyVal", dict));
196  tuple->SetItem(2, new PyInt(m_cData.standingValue)); //const.contactHorribleStanding
197  tuple->SetItem(3, new PyBool(m_cData.allowAlliance));
198  tuple->SetItem(4, new PyBool(m_cData.allowStandings));
199  return tuple;
200 }
Python's dictionary.
Definition: PyRep.h:719
Python floating point number.
Definition: PyRep.h:292
Python tuple.
Definition: PyRep.h:567
EVEPOS::CustomsData m_cData
Definition: CustomsOffice.h:80
Python boolean.
Definition: PyRep.h:323
Python object.
Definition: PyRep.h:826
void SetItem(size_t index, PyRep *object)
Stores Python object.
Definition: PyRep.h:610
Python integer.
Definition: PyRep.h:231
std::map< uint8, float > taxRateValues
Definition: EVE_POS.h:25
void SetItemString(const char *key, PyRep *value)
SetItemString adds or sets a database entry.
Definition: PyRep.h:812

Here is the call graph for this function:

void CustomsSE::GetSettingsInfo ( EVEPOS::CustomsData data)
inline

Definition at line 67 of file CustomsOffice.h.

References m_cData.

67 { data = m_cData; }
EVEPOS::CustomsData m_cData
Definition: CustomsOffice.h:80
uint8 CustomsSE::GetState ( ) const
inline

Definition at line 57 of file CustomsOffice.h.

References m_cData, and EVEPOS::CustomsData::state.

57 { return m_cData.state; }
EVEPOS::CustomsData m_cData
Definition: CustomsOffice.h:80
float CustomsSE::GetStatus ( )
inline

Definition at line 58 of file CustomsOffice.h.

References m_cData, and EVEPOS::CustomsData::status.

58 { return m_cData.status; }
EVEPOS::CustomsData m_cData
Definition: CustomsOffice.h:80
float CustomsSE::GetTaxRate ( Client pClient)

Definition at line 222 of file CustomsOffice.cpp.

References EVEPOS::TaxValues::Corp, m_cData, and EVEPOS::CustomsData::taxRateValues.

223 {
224  // get current tax rate based on set values by owning corp
225 
227 }
EVEPOS::CustomsData m_cData
Definition: CustomsOffice.h:80
std::map< uint8, float > taxRateValues
Definition: EVE_POS.h:25
void CustomsSE::Init ( )
virtual

Definition at line 59 of file CustomsOffice.cpp.

References _log, AttrIsGlobal, EvilOne, flagStructureActive, PosMgrDB::GetCustomsData(), InitData(), EVEPOS::CustomsData::itemID, InventoryItem::itemID(), m_cData, m_db, m_oData, SystemEntity::m_self, InventoryItem::name(), PosMgrDB::SaveCustomsData(), InventoryItem::SetAttribute(), and InventoryItem::SetFlag().

Referenced by DynamicEntityFactory::BuildEntity(), and PlanetSE::CreateCustomsOffice().

60 {
61  // load data.
63 
64  // pull saved data from db
66  _log(POS__MESSAGE, "CustomsSE::Init() - %s(%u) has no saved data. Initializing default set.", m_self->name(), m_cData.itemID);
67  InitData();
69  }
70 
72 
73  // this should be based on state/status
75 }
bool GetCustomsData(EVEPOS::CustomsData &cData, EVEPOS::OrbitalData &oData)
Definition: PosMgrDB.cpp:289
#define _log(type, fmt,...)
Definition: logsys.h:124
void SaveCustomsData(EVEPOS::CustomsData &cData, EVEPOS::OrbitalData &oData)
Definition: PosMgrDB.cpp:334
bool SetFlag(EVEItemFlags flag, bool notify=false)
const char * name()
virtual void InitData()
EVEPOS::CustomsData m_cData
Definition: CustomsOffice.h:80
InventoryItemRef m_self
Definition: SystemEntity.h:269
void SetAttribute(uint16 attrID, int num, bool notify=true)
EvilNumber EvilOne
Definition: EvilNumber.cpp:34
EVEPOS::OrbitalData m_oData
Definition: CustomsOffice.h:81
uint32 itemID() const
Definition: InventoryItem.h:98
PosMgrDB m_db
Definition: CustomsOffice.h:78

Here is the call graph for this function:

Here is the caller graph for this function:

void CustomsSE::InitData ( )
virtual

Definition at line 77 of file CustomsOffice.cpp.

References _log, EVEPOS::TaxValues::Alliance, EVEPOS::CustomsData::allowAlliance, EVEPOS::CustomsData::allowStandings, EVEPOS::EntityState::Anchored, EVEPOS::TaxValues::Corp, SystemEntity::GetPosition(), EVEPOS::OrbitalData::level, m_cData, m_oData, m_planetSE, SystemEntity::m_self, EVEPOS::StructureState::Online, EVEPOS::CustomsData::ownerID, InventoryItem::ownerID(), InventoryItem::position(), EvE::Trig::Rad2Deg(), EVEPOS::OrbitalData::rotation, EVEPOS::CustomsData::selectedHour, EVEPOS::TaxValues::StandingBad, EVEPOS::TaxValues::StandingGood, EVEPOS::TaxValues::StandingHigh, EVEPOS::TaxValues::StandingHorrible, EVEPOS::TaxValues::StandingNeutral, EVEPOS::StandingValues::StandingNeutral, EVEPOS::OrbitalData::standingOwnerID, EVEPOS::CustomsData::standingValue, EVEPOS::CustomsData::state, EVEPOS::CustomsData::status, EVEPOS::CustomsData::taxRateValues, EVEPOS::CustomsData::timestamp, Ga::GaVec3::x, SystemEntity::x(), Ga::GaVec3::y, SystemEntity::y(), Ga::GaVec3::z, and SystemEntity::z().

Referenced by Init().

78 {
79  // init all data.
80  m_cData.state = EVEPOS::EntityState::Anchored; // allow corp settings menu
81  m_cData.timestamp = 0;
83  m_cData.allowAlliance = false;
84  m_cData.allowStandings = false;
88  m_oData.level = 1; //{1-CUSTOMSOFFICE_SPACEPORT, 2-CUSTOMSOFFICE_SPACEELEVATOR} this is for display model
90 
91  std::map<uint8, float> taxRateValues;
92  taxRateValues[EVEPOS::TaxValues::Corp] = 0.05f;
93  taxRateValues[EVEPOS::TaxValues::Alliance] = 0.07f;
94  taxRateValues[EVEPOS::TaxValues::StandingHorrible] = 0.20f;
95  taxRateValues[EVEPOS::TaxValues::StandingBad] = 0.10f;
96  taxRateValues[EVEPOS::TaxValues::StandingNeutral] = 0.08f;
97  taxRateValues[EVEPOS::TaxValues::StandingGood] = 0.05f;
98  taxRateValues[EVEPOS::TaxValues::StandingHigh] = 0.02f;
99  m_cData.taxRateValues = taxRateValues;
100 /*positionRowHeader = blue.DBRowDescriptor((('itemID', const.DBTYPE_I8),
101  ('x', const.DBTYPE_R5),
102  ('y', const.DBTYPE_R5),
103  ('z', const.DBTYPE_R5),
104  ('yaw', const.DBTYPE_R4),
105  ('pitch', const.DBTYPE_R4),
106  ('roll', const.DBTYPE_R4)))
107  */
108  // yaw, pitch, roll = dunRotation
109  /* yaw is rotation on y axis [-180/180]
110  * +yaw is counterclockwise (+x starting at z 0)
111  * pitch is rotation on x axis [-90/90]
112  * +pitch is downward (-y from 0)
113  * roll is rotation on z axis [-180/180]
114  * +roll is counterclockwise from y 0
115  */
116  GPoint pos(m_self->position());
117  GPoint targ(m_planetSE->GetPosition());
118  float z = targ.z - pos.z; // rise on z axis
119  float x = targ.x - pos.x; // run on x axis
120  float y = targ.y - pos.y; // rise on y axis
121  float yaw = atan2(x, z); // rad from position to target on xz plane
122  float hyp = sqrt(pow(z, 2) + pow(x, 2)); // run on y plane
123  float pitch = atan2(y, hyp); // rad from position to target on hy plane
124 
125  // verify quadrant and set rotation accordingly
126  /* quadrant signs and corrections
127  * I = -x,+z x-90
128  * II = +x,+z 90-x
129  * III = +x,-z x+90
130  * IV = -x,-z x+180
131  */
132 /*
133  if (z < 0) {
134  if (x < 0)
135  yaw += EvE::Trig::Deg2Rad(180);
136  else
137  yaw += EvE::Trig::Deg2Rad(90);
138  } else {
139  if (x < 0)
140  yaw -= EvE::Trig::Deg2Rad(90);
141  else
142  yaw = EvE::Trig::Deg2Rad(90) - yaw;
143  }
144 */
145  if (y > 0)
146  pitch *= -1;
147 
148  /*
149  *
150  * Real: 15.280822
151  *
152  *
153  *
154  *
155  *
156  */
157 
158  // convert from radians to degrees
161  m_oData.rotation.z = 0;
162  //m_oData.rotation = m_self->position().rotationTo(m_planetSE->GetPosition());
163 
164  _log(POS__MESSAGE, "CustomsSE::InitData() - Yaw: rise: %0.5f, run: %0.5f, angle: %0.5f (%0.3f)", z, x, yaw, m_oData.rotation.x);
165  _log(POS__MESSAGE, "CustomsSE::InitData() - Pitch: rise: %0.5f, run: %0.5f, angle: %0.5f (%0.3f)", y, hyp, pitch, m_oData.rotation.y);
166 }
#define _log(type, fmt,...)
Definition: logsys.h:124
GVector rotation
Definition: EVE_POS.h:79
uint32 ownerID() const
Definition: InventoryItem.h:99
const GPoint & position() const
double Rad2Deg(double rad)
Definition: Trig.h:26
double y()
Definition: SystemEntity.h:214
GaFloat x
Definition: GaTypes.h:207
const GPoint & GetPosition() const
Definition: SystemEntity.h:211
EVEPOS::CustomsData m_cData
Definition: CustomsOffice.h:80
Definition: gpoint.h:33
InventoryItemRef m_self
Definition: SystemEntity.h:269
double z()
Definition: SystemEntity.h:215
uint32 standingOwnerID
Definition: EVE_POS.h:77
std::map< uint8, float > taxRateValues
Definition: EVE_POS.h:25
double x()
Definition: SystemEntity.h:213
GaFloat y
Definition: GaTypes.h:207
EVEPOS::OrbitalData m_oData
Definition: CustomsOffice.h:81
GaFloat z
Definition: GaTypes.h:207
PlanetSE * m_planetSE
Definition: CustomsOffice.h:84

Here is the call graph for this function:

Here is the caller graph for this function:

virtual bool CustomsSE::IsCOSE ( )
inlinevirtual

Reimplemented from SystemEntity.

Definition at line 35 of file CustomsOffice.h.

35 { return true; }
bool CustomsSE::IsReinforced ( )
inline

Definition at line 59 of file CustomsOffice.h.

59 { return false; }
void CustomsSE::Killed ( Damage fatal_blow)
virtual
Todo:
check for tower/tcu/sbu/jammer and make killmail
Todo:
send pos mail/notification to corp members

Reimplemented from ObjectSystemEntity.

Definition at line 430 of file CustomsOffice.cpp.

References _log, MapDB::AddFactionKill(), MapDB::AddKill(), DBSystemDynamicEntity::allianceID, AttrArmorHP, AttrHP, AttrShieldCapacity, SystemEntity::AwardSecurityStatus(), EVEDB::invCategories::Blueprint, SystemManager::BuildDynamicEntity(), DBSystemDynamicEntity::categoryID, EVEDB::invCategories::Celestial, DBSystemDynamicEntity::corporationID, SystemEntity::DropLoot(), DBSystemDynamicEntity::factionID, CharKillData::finalAllianceID, CharKillData::finalCharacterID, CharKillData::finalCorporationID, CharKillData::finalDamageDone, CharKillData::finalFactionID, CharKillData::finalSecurityStatus, CharKillData::finalShipTypeID, CharKillData::finalWeaponTypeID, flagNone, RefPtr< X >::get(), EvilNumber::get_int(), SystemEntity::GetAllianceID(), InventoryItem::GetAttribute(), Client::GetChar(), Client::GetCharacterID(), SystemEntity::GetCorporationID(), GetFileTimeNow(), SystemManager::GetID(), SystemEntity::GetID(), Inventory::GetInventoryMap(), SystemEntity::GetLocationID(), InventoryItem::GetMyInventory(), SystemEntity::GetName(), SystemEntity::GetPilot(), DestinyManager::GetPosition(), SystemEntity::GetSelf(), SystemManager::GetSystemSecurityRating(), Damage::GetTotal(), SystemEntity::GetTypeID(), SystemEntity::GetWarFactionID(), InventoryItem::groupID(), DBSystemDynamicEntity::groupID, SystemEntity::HasPilot(), is_log_enabled, SystemEntity::IsDroneSE(), IsEven(), InventoryItem::itemID(), DBSystemDynamicEntity::itemID, InventoryItem::itemName(), DBSystemDynamicEntity::itemName, itoa(), CharKillData::killBlob, CharKillData::killTime, SystemEntity::m_allyID, SystemEntity::m_bubble, SystemEntity::m_corpID, SystemEntity::m_destiny, m_oData, SystemEntity::m_self, m_system, SystemEntity::m_warID, MakeRandomInt(), CharKillData::moonID, InventoryItem::ownerID(), DBSystemDynamicEntity::ownerID, EVEPOS::OrbitalData::planetID, DBSystemDynamicEntity::position, ServiceDB::SaveKillOrLoss(), DestinyManager::SendJettisonPacket(), sEntityList, sItemFactory, sLog, CharKillData::solarSystemID, Damage::srcSE, RefPtr< X >::StaticCast(), InventoryItem::typeID(), DBSystemDynamicEntity::typeID, CharKillData::victimAllianceID, CharKillData::victimCharacterID, CharKillData::victimCorporationID, CharKillData::victimDamageTaken, CharKillData::victimFactionID, CharKillData::victimShipTypeID, Damage::weaponRef, EVEDB::invGroups::Wreck, Ga::GaVec3::x, SystemEntity::x(), Ga::GaVec3::y, SystemEntity::y(), Ga::GaVec3::z, and SystemEntity::z().

430  {
431  if ((m_bubble == nullptr) or (m_destiny == nullptr) or (m_system == nullptr))
432  return; // make error here?
433 
434  uint32 killerID = 0;
435  Client* pClient(nullptr);
436  SystemEntity* killer = fatal_blow.srcSE;
437 
438  if (killer->HasPilot()) {
439  pClient = killer->GetPilot();
440  killerID = pClient->GetCharacterID();
441  } else if (killer->IsDroneSE()) {
442  pClient = sEntityList.FindClientByCharID( killer->GetSelf()->ownerID() );
443  if (pClient == nullptr) {
444  sLog.Error("CustomsSE::Killed()", "killer == IsDrone and pPlayer == nullptr");
445  } else {
446  killerID = pClient->GetCharacterID();
447  }
448  } else {
449  killerID = killer->GetID();
450  }
451 
452  std::stringstream blob;
453  blob << "<items>";
454  std::vector<InventoryItemRef> survivedItems;
455  std::map<uint32, InventoryItemRef> deadShipInventory;
456  deadShipInventory.clear();
457  m_self->GetMyInventory()->GetInventoryMap(deadShipInventory);
458  if (!deadShipInventory.empty()) {
459  uint32 s = 0, d = 0, x = 0;
460  for (auto cur : deadShipInventory) {
461  d = 0;
462  x = cur.second->quantity();
463  s = (cur.second->isSingleton() ? 1 : 0);
464  if (cur.second->categoryID() == EVEDB::invCategories::Blueprint) {
465  // singleton for bpo = 1, bpc = 2.
466  BlueprintRef bpRef = BlueprintRef::StaticCast(cur.second);
467  s = (bpRef->copy() ? 2 : s);
468  }
469  blob << "<i t=" << cur.second->typeID() << " f=" << cur.second->flag() << " s=" << s ;
470  // all items have 50% chance of drop, even from popped ship
471  if (IsEven(MakeRandomInt(0, 100))) {
472  // item survived. check qty for drop
473  if (x > 1) {
474  d = MakeRandomInt(0, x);
475  x -= d;
476  }
477  // move item to vector for insertion into wreck later on
478  survivedItems.push_back(cur.second);
479  }
480  blob << " d=" << d << " x=" << x << "/>";
481  }
482  }
483  blob << "</items>";
484 
485  /* populate kill data for killMail and save to db -allan 01May16 --updated 13July17 */
488  CharKillData data = CharKillData();
489  data.solarSystemID = m_system->GetID();
490  data.victimCharacterID = 0; // charID = 0 means strucuture/item
492  data.victimAllianceID = m_allyID;
493  data.victimFactionID = m_warID;
494  data.victimShipTypeID = GetTypeID();
495 
496  data.finalCharacterID = killerID;
497  data.finalCorporationID = killer->GetCorporationID();
498  data.finalAllianceID = killer->GetAllianceID();
499  data.finalFactionID = killer->GetWarFactionID();
500  data.finalShipTypeID = killer->GetTypeID();
501  data.finalWeaponTypeID = fatal_blow.weaponRef->typeID();
502  data.finalSecurityStatus = 0; /* fix this */
503  data.finalDamageDone = fatal_blow.GetTotal();
504 
505  uint32 totalHP = m_self->GetAttribute(AttrHP).get_int();
506  totalHP += m_self->GetAttribute(AttrArmorHP).get_int();
508  data.victimDamageTaken = totalHP;
509 
510  data.killBlob = blob.str().c_str();
511  data.killTime = GetFileTimeNow();
512  data.moonID = m_oData.planetID; /* denotes moonID for POS/Structure kills */
513 
515 
516  uint32 locationID = GetLocationID();
517  // log faction kill in dynamic data -allan
518  MapDB::AddKill(locationID);
519  MapDB::AddFactionKill(locationID);
520 
521  if (pClient != nullptr) {
522  //award kill bounty.
523  //AwardBounty( pClient );
525  AwardSecurityStatus(m_self, pClient->GetChar().get()); // this awards secStatusChange for npcs in empire space
526  }
527 
528  GPoint wreckPosition = m_destiny->GetPosition();
529  std::string wreck_name = m_self->itemName();
530  wreck_name += " Wreck";
531  ItemData wreckItemData(3962/*CO gantry*/, killerID, locationID, flagNone, wreck_name.c_str(), wreckPosition, itoa(m_allyID));
532  WreckContainerRef wreckItemRef = sItemFactory.SpawnWreckContainer( wreckItemData );
533  if (wreckItemRef.get() == nullptr) {
534  sLog.Error("CustomsSE::Killed()", "Creating Wreck Item Failed for %s of type %u", wreck_name.c_str(), 3962);
535  return;
536  }
537 
538  if (is_log_enabled(PHYSICS__TRACE))
539  _log(PHYSICS__TRACE, "Ship::Killed() - Ship %s(%u) Position: %.2f,%.2f,%.2f. Wreck %s(%u) Position: %.2f,%.2f,%.2f.", \
540  GetName(), GetID(), x(), y(), z(), wreckItemRef->name(), wreckItemRef->itemID(), wreckPosition.x, wreckPosition.y, wreckPosition.z);
541 
543  wreckEntity.allianceID = killer->GetAllianceID();
545  wreckEntity.corporationID = killer->GetCorporationID();
546  wreckEntity.factionID = m_warID;
547  wreckEntity.groupID = EVEDB::invGroups::Wreck;
548  wreckEntity.itemID = wreckItemRef->itemID();
549  wreckEntity.itemName = wreck_name;
550  wreckEntity.ownerID = killerID;
551  wreckEntity.typeID = 3962;
552  wreckEntity.position = wreckPosition;
553 
554  if (!m_system->BuildDynamicEntity(wreckEntity, m_self->itemID())) {
555  sLog.Error("CustomsSE::Killed()", "Spawning Wreck Failed: typeID or typeName not supported: '%u'", 3962);
556  wreckItemRef->Delete();
557  return;
558  }
560 
561  DropLoot(wreckItemRef, m_self->groupID(), killerID);
562 
563  for (auto cur: survivedItems)
564  cur->Move(wreckItemRef->itemID(), flagNone); // populate wreck with items that survived
565 }
uint32 finalDamageDone
uint32 finalCorporationID
uint32 victimDamageTaken
#define _log(type, fmt,...)
Definition: logsys.h:124
DestinyManager * m_destiny
Definition: SystemEntity.h:265
uint32 finalCharacterID
uint32 ownerID() const
Definition: InventoryItem.h:99
void SendJettisonPacket() const
SystemManager * m_system
Definition: CustomsOffice.h:83
double y()
Definition: SystemEntity.h:214
virtual bool HasPilot()
Definition: SystemEntity.h:258
static void AddKill(uint32 sysID)
Definition: MapDB.cpp:250
virtual Client * GetPilot()
Definition: SystemEntity.h:259
SystemBubble * m_bubble
Definition: SystemEntity.h:262
int32 GetCharacterID() const
Definition: Client.h:113
static void AddFactionKill(uint32 sysID)
Definition: MapDB.cpp:256
SystemEntity * srcSE
Definition: Damage.h:84
#define sEntityList
Definition: EntityList.h:208
const float GetSystemSecurityRating()
Definition: SystemManager.h:86
uint32 GetID() const
Definition: SystemManager.h:80
static void SaveKillOrLoss(CharKillData &data)
Definition: ServiceDB.cpp:212
int32 victimFactionID
GaFloat x
Definition: GaTypes.h:207
bool BuildDynamicEntity(const DBSystemDynamicEntity &entity, uint32 launcherID=0)
uint16 groupID() const
#define is_log_enabled(type)
Definition: logsys.h:78
#define sLog
Evaluates to a NewLog instance.
Definition: LogNew.h:250
Definition: gpoint.h:33
InventoryItemRef m_self
Definition: SystemEntity.h:269
bool IsEven(int64 number)
Definition: misc.h:88
InventoryItemRef GetSelf()
Definition: SystemEntity.h:202
uint32 m_corpID
Definition: SystemEntity.h:281
uint32 GetLocationID()
Definition: SystemEntity.h:209
int64 get_int()
Definition: EvilNumber.cpp:166
uint32 solarSystemID
uint32 victimCorporationID
uint16 finalShipTypeID
double z()
Definition: SystemEntity.h:215
int32 GetAllianceID()
Definition: SystemEntity.h:216
uint32 GetID()
Definition: SystemEntity.h:207
uint32 victimCharacterID
int32 finalFactionID
const char * GetName() const
Definition: SystemEntity.h:210
double x()
Definition: SystemEntity.h:213
Definition: Client.h:66
double finalSecurityStatus
static RefPtr StaticCast(const RefPtr< Y > &oth)
Acts as static_cast from one RefPtr to another.
Definition: RefPtr.h:238
unsigned __int32 uint32
Definition: eve-compat.h:50
void GetInventoryMap(std::map< uint32, InventoryItemRef > &invMap)
Definition: Inventory.cpp:453
GaFloat y
Definition: GaTypes.h:207
double GetFileTimeNow()
Definition: utils_time.cpp:84
int64 MakeRandomInt(int64 low, int64 high)
Generates random integer from interval [low; high].
Definition: misc.cpp:109
uint32 GetCorporationID()
Definition: SystemEntity.h:218
const std::string & itemName() const
float GetTotal() const
Definition: Damage.h:48
void DropLoot(WreckContainerRef wreckRef, uint32 groupID, uint32 owner)
EvilNumber GetAttribute(const uint16 attrID) const
uint16 finalWeaponTypeID
uint16 victimShipTypeID
void AwardSecurityStatus(InventoryItemRef iRef, Character *pChar)
const GPoint & GetPosition() const
#define sItemFactory
Definition: ItemFactory.h:165
uint16 GetTypeID()
Definition: SystemEntity.h:203
int32 finalAllianceID
Inventory * GetMyInventory()
Definition: InventoryItem.h:91
InventoryItemRef weaponRef
Definition: Damage.h:86
int32 victimAllianceID
std::string killBlob
virtual bool IsDroneSE()
Definition: SystemEntity.h:187
uint16 typeID() const
EVEPOS::OrbitalData m_oData
Definition: CustomsOffice.h:81
GaFloat z
Definition: GaTypes.h:207
const char * itoa(int64 num)
Convers num to string.
uint32 itemID() const
Definition: InventoryItem.h:98
int32 GetWarFactionID()
Definition: SystemEntity.h:217
Reference-counting-based smart pointer.
Definition: RefPtr.h:133

Here is the call graph for this function:

PyDict * CustomsSE::MakeSlimItem ( )
virtual
Todo:
(Allan) *Timestamp will need to be set to time current state is started.

Reimplemented from ObjectSystemEntity.

Definition at line 397 of file CustomsOffice.cpp.

References _log, PyRep::Dump(), SystemEntity::GetName(), is_log_enabled, IsAlliance, IsCorp, IsFaction, EVEPOS::CustomsData::itemID, InventoryItem::itemName(), EVEPOS::OrbitalData::level, SystemEntity::m_allyID, m_cData, SystemEntity::m_corpID, m_oData, SystemEntity::m_ownerID, SystemEntity::m_self, SystemEntity::m_warID, EVEPOS::OrbitalData::orbitalHackerID, EVEPOS::OrbitalData::orbitalHackerProgress, EVEPOS::OrbitalData::planetID, PyStatic, EVEPOS::OrbitalData::rotation, PyTuple::SetItem(), PyDict::SetItemString(), EVEPOS::CustomsData::state, EVEPOS::CustomsData::timestamp, InventoryItem::typeID(), Ga::GaVec3::x, Ga::GaVec3::y, and Ga::GaVec3::z.

397  {
398  _log(SE__SLIMITEM, "MakeSlimItem for CustomsSE %u", m_cData.itemID);
399  _log(POS__SLIMITEM, "MakeSlimItem for CustomsSE %u", m_cData.itemID);
401  PyDict *slim = new PyDict();
402  slim->SetItemString("name", new PyString(m_self->itemName()));
403  slim->SetItemString("nameID", PyStatic.NewNone());
404  slim->SetItemString("itemID", new PyLong(m_cData.itemID));
405  slim->SetItemString("typeID", new PyInt(m_self->typeID()));
406  slim->SetItemString("ownerID", new PyInt(m_ownerID)); //1000148 for interbus customs office (to be done on creation)
407  slim->SetItemString("corpID", IsCorp(m_corpID) ? new PyInt(m_corpID) : PyStatic.NewNone());
408  slim->SetItemString("allianceID", IsAlliance(m_allyID) ? new PyInt(m_allyID) : PyStatic.NewNone());
409  slim->SetItemString("warFactionID", IsFaction(m_warID) ? new PyInt(m_warID) : PyStatic.NewNone());
410  slim->SetItemString("level", new PyInt(m_oData.level));
411  slim->SetItemString("orbitalTimestamp", new PyLong(m_cData.timestamp));
412  slim->SetItemString("planetID", new PyInt(m_oData.planetID)); // planetID for this orbital
413  slim->SetItemString("orbitalState", new PyInt(m_cData.state)); // this needs to be ORBITAL state...not structure state
414  PyTuple* tuple = new PyTuple(3); // yaw, pitch, roll = getattr(slimItem, 'dunRotation', None)
415  tuple->SetItem(0, new PyFloat(m_oData.rotation.x));
416  tuple->SetItem(1, new PyFloat(m_oData.rotation.y));
417  tuple->SetItem(2, new PyFloat(m_oData.rotation.z)); //MakeRandomFloat(-180, 180)
418  slim->SetItemString("dunRotation", tuple); // direction to planet
419  // dunno what these are...
420  slim->SetItemString("orbitalHackerProgress", m_oData.orbitalHackerProgress > 0 ? new PyFloat(m_oData.orbitalHackerProgress) : PyStatic.NewNone()); // packets show this as none if not value
421  slim->SetItemString("orbitalHackerID", m_oData.orbitalHackerID > 0 ? new PyInt(m_oData.orbitalHackerID) : PyStatic.NewNone()); // packets show this as none if not value
422 
423  if (is_log_enabled(POS__SLIMITEM)) {
424  _log( POS__SLIMITEM, "CustomsSE::MakeSlimItem() - %s(%u)", GetName(), m_cData.itemID);
425  slim->Dump(POS__SLIMITEM, " ");
426  }
427  return slim;
428 }
float orbitalHackerProgress
Definition: EVE_POS.h:78
#define _log(type, fmt,...)
Definition: logsys.h:124
uint32 orbitalHackerID
Definition: EVE_POS.h:76
Python string.
Definition: PyRep.h:430
GVector rotation
Definition: EVE_POS.h:79
Python's dictionary.
Definition: PyRep.h:719
uint32 m_ownerID
Definition: SystemEntity.h:283
Python floating point number.
Definition: PyRep.h:292
Python tuple.
Definition: PyRep.h:567
GaFloat x
Definition: GaTypes.h:207
void Dump(FILE *into, const char *pfx) const
Dumps object to file.
Definition: PyRep.cpp:84
EVEPOS::CustomsData m_cData
Definition: CustomsOffice.h:80
#define is_log_enabled(type)
Definition: logsys.h:78
InventoryItemRef m_self
Definition: SystemEntity.h:269
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
#define PyStatic
Definition: PyRep.h:1209
const char * GetName() const
Definition: SystemEntity.h:210
#define IsCorp(itemID)
Definition: EVE_Defines.h:234
GaFloat y
Definition: GaTypes.h:207
const std::string & itemName() const
#define IsFaction(itemID)
Definition: EVE_Defines.h:250
#define IsAlliance(itemID)
Definition: EVE_Defines.h:244
uint16 typeID() const
EVEPOS::OrbitalData m_oData
Definition: CustomsOffice.h:81
GaFloat z
Definition: GaTypes.h:207
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

Here is the call graph for this function:

virtual void CustomsSE::MissileLaunched ( Missile pMissile)
inlinevirtual

Reimplemented from SystemEntity.

Definition at line 49 of file CustomsOffice.h.

49 { /* Do nothing here */ }
void CustomsSE::Process ( )
virtual

Reimplemented from SystemEntity.

Definition at line 168 of file CustomsOffice.cpp.

References SystemEntity::Process().

168  {
169  /* called by EntityList::Process on every loop */
170  /* Enable base call to Process Targeting and Movement */
172 }
virtual void Process()

Here is the call graph for this function:

void CustomsSE::PullAnchor ( )

Definition at line 333 of file CustomsOffice.cpp.

References EVEPOS::StructureState::Anchored, GetFileTimeNow(), EVEPOS::CustomsData::itemID, m_cData, SystemEntity::m_destiny, SystemEntity::m_self, SendSlimUpdate(), DestinyManager::SendSpecialEffect(), EVEPOS::CustomsData::state, EVEPOS::CustomsData::status, EVEPOS::CustomsData::timestamp, InventoryItem::typeID(), EVEPOS::StructureState::Unanchored, and EVEPOS::EntityState::Unanchoring.

334 {
336  return; // make error here?
337 
340  //m_delayTime = m_self->GetAttribute(AttrUnanchoringDelay).get_int();
341  //m_procTimer.SetTimer(m_delayTime);
343 
344  SendSlimUpdate();
345 
346  //SendEffectUpdate(anchorLiftForOrbitals, true);
347  m_destiny->SendSpecialEffect(m_cData.itemID, m_cData.itemID, m_self->typeID(),0,0,"effects.AnchorLift",0,1,1,-1,0);
348 }
DestinyManager * m_destiny
Definition: SystemEntity.h:265
EVEPOS::CustomsData m_cData
Definition: CustomsOffice.h:80
void SendSpecialEffect(uint32 entityID, uint32 moduleID, uint32 moduleTypeID, uint32 targetID, uint32 chargeTypeID, std::string guid, bool isOffensive, bool start, bool isActive, int32 duration, uint32 repeat, int32 graphicInfo=0) const
InventoryItemRef m_self
Definition: SystemEntity.h:269
void SendSlimUpdate()
double GetFileTimeNow()
Definition: utils_time.cpp:84
uint16 typeID() const

Here is the call graph for this function:

void CustomsSE::Reinforced ( )
inline

Definition at line 55 of file CustomsOffice.h.

55 { /* do nothing here yet */ }
void CustomsSE::SendEffectUpdate ( int16  effectID,
bool  active 
)
protected

Definition at line 242 of file CustomsOffice.cpp.

References PyList::AddItem(), GetFileTimeNow(), EVEPOS::CustomsData::itemID, m_cData, SystemEntity::m_destiny, SystemEntity::m_ownerID, PyStatic, and DestinyManager::SendSingleDestinyEvent().

243 {
244  GodmaEnvironment ge;
245  ge.selfID = m_cData.itemID;
246  ge.charID = m_ownerID;
247  ge.shipID = m_cData.itemID;
248  ge.target = PyStatic.NewNone();
249  ge.subLoc = PyStatic.NewNone();
250  ge.area = new PyList();
251  ge.effectID = effectID;
252  Notify_OnGodmaShipEffect shipEff;
253  shipEff.itemID = ge.selfID;
254  shipEff.effectID = effectID;
255  shipEff.timeNow = GetFileTimeNow();
256  shipEff.start = (active ? 1 : 0);
257  shipEff.active = (active ? 1 : 0);
258  shipEff.environment = ge.Encode();
259  shipEff.startTime = shipEff.timeNow; // do we need to adjust this?
260  shipEff.duration = (active ? 0 : -1);
261  shipEff.repeat = (active ? 1 : 0);
262  shipEff.error = PyStatic.NewNone();
263  PyList* events = new PyList();
264  events->AddItem(shipEff.Encode());
265  PyTuple* event = new PyTuple(1);
266  event->SetItem(0, events);
267  m_destiny->SendSingleDestinyEvent(&event); // consumed
268 }
DestinyManager * m_destiny
Definition: SystemEntity.h:265
uint32 m_ownerID
Definition: SystemEntity.h:283
Python tuple.
Definition: PyRep.h:567
EVEPOS::CustomsData m_cData
Definition: CustomsOffice.h:80
void AddItem(PyRep *i)
Definition: PyRep.h:701
#define PyStatic
Definition: PyRep.h:1209
double GetFileTimeNow()
Definition: utils_time.cpp:84
void SendSingleDestinyEvent(PyTuple **ev, bool self_only=false) const
Python list.
Definition: PyRep.h:639

Here is the call graph for this function:

void CustomsSE::SendSlimUpdate ( )
protected

Definition at line 270 of file CustomsOffice.cpp.

References IsAlliance, IsCorp, IsFaction, EVEPOS::CustomsData::itemID, InventoryItem::itemName(), SystemEntity::m_allyID, m_cData, SystemEntity::m_corpID, SystemEntity::m_destiny, SystemEntity::m_ownerID, SystemEntity::m_self, SystemEntity::m_warID, PyStatic, DestinyManager::SendSingleDestinyUpdate(), PyTuple::SetItem(), PyDict::SetItemString(), EVEPOS::CustomsData::state, EVEPOS::CustomsData::timestamp, and InventoryItem::typeID().

Referenced by PullAnchor(), and SetAnchor().

271 {
272  PyDict *slim = new PyDict();
273  slim->SetItemString("name", new PyString(m_self->itemName()));
274  slim->SetItemString("itemID", new PyLong(m_cData.itemID));
275  slim->SetItemString("typeID", new PyInt(m_self->typeID()));
276  slim->SetItemString("ownerID", new PyInt(m_ownerID));
277  slim->SetItemString("corpID", IsCorp(m_corpID) ? new PyInt(m_corpID) : PyStatic.NewNone());
278  slim->SetItemString("allianceID", IsAlliance(m_allyID) ? new PyInt(m_allyID) : PyStatic.NewNone());
279  slim->SetItemString("warFactionID", IsFaction(m_warID) ? new PyInt(m_warID) : PyStatic.NewNone());
280  slim->SetItemString("posTimestamp", new PyLong(m_cData.timestamp));
281  slim->SetItemString("posState", new PyInt(m_cData.state));
282  slim->SetItemString("incapacitated", PyStatic.NewZero());
283  slim->SetItemString("posDelayTime", PyStatic.NewZero()); // fix this
284  PyTuple* shipData = new PyTuple(2);
285  shipData->SetItem(0, new PyLong(m_cData.itemID));
286  shipData->SetItem(1, new PyObject("foo.SlimItem", slim));
287  PyTuple* sItem = new PyTuple(2);
288  sItem->SetItem(0, new PyString("OnSlimItemChange"));
289  sItem->SetItem(1, shipData);
290  m_destiny->SendSingleDestinyUpdate(&sItem); // consumed
291 }
Python string.
Definition: PyRep.h:430
DestinyManager * m_destiny
Definition: SystemEntity.h:265
Python's dictionary.
Definition: PyRep.h:719
uint32 m_ownerID
Definition: SystemEntity.h:283
Python tuple.
Definition: PyRep.h:567
EVEPOS::CustomsData m_cData
Definition: CustomsOffice.h:80
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
#define PyStatic
Definition: PyRep.h:1209
void SendSingleDestinyUpdate(PyTuple **up, bool self_only=false) const
#define IsCorp(itemID)
Definition: EVE_Defines.h:234
const std::string & itemName() const
#define IsFaction(itemID)
Definition: EVE_Defines.h:250
#define IsAlliance(itemID)
Definition: EVE_Defines.h:244
uint16 typeID() const
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

Here is the call graph for this function:

Here is the caller graph for this function:

void CustomsSE::SetAnchor ( Client pClient,
GPoint pos 
)

Definition at line 294 of file CustomsOffice.cpp.

References _log, EVEPOS::StructureState::Anchored, EVEPOS::EntityState::Anchoring, GetFileTimeNow(), SystemEntity::GetName(), is_log_enabled, EVEPOS::CustomsData::itemID, InventoryItem::itemID(), m_cData, SystemEntity::m_destiny, SystemEntity::m_self, InventoryItem::name(), InventoryItem::radius(), InventoryItem::SaveItem(), sBubbleMgr, DestinyManager::SendDestinyUpdate(), Client::SendErrorMsg(), SendSlimUpdate(), DestinyManager::SendSpecialEffect(), DestinyManager::SetPosition(), EVEPOS::CustomsData::state, EVEPOS::CustomsData::status, EVEPOS::CustomsData::timestamp, InventoryItem::typeID(), EVEPOS::StructureState::Unanchored, Ga::GaVec3::x, Ga::GaVec3::y, and Ga::GaVec3::z.

295 {
297  pClient->SendErrorMsg("The %s is already anchored", m_self->name());
298  return; // make error here?
299  }
300 
301  m_destiny->SetPosition(pos);
302  sBubbleMgr.Add(this);
303 
304  if (is_log_enabled(POS__TRACE))
305  _log(POS__TRACE, "CustomsSE::Anchor() - TowerSE %s(%u) new position %.2f, %.2f, %.2f", GetName(), m_cData.itemID, pos.x, pos.y, pos.z);
306 
307  m_destiny->SetPosition(pos);
308  m_self->SaveItem();
309 
312  //m_delayTime = m_self->GetAttribute(AttrAnchoringDelay).get_int();
313  //m_procTimer.SetTimer(m_delayTime);
315 
316  SendSlimUpdate();
317 
318  std::vector<PyTuple*> updates;
319  SetBallFree sbf;
320  sbf.entityID = m_self->itemID();
321  sbf.is_free = false;
322  updates.push_back(sbf.Encode());
323  SetBallRadius sbr;
324  sbr.entityID = m_self->itemID();
325  sbr.radius = m_self->radius();
326  updates.push_back(sbr.Encode());
327  m_destiny->SendDestinyUpdate(updates); //consumed
328 
329  //SendEffectUpdate(anchorDropForOrbitals, true);
330  m_destiny->SendSpecialEffect(m_cData.itemID, m_cData.itemID, m_self->typeID(),0,0,"effects.AnchorDrop",0,1,1,-1,0);
331 }
double radius() const
void SendErrorMsg(const char *fmt,...)
Definition: Client.cpp:2719
#define _log(type, fmt,...)
Definition: logsys.h:124
DestinyManager * m_destiny
Definition: SystemEntity.h:265
void SendDestinyUpdate(std::vector< PyTuple * > &updates, bool self_only=false) const
const char * name()
GaFloat x
Definition: GaTypes.h:207
EVEPOS::CustomsData m_cData
Definition: CustomsOffice.h:80
#define is_log_enabled(type)
Definition: logsys.h:78
void SendSpecialEffect(uint32 entityID, uint32 moduleID, uint32 moduleTypeID, uint32 targetID, uint32 chargeTypeID, std::string guid, bool isOffensive, bool start, bool isActive, int32 duration, uint32 repeat, int32 graphicInfo=0) const
InventoryItemRef m_self
Definition: SystemEntity.h:269
void SendSlimUpdate()
const char * GetName() const
Definition: SystemEntity.h:210
void SetPosition(const GPoint &pt, bool update=false)
GaFloat y
Definition: GaTypes.h:207
double GetFileTimeNow()
Definition: utils_time.cpp:84
#define sBubbleMgr
uint16 typeID() const
GaFloat z
Definition: GaTypes.h:207
uint32 itemID() const
Definition: InventoryItem.h:98

Here is the call graph for this function:

void CustomsSE::SetPlanet ( uint32  planetID)
inline
Todo:
finish this...not sure how yet.

Definition at line 62 of file CustomsOffice.h.

References m_oData, and EVEPOS::OrbitalData::planetID.

Referenced by DynamicEntityFactory::BuildEntity().

62 { m_oData.planetID = planetID; }
EVEPOS::OrbitalData m_oData
Definition: CustomsOffice.h:81

Here is the caller graph for this function:

void CustomsSE::UpdateSettings ( int8  selectedHour,
int8  standingValue,
bool  ally,
bool  standings,
Call_TaxRateValuesDict &  taxRateValues 
)

Definition at line 202 of file CustomsOffice.cpp.

References Calendar::Flag::Alliance, EVEPOS::CustomsData::allowAlliance, EVEPOS::CustomsData::allowStandings, Calendar::Flag::Corp, m_cData, m_db, m_oData, EVEPOS::CustomsData::selectedHour, EVEPOS::TaxValues::StandingBad, EVEPOS::TaxValues::StandingGood, EVEPOS::TaxValues::StandingHigh, EVEPOS::TaxValues::StandingHorrible, EVEPOS::TaxValues::StandingNeutral, EVEPOS::CustomsData::standingValue, EVEPOS::CustomsData::taxRateValues, and PosMgrDB::UpdateCustomsData().

203 {
204  m_cData.allowAlliance = ally;
205  m_cData.allowStandings = standings;
206  m_cData.selectedHour = selectedHour;
207  m_cData.standingValue = standingValue;
208 
209  using namespace EVEPOS;
210  m_cData.taxRateValues[TaxValues::Corp] = taxRateValues.corporation;
211  m_cData.taxRateValues[TaxValues::Alliance] = taxRateValues.alliance;
212  m_cData.taxRateValues[TaxValues::StandingHorrible] = taxRateValues.standingHorrible;
213  m_cData.taxRateValues[TaxValues::StandingBad] = taxRateValues.standingBad;
214  m_cData.taxRateValues[TaxValues::StandingNeutral] = taxRateValues.standingNeutral;
215  m_cData.taxRateValues[TaxValues::StandingGood] = taxRateValues.standingGood;
216  m_cData.taxRateValues[TaxValues::StandingHigh] = taxRateValues.standingHigh;
217 
218  // save updates to db
220 }
void UpdateCustomsData(EVEPOS::CustomsData &cData, EVEPOS::OrbitalData &oData)
Definition: PosMgrDB.cpp:350
EVEPOS::CustomsData m_cData
Definition: CustomsOffice.h:80
std::map< uint8, float > taxRateValues
Definition: EVE_POS.h:25
EVEPOS::OrbitalData m_oData
Definition: CustomsOffice.h:81
Definition: EVE_POS.h:14
PosMgrDB m_db
Definition: CustomsOffice.h:78

Here is the call graph for this function:

void CustomsSE::VerifyAddItem ( InventoryItemRef  iRef)

Definition at line 229 of file CustomsOffice.cpp.

References InventoryItem::categoryID(), SystemEntity::m_self, InventoryItem::name(), EVEDB::invCategories::PlanetaryCommodities, and EVEDB::invCategories::PlanetaryResources.

Referenced by StructureItem::AddItem().

230 {
231  // test for planetary resources here
234  throw CustomError ("You cannot put %s in a %s", iRef->name(), m_self->name());
235 }
const char * name()
Advanced version of UserError that allows to send a full custom message.
Definition: PyExceptions.h:453
InventoryItemRef m_self
Definition: SystemEntity.h:269
uint8 categoryID() const

Here is the call graph for this function:

Here is the caller graph for this function:

Member Data Documentation

PosMgrDB CustomsSE::m_db
private

Definition at line 78 of file CustomsOffice.h.

Referenced by Init(), and UpdateSettings().

EVEPOS::OrbitalData CustomsSE::m_oData
private
PlanetSE* CustomsSE::m_planetSE
private

Definition at line 84 of file CustomsOffice.h.

Referenced by CustomsSE(), GetPlanetSE(), and InitData().

SystemManager* CustomsSE::m_system
private

Definition at line 83 of file CustomsOffice.h.

Referenced by CustomsSE(), and Killed().


The documentation for this class was generated from the following files: