diff options
author | Julien Dessaux | 2024-03-29 00:24:51 +0100 |
---|---|---|
committer | Julien Dessaux | 2024-03-29 00:24:51 +0100 |
commit | 719a9c1a77733040de8e1c4256b92111dcc53c13 (patch) | |
tree | 4cc20d3a386507085840b8880ad4350754fbecf2 | |
parent | [node] stop trying to optimize useless things like local database calls (diff) | |
download | spacetraders-719a9c1a77733040de8e1c4256b92111dcc53c13.tar.gz spacetraders-719a9c1a77733040de8e1c4256b92111dcc53c13.tar.bz2 spacetraders-719a9c1a77733040de8e1c4256b92111dcc53c13.zip |
[node] fixed mining and selling loop issues
Diffstat (limited to '')
-rw-r--r-- | nodejs/automation/contracting.ts | 8 | ||||
-rw-r--r-- | nodejs/automation/mining.ts | 7 | ||||
-rw-r--r-- | nodejs/automation/selling.ts | 4 | ||||
-rw-r--r-- | nodejs/lib/ships.ts | 7 |
4 files changed, 15 insertions, 11 deletions
diff --git a/nodejs/automation/contracting.ts b/nodejs/automation/contracting.ts index 344672a..ab3c606 100644 --- a/nodejs/automation/contracting.ts +++ b/nodejs/automation/contracting.ts @@ -58,9 +58,11 @@ async function runProcurement(contract: Contract, ships: Array<Ship>) { await libShips.navigate(ship, asteroidSymbol); break; default: - // we were either selling or started contracting - await selling.sell(ship, wantedCargo); - await libShips.navigate(ship, asteroidSymbol); + if (libShips.isFull(ship)) { + await selling.sell(ship, wantedCargo); + } else { + await libShips.navigate(ship, asteroidSymbol); + } } } // TODO repurpose the ship diff --git a/nodejs/automation/mining.ts b/nodejs/automation/mining.ts index e1230fd..b9db7d4 100644 --- a/nodejs/automation/mining.ts +++ b/nodejs/automation/mining.ts @@ -20,12 +20,9 @@ export async function mineUntilFullOf(good: string, ship: Ship, asteroidSymbol: } } -// example ctx { symbol: 'ADYXAX-2' } -// extract the ship's cargo contents when more than 80% full then returns the ships cargo object async function mineUntilFull(ship: Ship): Promise<void> { - ship = dbShips.getShip(ship.symbol) as Ship; - while (ship.cargo.units <= ship.cargo.capacity * 0.9) { - ship.cargo = await libShips.extract(ship); + while (!libShips.isFull(ship)) { + await libShips.extract(ship); } } diff --git a/nodejs/automation/selling.ts b/nodejs/automation/selling.ts index 987b8ae..04b0e9d 100644 --- a/nodejs/automation/selling.ts +++ b/nodejs/automation/selling.ts @@ -19,10 +19,10 @@ export async function sell(ship: Ship, good: string): Promise<Ship> { // can we sell anything here? const goods = whatCanBeTradedAt(cargo.goods, market.imports.concat(market.exchange)); for (let i = 0; i < goods.length; i++) { - const symbol = goods[i].symbol; - await libShips.sell(ship, good); + await libShips.sell(ship, goods[i].symbol); }; // are we done selling everything we can? + ship = dbShips.getShip(ship.symbol); cargo = utils.categorizeCargo(ship.cargo, good); if (Object.keys(cargo.goods).length === 0) { return ship; diff --git a/nodejs/lib/ships.ts b/nodejs/lib/ships.ts index 79b20a6..c673698 100644 --- a/nodejs/lib/ships.ts +++ b/nodejs/lib/ships.ts @@ -28,7 +28,7 @@ export async function dock(ship: Ship): Promise<void> { export async function extract(ship: Ship): Promise<Cargo> { ship = dbShips.getShip(ship.symbol); - if (ship.cargo.units >= ship.cargo.capacity * 0.9) return ship.cargo; + if (isFull(ship)) return ship.cargo; // TODO move to a suitable asteroid? // const asteroidFields = await systems.type({symbol: ship.nav.systemSymbol, type: 'ENGINEERED_ASTEROID'}); // TODO if there are multiple fields, find the closest one? @@ -55,6 +55,11 @@ export async function extract(ship: Ship): Promise<Cargo> { return response.data.cargo } +export function isFull(ship: Ship): boolean { + ship = dbShips.getShip(ship.symbol); + return ship.cargo.units >= ship.cargo.capacity * 0.9; +} + //function hasMount(shipSymbol, mountSymbol) { // const ship = dbShips.getShip(shipSymbol); // return ship.mounts.filter(s => s.symbol === mountSymbol).length > 0; |