|
|
@@ -64,7 +64,8 @@ def main() -> None:
|
|
|
buys: dict[str, dict[str, int]] = {}
|
|
|
iteration_weight = iteration_volume = 0
|
|
|
for planet in planets:
|
|
|
- buy, weight_used, volume_used = planet.buy_for_target(materials, target_days)
|
|
|
+ buy = planet.buy_for_target(target_days)
|
|
|
+ weight_used, volume_used = shipping_used(materials, buy)
|
|
|
iteration_weight += weight_used
|
|
|
iteration_volume += volume_used
|
|
|
if iteration_weight > args.weight or iteration_volume > args.volume:
|
|
|
@@ -141,6 +142,13 @@ def get_fio_burn(planet_names: typing.Sequence[str]) -> typing.Iterator[FIOBurn]
|
|
|
else:
|
|
|
raise ValueError(name + ' not found')
|
|
|
|
|
|
+def shipping_used(materials: dict[str, Material], buy: dict[str, int]) -> tuple[float, float]:
|
|
|
+ weight = volume = 0
|
|
|
+ for ticker, amount in buy.items():
|
|
|
+ weight += amount * materials[ticker]['Weight']
|
|
|
+ volume += amount * materials[ticker]['Volume']
|
|
|
+ return weight, volume
|
|
|
+
|
|
|
def cyan(text: str) -> str:
|
|
|
return '\033[36m' + text + '\033[0m'
|
|
|
|
|
|
@@ -173,8 +181,7 @@ class Planet:
|
|
|
c['net_consumption'] = net
|
|
|
self.net_consumption.append(c)
|
|
|
|
|
|
- def buy_for_target(self, materials: dict[str, Material], target_days: float) -> tuple[dict[str, int], float, float]:
|
|
|
- weight_used = volume_used = 0
|
|
|
+ def buy_for_target(self, target_days: float) -> dict[str, int]:
|
|
|
buy: dict[str, int] = {}
|
|
|
for consumption in self.net_consumption:
|
|
|
ticker = consumption['MaterialTicker']
|
|
|
@@ -183,9 +190,7 @@ class Planet:
|
|
|
days = avail / daily_consumption
|
|
|
if days < target_days:
|
|
|
buy[ticker] = math.ceil((target_days - days) * daily_consumption)
|
|
|
- weight_used += buy[ticker] * materials[ticker]['Weight']
|
|
|
- volume_used += buy[ticker] * materials[ticker]['Volume']
|
|
|
- return buy, weight_used, volume_used
|
|
|
+ return buy
|
|
|
|
|
|
class Amount(typing.TypedDict):
|
|
|
MaterialTicker: str
|