1 #include "../Instrument.h" 5 Instrument(prmX, prmY, prmXScale, prmYScale, prmBus, prmLogger, prmDevice, prmFonts)
10 for (
int t = 0; t < 64; t++)
18 const int lineHeight = 12;
22 DrawTextW(L
"███████████████████████████████████████████████████████████████████████████████", 0, rowId*lineHeight, 0, DT_NOCLIP, 0xFF00A0A0);
25 DrawTextW(row, 0, rowId*lineHeight, 0, DT_NOCLIP, color);
34 float totalWeightLbs = 0.0f;
38 RenderRow(L
"MANIFEST WGT KG REGISTRY DESCRIPTION QUANTITY NOTES", 0xFF00FFFF, rowId++);
39 RenderRow(L
"------------- ------ ------------ -------------------- -------- ---------------", 0xFF00FFFF, rowId++);
45 case VehicleType::C98: swprintf_s(column, 99, L
"C-98 MuVER");
break;
46 case VehicleType::E10: swprintf_s(column, 99, L
"E-10 Saint");
break;
47 case VehicleType::P13: swprintf_s(column, 99, L
"P-13 Prowler");
break;
48 case VehicleType::A4: swprintf_s(column, 99, L
"A-4 Wanderer");
break;
49 case VehicleType::C2: swprintf_s(column, 99, L
"C-2 Dasher");
break;
50 case VehicleType::T120: swprintf_s(column, 99, L
"T-120 Steerhead");
break;
51 case VehicleType::T121: swprintf_s(column, 99, L
"T-121 Steerhead");
break;
52 case VehicleType::E11: swprintf_s(column, 99, L
"E-11 Saint");
break;
53 case VehicleType::T27: swprintf_s(column, 99, L
"T-27 Mammoth");
break;
54 case VehicleType::C2A: swprintf_s(column, 99, L
"C-2A Dasher");
break;
55 case VehicleType::W6Manx: swprintf_s(column, 99, L
"W-6 Manx");
break;
56 case VehicleType::T19: swprintf_s(column, 99, L
"T-19 Stratomaster");
break;
57 default: swprintf_s(column, 99, L
"Unknown");
break;
63 swprintf_s(row, 999, L
"Fuel %6.0f",
fuel /
Kg2Lbs);
64 RenderRow(row, 0xFFAAAAAA, rowId++,
"Fuel");
65 totalWeightLbs +=
fuel;
67 bool hasAvionics =
false;
68 for (
short t = 0; t < MAX_AVIOPERSHIP; t++)
74 swprintf_s(row, 999, L
"Avionics Bays 13 320K-LRS ON");
76 swprintf_s(row, 999, L
" 13 320K-LRS ON");
78 totalWeightLbs += 28.0f;
83 swprintf_s(row, 999, L
"Avionics Bays 2 40K-SRS ON");
85 swprintf_s(row, 999, L
" 2 40K-SRS ON");
87 totalWeightLbs += 3.5f;
92 swprintf_s(row, 999, L
"Avionics Bays 2 JVC Radio ");
94 swprintf_s(row, 999, L
" 2 JVC Radio ");
96 wcscat_s(row, 999, L
"ON");
98 wcscat_s(row, 999, L
"OFF");
100 totalWeightLbs += 4.75f;
105 swprintf_s(row, 999, L
"Avionics Bays 6 Remote Assay ");
107 swprintf_s(row, 999, L
" 6 Remote Assay ");
109 wcscat_s(row, 999, L
"ON");
111 wcscat_s(row, 999, L
"OFF");
113 totalWeightLbs += 13.9f;
118 swprintf_s(row, 999, L
"Avionics Bays 8 Weather Radar ");
120 swprintf_s(row, 999, L
" 8 Weather Radar ");
122 wcscat_s(row, 999, L
"ON");
124 wcscat_s(row, 999, L
"OFF");
126 totalWeightLbs += 17.8574f;
132 bool hasWeapons =
false;
133 for (
short t = 0; t < MAX_WEAPPERSHIP; t++)
143 totalWeightLbs += 248.0f;
152 totalWeightLbs += 619.5f;
156 const float tempWeightLbs = 102.5f +
ourcockpit.
vdat.weaponreload * 188.0f;
162 totalWeightLbs += tempWeightLbs;
171 wcscpy_s(column, 99, L
"Cargo Bed ");
173 swprintf_s(column, 99, L
"Cargo Bay %-2i ", i + 1);
174 wcscpy_s(row, 999, column);
184 wcscat_s(row, 999, column);
189 logger->
Log(
"WeightLbs not set on cargo bay!", Logger::Level::Error);
201 wcscat_s(row, 999, column);
205 case VehicleType::C98: swprintf_s(column, 99, L
"MuVER ");
break;
206 case VehicleType::C2: swprintf_s(column, 99, L
"C-2 ");
break;
207 case VehicleType::PODS_PAX: swprintf_s(column, 99, L
"Pax ");
break;
208 case VehicleType::PODS_CNST: swprintf_s(column, 99, L
"Const ");
break;
209 case VehicleType::PODS_CARGOAFT: swprintf_s(column, 99, L
"Crgo AFT ");
break;
210 case VehicleType::PODS_FUEL: swprintf_s(column, 99, L
"AuxFuel ");
break;
211 case VehicleType::PODS_CARGOTOP: swprintf_s(column, 99, L
"Crgo TOP ");
break;
212 case VehicleType::PODS_MUNITIONS: swprintf_s(column, 99, L
"Munition ");
break;
213 case VehicleType::C2A: swprintf_s(column, 99, L
"C-2A ");
break;
214 default: swprintf_s(column, 99, L
"UNKNOWN ");
break;
216 wcscat_s(row, 999, column);
224 swprintf_s(column, 99, L
" ");
233 case CargoLoadType::None: swprintf_s(column, 99, L
" ");
break;
235 default: swprintf_s(column, 99, L
"UNKNOWN ");
break;
239 swprintf_s(column, 99, L
" ");
249 case CargoLoadType::None: swprintf_s(column, 99, L
" ");
break;
270 default: swprintf_s(column, 99, L
"UNKNOWN ");
break;
275 swprintf_s(column, 99, L
"LOAD_QUANTITY ERROR ");
280 swprintf_s(column, 99, L
" ");
284 wcscat_s(row, 999, column);
290 case 0: wcscpy_s(column, 99, L
"Undeclared");
break;
291 case 1: wcscpy_s(column, 99, L
"Deois Airport");
break;
292 case 2: wcscpy_s(column, 99, L
"LA Eyeworks");
break;
293 case 3: wcscpy_s(column, 99, L
"Fleet Bank");
break;
294 case 4: wcscpy_s(column, 99, L
"ATI Tower");
break;
295 case 5: wcscpy_s(column, 99, L
"Zana Zoom's");
break;
296 case 6: wcscpy_s(column, 99, L
"UI Building");
break;
297 case REF_DOCKCPOC: wcscpy_s(column, 99, L
"CPOC");
break;
298 case REF_DOCKTAC: wcscpy_s(column, 99, L
"TAC");
break;
299 case 12: wcscpy_s(column, 99, L
"Arcridge");
break;
300 case 13: wcscpy_s(column, 99, L
"Junk Ore Inc");
break;
301 case 14: wcscpy_s(column, 99, L
"Deois Airport");
break;
302 case 15: wcscpy_s(column, 99, L
"Law Offices");
break;
303 case 16: wcscpy_s(column, 99, L
"Police Station");
break;
304 default:wcscpy_s(column, 99, L
"UNKNOWN");
break;
306 wcscat_s(row, 999, column);
311 swprintf_s(column, 99, L
"SCAN DATA NOT INITIALIZED");
312 wcscat_s(row, 999, column);
316 RenderRow(row, 0xFFFFFFFF, rowId++,
"Bay", i);
327 float stowageWeightLbs;
333 swprintf_s(row, 999, L
"Stowage %6.0f ", stowageWeightLbs /
Kg2Lbs);
336 case CargoLoadType::Passengers: swprintf_s(column, 99, L
"Pax Ticketed %i ",
ourcockpit.
cargoload);
break;
337 case CargoLoadType::Colonists: swprintf_s(column, 99, L
"Pax Laborers %i ",
ourcockpit.
cargoload);
break;
338 case CargoLoadType::Prisoners: swprintf_s(column, 99, L
"Pax Prisoners %i ",
ourcockpit.
cargoload);
break;
342 wcscat_s(row, 999, column);
346 case 0: wcscpy_s(column, 99, L
"Undeclared");
break;
347 case 1: wcscpy_s(column, 99, L
"Deois Airport");
break;
348 case 2: wcscpy_s(column, 99, L
"LA Eyeworks");
break;
349 case 3: wcscpy_s(column, 99, L
"Fleet Bank");
break;
350 case 4: wcscpy_s(column, 99, L
"ATI Tower");
break;
351 case 5: wcscpy_s(column, 99, L
"Zana Zoom's");
break;
352 case 6: wcscpy_s(column, 99, L
"UI Building");
break;
353 case REF_DOCKCPOC: wcscpy_s(column, 99, L
"CPOC");
break;
354 case REF_DOCKTAC: wcscpy_s(column, 99, L
"TAC");
break;
355 case 12: wcscpy_s(column, 99, L
"Arcridge");
break;
356 case 13: wcscpy_s(column, 99, L
"Junk Ore Inc");
break;
357 case 14: wcscpy_s(column, 99, L
"Deois Airport");
break;
358 case 15: wcscpy_s(column, 99, L
"Law Offices");
break;
359 case 16: wcscpy_s(column, 99, L
"Police Station");
break;
360 default:wcscpy_s(column, 99, L
"UNKNOWN");
break;
362 wcscat_s(row, 999, column);
367 swprintf_s(row, 999, L
"Stowage %6.0f ", stowageWeightLbs /
Kg2Lbs);
370 case CargoLoadType::None: swprintf_s(column, 99, L
" ");
break;
371 case CargoLoadType::CargoRare: swprintf_s(column, 99, L
"Cargo Rare %i MT ",
ourcockpit.
cargoload);
break;
372 case CargoLoadType::CargoFood: swprintf_s(column, 99, L
"Cargo Foodstuffs %i MT ",
ourcockpit.
cargoload);
break;
373 case CargoLoadType::CargoCommon: swprintf_s(column, 99, L
"Cargo Common %i MT ",
ourcockpit.
cargoload);
break;
374 case CargoLoadType::CargoFuelOre: swprintf_s(column, 99, L
"Cargo Fuel Ore %i MT ",
ourcockpit.
cargoload);
break;
375 case CargoLoadType::CargoGoods: swprintf_s(column, 99, L
"Cargo Consumer %i MT ",
ourcockpit.
cargoload);
break;
376 case CargoLoadType::CargoFab: swprintf_s(column, 99, L
"Cargo Fabricated %i MT ",
ourcockpit.
cargoload);
break;
377 case CargoLoadType::Residential: swprintf_s(column, 99, L
"Estate %ix ",
ourcockpit.
cargoload);
break;
378 case CargoLoadType::Mining: swprintf_s(column, 99, L
"Mine %ix ",
ourcockpit.
cargoload);
break;
379 case CargoLoadType::Farmstead: swprintf_s(column, 99, L
"Farmstead %ix ",
ourcockpit.
cargoload);
break;
380 case CargoLoadType::Township: swprintf_s(column, 99, L
"Township %ix ",
ourcockpit.
cargoload);
break;
381 case CargoLoadType::Airfield: swprintf_s(column, 99, L
"Airfield %ix ",
ourcockpit.
cargoload);
break;
385 wcscat_s(row, 999, column);
388 totalWeightLbs += stowageWeightLbs;
395 float inventoryWeight = 0.0f;
398 case 1: wcscpy_s(column, 99, L
"Lock Pick Set"); inventoryWeight = 1.48f;
break;
399 case 2: wcscpy_s(column, 99, L
"Binoculars"); inventoryWeight = 3.2f;
break;
400 case 3: wcscpy_s(column, 99, L
"ATM"); inventoryWeight = 209.0f;
break;
401 case 4: wcscpy_s(column, 99, L
"Night Vision"); inventoryWeight = 3.2f;
break;
402 case 5: wcscpy_s(column, 99, L
"E-11 Upgrade Voucher"); inventoryWeight = 0.0f;
break;
403 case 6: wcscpy_s(column, 99, L
"Sunglasses"); inventoryWeight = 0.1f;
break;
404 case 7: wcscpy_s(column, 99, L
"Fireworks"); inventoryWeight = 178.0f;
break;
405 case 8: wcscpy_s(column, 99, L
"Temp Runway Lights"); inventoryWeight = 495.0f;
break;
406 case 9: wcscpy_s(column, 99, L
"Colony Up-link"); inventoryWeight = 40.0f;
break;
407 default: wcscpy_s(column, 99, L
"UNKNOWN"); inventoryWeight = 0.0f;
break;
410 swprintf_s(row, 999, L
"Baggage %6.0f %s", inventoryWeight /
Kg2Lbs, column);
412 swprintf_s(row, 999, L
" %6.0f %s", inventoryWeight /
Kg2Lbs, column);
414 RenderRow(row, 0xFFAAAAAA, rowId++,
"Baggage", i);
415 totalWeightLbs += inventoryWeight;
418 swprintf_s(row, 999, L
"Baggage %6.0f Cash (CR) %.0f",
cash*0.001f,
cash);
420 swprintf_s(row, 999, L
" %6.0f Cash (CR) %.0f",
cash*0.001f,
cash);
429 float inventoryWeight = 0.0f;
432 case KitType::LockPick:
433 wcscpy_s(column, 99, L
"Lock Pick Set"); inventoryWeight = 1.48f;
break;
434 case KitType::Binoculars:
435 wcscpy_s(column, 99, L
"Binoculars"); inventoryWeight = 3.2f;
break;
437 wcscpy_s(column, 99, L
"ATM"); inventoryWeight = 209.0f;
break;
438 case KitType::NightVision:
439 wcscpy_s(column, 99, L
"Night Vision"); inventoryWeight = 3.2f;
break;
440 case KitType::E11Upgrade:
441 wcscpy_s(column, 99, L
"E-11 Upgrade Voucher"); inventoryWeight = 0.0f;
break;
442 case KitType::Sunglasses:
443 wcscpy_s(column, 99, L
"Sunglasses"); inventoryWeight = 0.1f;
break;
444 case KitType::Firework:
445 wcscpy_s(column, 99, L
"Fireworks"); inventoryWeight = 178.0f;
break;
446 case KitType::TemporaryRunwayLighting:
447 wcscpy_s(column, 99, L
"Temp Runway Lights"); inventoryWeight = 495.0f;
break;
448 case KitType::UpLink:
449 wcscpy_s(column, 99, L
"Colony Up-link"); inventoryWeight = 40.0f;
break;
450 default: wcscpy_s(column, 99, L
"UNKNOWN"); inventoryWeight = 0.0f;
break;
453 swprintf_s(row, 999, L
"Cabin %6.0f %s", inventoryWeight /
Kg2Lbs, column);
455 swprintf_s(row, 999, L
" %6.0f %s", inventoryWeight /
Kg2Lbs, column);
457 RenderRow(row, 0xFFAAAAAA, rowId++,
"Cabin", i);
458 totalWeightLbs += inventoryWeight;
463 swprintf_s(row, 999, L
"Total Weight %6.0f ", totalWeightLbs /
Kg2Lbs);
465 if (totalWeightLbs >= 300000.0f)
466 wcscat_s(row, 999, L
"Heavy ");
468 wcscat_s(row, 999, L
" ");
470 swprintf_s(column, 99, L
"%i Souls", totalSouls);
471 wcscat_s(row, 999, column);
474 RenderRow(row, D3DCOLOR_ARGB(255, 255, 0, 0), rowId++);
475 else if (loadedC > 0.75f)
476 RenderRow(row, D3DCOLOR_ARGB(255, 255, 255, 0), rowId++);
478 RenderRow(row, D3DCOLOR_ARGB(255, 0, 255, 0), rowId++);
484 DrawTextW(L
"Shift+U Unload Shift+S Scan Shift+F Fuel", 0, 300, 0, DT_NOCLIP, 0xFF00A0A0, 0);
488 DrawTextW(L
"Shift+U Use Shift+S Swap Shift+T Transfr", 0, 300, 0, DT_NOCLIP, 0xFF00A0A0, 0);
492 DrawTextW(L
"Shift+J Jettison", 0, 300, 0, DT_NOCLIP, 0xFF00A0A0, 0);
496 DrawTextW(L
"Shift+U Use", 0, 300, 0, DT_NOCLIP, 0xFF00A0A0, 0);
504 if (!shift || key == 42)
return false;
525 command.
name =
"UnloadCargoBay";
535 command.
name =
"UseInventoryItem";
544 command.
name =
"ToggleAvionics";
556 command.
name =
"ChangeMfdPage";
557 command.
sValue =
"Scanner";
560 command.
name =
"ScanCargoBay";
569 command.
name =
"SwapInventoryItem";
579 command.
name =
"SwapInventoryItem";
613 command.
name =
"TransferInventoryItem";
623 command.
name =
"TransferInventoryItem";
std::vector< Command > commandStream
Nullable< float > weightLbs
CargoManagement(int prmX, int prmY, float prmXScale, float prmYScale, Bus *prmBus, Logger *prmLogger, DeviceObject *prmDevice, std::vector< Font *> prmFonts)
s_network_objects playerships[MAX_SCAN]
unsigned char cargoloadtype
unsigned char playerWeightKg
std::vector< unsigned char > personalInventory
#define weaponsinkerreadyC
Nullable< unsigned short > load_quantity
void RenderRow(const WCHAR *row, DWORD color, int rowId, std::string type="", int value=0)
Nullable< short > load_dest
#define weaponlongarmreadyC
unsigned short temptarget
void Log(const char *msg, Level level=Info, int errorCode=0)
unsigned short CargoBays[MAX_PODSPERSHIP]
#define weaponfuzerreadyC
Sscan Get(USHORT vehicleId) const
Nullable< unsigned char > load_type
void AddToCallStack(const char *msg)
std::vector< unsigned char > vehicleInventory
bool HandleKeyPress(short key, bool shift) override