diff --git a/src/app/components/PlanetaryInteraction/ExtractionSimulationTooltip.tsx b/src/app/components/PlanetaryInteraction/ExtractionSimulationTooltip.tsx index 766ce0a..baacaac 100644 --- a/src/app/components/PlanetaryInteraction/ExtractionSimulationTooltip.tsx +++ b/src/app/components/PlanetaryInteraction/ExtractionSimulationTooltip.tsx @@ -166,6 +166,39 @@ export const ExtractionSimulationTooltip: React.FC ); })} + {extractors.length === 2 && ( + + + Balance + + + {extractors.map((extractor, index) => { + const averagePerHour = (extractor.baseValue * 3600) / extractor.cycleTime; + return ( + + • {PI_TYPES_MAP[extractor.typeId]?.name}: {averagePerHour.toFixed(1)} u/h + + ); + })} + + Difference: {Math.abs( + (extractors[0].baseValue * 3600 / extractors[0].cycleTime) - + (extractors[1].baseValue * 3600 / extractors[1].cycleTime) + ).toFixed(1)} u/h + + + + )} diff --git a/src/app/components/PlanetaryInteraction/PlanetTableRow.tsx b/src/app/components/PlanetaryInteraction/PlanetTableRow.tsx index 35d6402..f756a5f 100644 --- a/src/app/components/PlanetaryInteraction/PlanetTableRow.tsx +++ b/src/app/components/PlanetaryInteraction/PlanetTableRow.tsx @@ -100,6 +100,21 @@ export const PlanetTableRow = ({ factoryCount: schematic.count || 1 })); + // Calculate extractor averages and check for large differences + const extractorAverages = extractors + .filter(e => e.extractor_details?.product_type_id && e.extractor_details?.qty_per_cycle) + .map(e => { + const cycleTime = e.extractor_details?.cycle_time || 3600; + const qtyPerCycle = e.extractor_details?.qty_per_cycle || 0; + return { + typeId: e.extractor_details!.product_type_id!, + averagePerHour: (qtyPerCycle * 3600) / cycleTime + }; + }); + + const hasLargeExtractorDifference = extractorAverages.length === 2 && + Math.abs(extractorAverages[0].averagePerHour - extractorAverages[1].averagePerHour) > 1000; + const storageFacilities = planetInfo.pins.filter(pin => STORAGE_IDS().some(storage => storage.type_id === pin.type_id) ); @@ -189,9 +204,23 @@ export const PlanetTableRow = ({ } }} > - - {planetInfoUniverse?.name} - + + + {planetInfoUniverse?.name} + + {hasLargeExtractorDifference && ( + + off-balance + + )} + @@ -415,38 +444,18 @@ export const PlanetTableRow = ({ - e.extractor_details?.product_type_id && e.extractor_details?.qty_per_cycle) - .map(e => ({ - typeId: e.extractor_details!.product_type_id!, - baseValue: e.extractor_details!.qty_per_cycle!, - cycleTime: e.extractor_details!.cycle_time || 3600, - installTime: e.install_time ?? "", - expiryTime: e.expiry_time ?? "" - }))} - /> - } - componentsProps={{ - tooltip: { - sx: { - bgcolor: 'background.paper', - '& .MuiTooltip-arrow': { - color: 'background.paper', - }, - } - } - }} - > -
- - {planetInfoUniverse?.name} - -
-
+ e.extractor_details?.product_type_id && e.extractor_details?.qty_per_cycle) + .map(e => ({ + typeId: e.extractor_details!.product_type_id!, + baseValue: e.extractor_details!.qty_per_cycle!, + cycleTime: e.extractor_details!.cycle_time || 3600, + installTime: e.install_time ?? "", + expiryTime: e.expiry_time ?? "" + }))} + productionNodes={productionNodes} + />