50 if(!
sDatabase.RunQuery(res,
"SELECT schematicID, typeID, quantity, isInput FROM piTypeMap" ))
51 _log(DATABASE__ERROR,
"Error in GetSchematicData Query: %s", res.
error.
c_str());
57 if(!
sDatabase.RunQuery(res,
"SELECT schematicID, cycleTime FROM piSchematics"))
58 _log(DATABASE__ERROR,
"Error in GetSchematicTimes Query: %s", res.
error.
c_str());
65 "SELECT planet.typeID AS planetTypeID,"
66 " resource.typeID AS resourceID"
67 " FROM invTypes planet, invTypes resource, dgmTypeAttributes dgm1, dgmTypeAttributes dgm2 "
68 " WHERE dgm1.typeID = dgm2.typeID AND dgm1.attributeID = 1632 AND dgm1.valueFloat = planet.typeID AND dgm2.attributeID = 709"
69 " AND dgm2.valueFloat = resource.typeID ORDER BY planet.typeID ")) {
70 _log(DATABASE__ERROR,
"Error in GetPlanetData Query: %s", res.
error.
c_str());
81 "SELECT solarSystemID, planetID, typeID, numberOfPins"
82 " FROM piPlanets WHERE charID = %u", charID)) {
83 _log(DATABASE__ERROR,
"Error in GetPlanetsForChar query: %s", res.
error.
c_str());
86 _log(DATABASE__RESULTS,
"GetPlanetsForChar returned %u items", res.
GetRowCount());
94 "INSERT INTO piPlanets (solarSystemID, planetID, charID, typeID, ccPinID)"
95 " VALUES (%u, %u, %u, %u, %u)", solarSystemID, planetID, charID, typeID, ccPinID))
97 _log(DATABASE__ERROR,
"AddPlanetForChar - Unable to add planet %u for char %u: %s", planetID, charID, err.
GetError());
104 if(!
sDatabase.RunQuery(err,
"UPDATE piPlanets SET numberOfPins = %u WHERE ccPinID = %u ", pins, ccPinID))
106 _log(DATABASE__ERROR,
"UpdatePlanetPins - Unable to update ccPinID %u : %s", ccPinID, err.
GetError());
113 if(!
sDatabase.RunQuery(res,
"SELECT itemID AS launchID, status, itemID, solarSystemID, planetID, launchTime, x, y, z"
114 " FROM piLaunches WHERE charID = %u", charID)) {
115 _log(DATABASE__ERROR,
"Error in GetMyLaunchesDetails Query: %s", res.
error.
c_str());
124 if(!
sDatabase.RunQuery(res,
"SELECT x,y,z FROM piLaunches WHERE launchID = %u", launchID)) {
125 _log(DATABASE__ERROR,
"Error in GetLaunchPos query: %s", res.
error.
c_str());
129 _log(DATABASE__ERROR,
"Error in GetLaunchPos query: %s", res.
error.
c_str());
139 if(!
sDatabase.RunQuery(res,
"SELECT planetID FROM piLaunches WHERE launchID = %u", launchID)) {
140 _log(DATABASE__ERROR,
"Error in GetLaunchPlanet query: %s", res.
error.
c_str());
144 _log(DATABASE__ERROR,
"Error in GetLaunchPlanet query: %s", res.
error.
c_str());
154 if(!
sDatabase.RunQuery(res,
"SELECT itemID, status, solarSystemID, planetID, launchTime, x, y, z FROM piLaunches WHERE launchID = %u", data.
launchID)) {
155 _log(DATABASE__ERROR,
"Error in GetLaunchDetails query: %s", res.
error.
c_str());
159 _log(DATABASE__ERROR,
"Error in GetLaunchDetails query: %s", res.
error.
c_str());
175 if(!
sDatabase.RunQuery(res,
"SELECT itemID FROM piLaunches WHERE launchID = %u", launchID)) {
176 _log(DATABASE__ERROR,
"Error in GetLaunchItemID query: %s", res.
error.
c_str());
180 _log(DATABASE__ERROR,
"Error in GetLaunchItemID query: %s", res.
error.
c_str());
190 sDatabase.RunQuery(err,
"UPDATE piLaunches SET status=%u WHERE itemID = %u", status, itemID);
198 "SELECT headID, typeID, ownerID, latitude, longitude"
201 " (SELECT pinID FROM piCCPin"
202 " WHERE planetID = %u)",
205 _log(DATABASE__ERROR,
"Error in LoadPins Query: %s", res.
error.
c_str());
209 _log(DATABASE__RESULTS,
"GetExtractorsForPlanet returned %u items", res.
GetRowCount());
219 " AND planetID = %u",
222 _log(DATABASE__ERROR,
"Error in LoadPins Query: %s", res.
error.
c_str());
238 "SELECT pinID, typeID, ownerID, state, level, latitude, longitude, "
239 " isCommandCenter, isLaunchable, isProcess, isStorage, isECU,"
240 " schematicID, programType, headRadius,"
241 " launchTime, cycleTime, expiryTime, installTime, lastRunTime,"
242 " hasReceivedInputs, receivedInputsLastCycle, qtyPerCycle"
244 " WHERE ccPinID = %u", ccPinID))
246 _log(DATABASE__ERROR,
"Error in LoadPins Query: %s", res.
error.
c_str());
250 _log(DATABASE__RESULTS,
"LoadPins returned %u items", res.
GetRowCount());
255 pin.
typeID = row.GetInt(1);
257 pin.
state = row.GetInt(3);
258 pin.
level = row.GetInt(4);
265 pin.
isECU = row.GetBool(11);
286 pins[row.GetInt(0)] = pin;
294 "SELECT linkID, level, state, endpoint1, endpoint2"
295 " FROM piLinks WHERE ccPinID = %u",
298 _log(DATABASE__ERROR,
"Error in LoadPins Query: %s", res.
error.
c_str());
302 _log(DATABASE__RESULTS,
"LoadLinks returned %u items", res.
GetRowCount());
307 link.
level = row.GetInt(1);
308 link.
state = row.GetInt(2);
312 links[row.GetInt(0)] = link;
320 "SELECT routeID, srcPinID, destPinID, state, priority, path, typeID, itemQty"
321 " FROM piRoutes WHERE ccPinID = %u",
324 _log(DATABASE__ERROR,
"Error in LoadPins Query: %s", res.
error.
c_str());
328 _log(DATABASE__RESULTS,
"LoadRoutes returned %u items", res.
GetRowCount());
331 std::string tempPath;
337 route.
state = row.GetInt(3);
342 tempPath = row.GetText(5);
343 if (!tempPath.empty()) {
346 std::string tempString =
"";
348 while ((pos = tempPath.find_first_of(
':')) > 0 ) {
349 tempString = tempPath.substr(0,pos);
350 tempPath = tempPath.substr(pos+1,tempPath.length()-1);
351 route.
path.insert(route.
path.end(), (atoi(tempString.c_str())));
354 route.
path.insert(route.
path.end(), (atoi(tempPath.c_str())));
357 routes[row.GetInt(0)] = route;
366 "SELECT typeID, itemQty"
367 " FROM piPinContents WHERE pinID = %u",
370 _log(DATABASE__ERROR,
"Error in LoadContents Query: %s", res.
error.
c_str());
374 _log(DATABASE__RESULTS,
"LoadContents returned %u items", res.
GetRowCount());
378 contents[row.GetInt(0)] = row.GetInt(1);
387 "SELECT headID, typeID, latitude, longitude"
388 " FROM piECUHeads WHERE ecuID = %u",
391 _log(DATABASE__ERROR,
"Error in LoadHeads Query: %s", res.
error.
c_str());
395 _log(DATABASE__RESULTS,
"LoadHeads returned %u items", res.
GetRowCount());
400 head.
typeID = row.GetInt(1);
404 heads[(
uint16)row.GetInt(0)] = head;
412 "INSERT INTO piLaunches (itemID, status, charID, solarSystemID, planetID, launchTime, x, y, z) "
413 " VALUES (%u, 0, %u, %u, %u, %f, %f, %f, %f)",
416 _log(DATABASE__ERROR,
"SaveLaunch - Unable to save Launch: %s", err.
GetError());
424 "INSERT INTO piCCPin (pinID, charID, planetID, typeID, latitude, longitude) "
425 " VALUES (%u, %u, %u, %u, %f, %f)",
426 pinID, charID, planetID, typeID, latitude, longitude))
428 _log(DATABASE__ERROR,
"SaveCommandCenter - Unable to save CommandCenter: %s", err.
GetError());
435 if(!
sDatabase.RunQuery(err,
"UPDATE piCCPin SET level = %u WHERE pinID = %u", level, pinID))
436 _log(DATABASE__ERROR,
"SaveCCLevel - Unable to save CCLevel: %s", err.
GetError());
437 if(!
sDatabase.RunQuery(err,
"UPDATE piPins SET level = %u WHERE pinID = %u", level, pinID))
438 _log(DATABASE__ERROR,
"SaveCCLevel - Unable to save CCLevel: %s", err.
GetError());
444 std::ostringstream Inserts;
446 Inserts <<
"INSERT INTO piPins";
447 Inserts <<
" (ccPinID, pinID, typeID, ownerID, level, latitude, longitude,";
448 Inserts <<
" isCommandCenter, isLaunchable, isProcess, isStorage, isECU,";
449 Inserts <<
" schematicID, programType, headRadius, launchTime,";
450 Inserts <<
" cycleTime, expiryTime, installTime, lastRunTime)";
454 for (
auto cur : ccPin->
pins) {
456 Inserts <<
" VALUES ";
461 Inserts <<
"(" << ccPinID <<
", " << cur.first <<
", " << cur.second.typeID <<
", " << cur.second.ownerID <<
", " << cur.second.level <<
", " << cur.second.latitude <<
", " << cur.second.longitude <<
", ";
462 Inserts << cur.second.isCommandCenter <<
", " << cur.second.isLaunchable <<
", " << cur.second.isProcess <<
", " << cur.second.isStorage <<
", " << cur.second.isECU <<
", ";
463 Inserts << cur.second.schematicID <<
", " << cur.second.programType <<
", " << cur.second.headRadius <<
", " << cur.second.lastLaunchTime;
464 Inserts <<
", " << cur.second.cycleTime <<
", " << cur.second.expiryTime <<
", " << cur.second.installTime <<
", " << cur.second.lastRunTime <<
")";
469 Inserts <<
" ON DUPLICATE KEY UPDATE ";
470 Inserts <<
" schematicID=VALUES(schematicID), ";
471 Inserts <<
" programType=VALUES(programType), ";
472 Inserts <<
" headRadius=VALUES(headRadius),";
473 Inserts <<
" launchTime=VALUES(launchTime), ";
474 Inserts <<
" cycleTime=VALUES(cycleTime),";
475 Inserts <<
" expiryTime=VALUES(expiryTime), ";
476 Inserts <<
" installTime=VALUES(installTime),";
477 Inserts <<
" lastRunTime=VALUES(lastRunTime);";
481 _log(DATABASE__ERROR,
"SavePins - unable to save pins: %s", err.
c_str());
487 std::ostringstream Inserts;
489 Inserts <<
"INSERT INTO piPins";
490 Inserts <<
" (ccPinID, pinID, schematicID, programType, launchTime,";
491 Inserts <<
" cycleTime, installTime, lastRunTime, receivedInputsLastCycle, hasReceivedInputs)";
495 std::map<uint32, PI_Pin>::iterator itr;
496 itr = ccPin->
pins.find(pinID);
497 if (itr != ccPin->
pins.end()) {
499 Inserts <<
" VALUES ";
500 Inserts <<
"(" << ccPin->
ccPinID <<
", " << itr->first <<
", "<< itr->second.schematicID <<
", " << itr->second.programType;
501 Inserts <<
", " << itr->second.lastLaunchTime <<
", " << itr->second.cycleTime <<
", " << itr->second.installTime;
502 Inserts <<
", " << itr->second.lastRunTime <<
", " << itr->second.receivedInputsLastCycle <<
", " << itr->second.hasReceivedInputs <<
")";
505 for (
auto cur : ccPin->
pins) {
507 Inserts <<
" VALUES ";
512 Inserts <<
"(" << ccPin->
ccPinID <<
", " << cur.first <<
", "<< cur.second.schematicID <<
", " << cur.second.programType;
513 Inserts <<
", " << cur.second.lastLaunchTime <<
", " << cur.second.cycleTime <<
", " << cur.second.installTime;
514 Inserts <<
", " << cur.second.lastRunTime <<
", " << cur.second.receivedInputsLastCycle <<
", " << cur.second.hasReceivedInputs <<
")";
520 Inserts <<
" ON DUPLICATE KEY UPDATE ";
521 Inserts <<
" schematicID=VALUES(schematicID), ";
522 Inserts <<
" programType=VALUES(programType), ";
523 Inserts <<
" launchTime=VALUES(launchTime), ";
524 Inserts <<
" cycleTime=VALUES(cycleTime),";
525 Inserts <<
" installTime=VALUES(installTime),";
526 Inserts <<
" lastRunTime=VALUES(lastRunTime),";
527 Inserts <<
" hasReceivedInputs=VALUES(hasReceivedInputs),";
528 Inserts <<
" receivedInputsLastCycle=VALUES(receivedInputsLastCycle);";
532 _log(DATABASE__ERROR,
"SavePins - unable to save pins: %s", err.
c_str());
538 std::map<uint32, PI_Pin>::iterator itr = ccPin->
pins.find(pinID);
539 if (itr == ccPin->
pins.end()) {
540 _log(PLANET__ERROR,
"PlanetDB::UpdateECUPin() - pinID %u not found in ccPin.pins map", pinID);
553 " installTime = %li,"
556 itr->second.programType, itr->second.headRadius, itr->second.qtyPerCycle, itr->second.schematicID, itr->second.expiryTime,
557 itr->second.cycleTime, itr->second.installTime, itr->second.lastRunTime, pinID))
559 _log(DATABASE__ERROR,
"UpdateECUPin - Unable to update pin: %s", err.
GetError());
565 std::ostringstream Inserts;
567 Inserts <<
"INSERT INTO piPins";
568 Inserts <<
" (pinID, launchTime, installTime, lastRunTime)";
571 for (
auto cur : ccPin->
pins) {
573 Inserts <<
" VALUES ";
578 Inserts <<
"(" << cur.first <<
", " << cur.second.lastLaunchTime <<
", ";
579 Inserts << cur.second.installTime <<
", " << cur.second.lastRunTime <<
")";
584 Inserts <<
" ON DUPLICATE KEY UPDATE ";
585 Inserts <<
" launchTime=VALUES(launchTime),";
586 Inserts <<
" installTime=VALUES(installTime),";
587 Inserts <<
" lastRunTime=VALUES(lastRunTime);";
591 _log(DATABASE__ERROR,
"SavePins - unable to save pins: %s", err.
c_str());
601 for (
auto cur : heads) {
604 "INSERT INTO piECUHeads (ccPinID, ownerID, ecuID, headID, typeID, latitude, longitude)"
605 " VALUES (%u, %u, %u, %u, %u, %f, %f)"
606 " ON DUPLICATE KEY UPDATE "
607 " typeID=VALUES(typeID),"
608 " latitude=VALUES(latitude),"
609 " longitude=VALUES(longitude)",
610 ccPinID, ownerID, ecuID, cur.first, cur.second.typeID, cur.second.latitude, cur.second.longitude))
612 _log(DATABASE__ERROR,
"SaveHeads - Unable to save heads: %s", err.
GetError());
620 if(!
sDatabase.RunQuery(err,
"UPDATE piPins SET level = %u WHERE pinID = %u", level, pinID))
622 _log(DATABASE__ERROR,
"SavePinLevel - Unable to save PinLevel: %s", err.
GetError());
628 std::ostringstream Inserts;
630 Inserts <<
"INSERT INTO piLinks";
631 Inserts <<
" (ccPinID, linkID, level, endpoint1, endpoint2)";
635 for (
auto cur : ccPin->
links) {
637 Inserts <<
" VALUES ";
642 Inserts <<
"(" << ccPinID <<
", " << cur.first <<
", " << cur.second.level <<
", " << cur.second.endpoint1 <<
", " << cur.second.endpoint2 <<
")";
647 Inserts <<
" ON DUPLICATE KEY UPDATE";
648 Inserts <<
" level=VALUES(level), ";
649 Inserts <<
" endpoint1=VALUES(endpoint1), ";
650 Inserts <<
" endpoint2=VALUES(endpoint2)";
654 _log(DATABASE__ERROR,
"SaveLinks - unable to save links - %s", err.
c_str());
661 if(!
sDatabase.RunQuery(err,
"UPDATE piLinks SET level = %u WHERE linkID = %u", level, linkID))
663 _log(DATABASE__ERROR,
"SaveLinkLevel - Unable to save LinkLevel: %s", err.
GetError());
673 std::list<uint32>::iterator itr = route.
path.begin();
674 while (itr != route.
path.end()) {
675 path += std::to_string(*itr);
676 if (++itr != route.
path.end())
680 "INSERT INTO `piRoutes`(`ccPinID`, `srcPinID`, `destPinID`, `state`, `priority`, `path`, `typeID`, `itemQty`) "
681 " VALUES (%u, %u, %u, %u, %u, '%s', %u, %u)",
684 _log(DATABASE__ERROR,
"SaveHeads - Unable to save heads: %s", err.
GetError());
691 std::ostringstream Inserts;
693 Inserts <<
"INSERT INTO piRoutes";
694 Inserts <<
" (ccPinID, routeID, srcPinID, destPinID, path, typeID, itemQty)";
698 std::list<uint32>::iterator itr;
700 for (
auto cur : ccPin->
routes) {
703 Inserts <<
" VALUES ";
708 itr = cur.second.path.begin();
709 while (itr != cur.second.path.end()) {
710 path += std::to_string(*itr);
711 if (++itr != cur.second.path.end())
714 Inserts <<
"(" << ccPinID <<
", " << cur.first <<
", " << cur.second.srcPinID <<
", " << cur.second.destPinID <<
", '" << path <<
"', ";
715 Inserts << cur.second.commodityTypeID <<
", " << cur.second.commodityQuantity <<
")";
720 Inserts <<
" ON DUPLICATE KEY UPDATE";
721 Inserts <<
" path=VALUES(path),";
722 Inserts <<
" srcPinID=VALUES(srcPinID),";
723 Inserts <<
" destPinID=VALUES(destPinID),";
724 Inserts <<
" typeID=VALUES(typeID),";
725 Inserts <<
" itemQty=VALUES(itemQty);";
729 _log(DATABASE__ERROR,
"SaveRoutes - unable to save route - %s", err.
c_str());
735 std::ostringstream Inserts;
737 Inserts <<
"INSERT INTO piPinContents";
738 Inserts <<
" (ccPinID, pinID, typeID, itemQty)";
742 std::map<uint16, uint32>::iterator itr;
743 for (
auto cur : ccPin->
pins) {
744 if (cur.second.isStorage) {
745 for (itr = cur.second.contents.begin(); itr != cur.second.contents.end(); ++itr) {
747 Inserts <<
" VALUES ";
752 Inserts <<
"(" << ccPinID <<
", " << cur.first <<
", " << itr->first <<
", " << itr->second <<
")";
758 Inserts <<
" ON DUPLICATE KEY UPDATE";
759 Inserts <<
" itemQty=VALUES(itemQty);";
763 _log(DATABASE__ERROR,
"SaveContents - unable to save contents - %s", err.
c_str());
769 std::ostringstream Inserts;
771 Inserts <<
"INSERT INTO piPinContents";
772 Inserts <<
" (ccPinID, pinID, typeID, itemQty)";
775 std::map<uint16, uint32>::iterator itr;
776 for (itr = contents.begin(); itr != contents.end(); ++itr) {
778 Inserts <<
" VALUES ";
783 Inserts <<
"(" << ccPinID <<
", " << pinID <<
", " << itr->first <<
", " << itr->second <<
")";
789 _log(DATABASE__ERROR,
"SavePinContents - unable to save contents - %s", err.
c_str());
796 sDatabase.RunQuery(err,
"DELETE FROM piPins WHERE pinID = %u", pinID);
797 sDatabase.RunQuery(err,
"DELETE FROM entity WHERE itemID = %u", pinID);
798 sDatabase.RunQuery(err,
"DELETE FROM entity_attributes WHERE itemID = %u", pinID);
804 sDatabase.RunQuery(err,
"DELETE FROM piECUHeads WHERE ecuID = %u AND headID = %u", ecuID, headID);
810 sDatabase.RunQuery(err,
"DELETE FROM piLinks WHERE linkID = %u", linkID);
816 sDatabase.RunQuery(err,
"DELETE FROM piRoutes WHERE routeID = %u", routeID);
822 sDatabase.RunQuery(err,
"DELETE FROM piPinContents WHERE pinID = %u", pinID);
828 sDatabase.RunQuery(err,
"DELETE FROM piLaunches WHERE itemID = %u", contID);
835 sDatabase.RunQuery(err,
"DELETE FROM entity WHERE locationID = %u AND ownerID = %u", planetID, charID);
836 sDatabase.RunQuery(err,
"DELETE FROM piCCPin WHERE pinID = %u", ccPinID);
837 sDatabase.RunQuery(err,
"DELETE FROM piPins WHERE ccPinID = %u", ccPinID);
838 sDatabase.RunQuery(err,
"DELETE FROM piLinks WHERE ccPinID = %u", ccPinID);
839 sDatabase.RunQuery(err,
"DELETE FROM piRoutes WHERE ccPinID = %u", ccPinID);
840 sDatabase.RunQuery(err,
"DELETE FROM piPlanets WHERE ccPinID = %u", ccPinID);
841 sDatabase.RunQuery(err,
"DELETE FROM piECUHeads WHERE ccPinID = %u", ccPinID);
842 sDatabase.RunQuery(err,
"DELETE FROM piPinContents WHERE ccPinID = %u", ccPinID);
std::map< uint32, PI_Pin > pins
std::map< uint16, PI_Route > routes
void UpdatePlanetPins(uint32 ccPinID, uint8 pins=1)
std::map< uint16, uint32 > contents
void SavePins(PI_CCPin *ccPin)
void UpdatePins(uint32 pinID, PI_CCPin *ccPin)
#define _log(type, fmt,...)
void SaveCommandCenter(uint32 pinID, uint32 charID, uint32 planetID, uint32 typeID, double latitude, double longitude)
PyObjectEx * DBResultToCRowset(DBQueryResult &result)
void LoadHeads(uint32 ecuID, std::map< uint16, PI_Heads > &heads)
int32 GetInt(uint32 index) const
void SavePinLevel(uint32 pinID, uint8 level)
void SaveLaunch(uint32 contID, uint32 charID, uint32 systemID, uint32 planetID, GPoint &pos)
void GetSchematicData(DBQueryResult &res)
void SaveHeads(uint32 ccPinID, uint32 ownerID, uint32 ecuID, std::map< uint16, PI_Heads > &heads)
static uint32 GetLaunchItemID(uint32 launchID)
PyRep * GetMyLaunchesDetails(uint32 charID)
double GetDouble(uint32 index) const
const char * GetError() const
void LoadContents(uint32 pinID, std::map< uint16, uint32 > &contents)
uint16 SaveRoute(uint32 ccPinID, PI_Route &route)
void UpdateECUPin(uint32 pinID, PI_CCPin *ccPin)
static uint32 GetLaunchPlanet(uint32 launchID)
static void DeleteLaunch(uint32 contID)
std::map< uint16, PI_Heads > heads
bool LoadColony(uint32 charID, uint32 planetID, PI_CCPin *ccPin)
void RemoveContents(uint32 pinID)
void LoadRoutes(uint32 ccPinID, std::map< uint16, PI_Route > &routes)
bool GetRow(DBResultRow &into)
const char * c_str() const
void SaveRoutes(PI_CCPin *ccPin)
static const GPoint NULL_ORIGIN(0, 0, 0)
PyObject * DBResultToRowset(DBQueryResult &result)
void RemoveHead(uint32 ecuID, uint32 headID)
void LoadPins(uint32 ccPinID, std::map< uint32, PI_Pin > &pins)
static void GetLaunchDetails(Launch::Data &data)
void SaveContents(PI_CCPin *ccPin)
void SaveLinks(PI_CCPin *ccPin)
std::map< uint32, PI_Link > links
void RemovePin(uint32 pinID)
void DeleteColony(uint32 ccPinID, uint32 planetID, uint32 charID)
bool receivedInputsLastCycle
void RemoveRoute(uint16 routeID)
void AddPlanetForChar(uint32 solarSystemID, uint32 planetID, uint32 charID, uint32 ccPinID, uint16 typeID)
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
void SaveLinkLevel(uint32 linkID, uint8 level)
void RemoveLink(uint32 linkID)
PyRep * GetPlanetsForChar(uint32 charID)
void SavePinContents(uint32 ccPinID, uint32 pinID, std::map< uint16, uint32 > &contents)
void SaveCCLevel(uint32 pinID, uint8 level)
static void GetExtractorsForPlanet(uint32 planetID, DBQueryResult &res)
void GetPlanetData(DBQueryResult &res)
int64 GetInt64(uint32 index) const
static void UpdateLaunchStatus(uint32 itemID, uint8 status)
void UpdatePinTimes(PI_CCPin *ccPin)
void GetSchematicTimes(DBQueryResult &res)
void LoadLinks(uint32 ccPinID, std::map< uint32, PI_Link > &links)
static GPoint GetLaunchPos(uint32 launchID)