Internal support for legacy launch pads (hidden)

This commit is contained in:
Anuken
2025-02-03 19:27:08 -05:00
parent 55e32f9580
commit 4e225f9190
11 changed files with 69 additions and 16 deletions

View File

@@ -168,6 +168,33 @@ public class Universe{
continue;
}
if(planet.campaignRules.legacyLaunchPads){
//first pass: clear import stats
for(Sector sector : planet.sectors){
if(sector.hasBase() && !sector.isBeingPlayed()){
sector.info.lastImported.clear();
}
}
//second pass: update export & import statistics
for(Sector sector : planet.sectors){
if(sector.hasBase() && !sector.isBeingPlayed()){
//export to another sector
if(sector.info.destination != null){
Sector to = sector.info.destination;
if(to.hasBase() && to.planet == planet){
ItemSeq items = new ItemSeq();
//calculated exported items to this sector
sector.info.export.each((item, stat) -> items.add(item, (int)(stat.mean * newSecondsPassed * sector.getProductionScale())));
to.addItems(items);
to.info.lastImported.add(items);
}
}
}
}
}
//third pass: everything else
for(Sector sector : planet.sectors){
if(sector.hasBase()){
@@ -229,13 +256,15 @@ public class Universe{
//add production, making sure that it's capped
sector.info.production.each((item, stat) -> sector.info.items.add(item, Math.min((int)(stat.mean * newSecondsPassed * scl), sector.info.storageCapacity - sector.info.items.get(item))));
sector.info.export.each((item, stat) -> {
if(sector.info.items.get(item) <= 0 && sector.info.production.get(item, ExportStat::new).mean < 0 && stat.mean > 0){
//cap export by import when production is negative.
//TODO remove
stat.mean = Math.min(0f, stat.mean);
}
});
if(planet.campaignRules.legacyLaunchPads){
sector.info.export.each((item, stat) -> {
if(sector.info.items.get(item) <= 0 && sector.info.production.get(item, ExportStat::new).mean < 0 && stat.mean > 0){
//cap export by import when production is negative.
//TODO remove
stat.mean = Math.min(sector.info.lastImported.get(item) / (float)newSecondsPassed, stat.mean);
}
});
}
//prevent negative values with unloaders
sector.info.items.checkNegative();