From 68c457964a02d290f3fe225b090c549d664bb836 Mon Sep 17 00:00:00 2001 From: Julien Dessaux Date: Thu, 1 Jun 2023 01:11:21 +0200 Subject: Another big refactoring --- automation/automation.js | 26 ++++++++++++++++++++++++++ automation/contracting.js | 6 +++--- automation/exploration.js | 20 ++++++++++++++++++++ automation/mining.js | 7 ++++--- 4 files changed, 53 insertions(+), 6 deletions(-) create mode 100644 automation/automation.js create mode 100644 automation/exploration.js (limited to 'automation') diff --git a/automation/automation.js b/automation/automation.js new file mode 100644 index 0000000..c7fa6f7 --- /dev/null +++ b/automation/automation.js @@ -0,0 +1,26 @@ +import * as dbConfig from '../database/config.js'; +import * as dbShips from '../database/ships.js'; +import * as exploration from './exploration.js'; + +// This function registers then inits the database +export async function register(symbol, faction) { + const response = await fetch('https://api.spacetraders.io/v2/register', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + symbol: symbol, + faction: faction, + }), + }); + const json = await response.json(); + console.log(JSON.stringify(response, null, 2)); + if (response.error !== undefined) { + throw response; + } + dbConfig.registerAgent(json.data); + exploration.init(); + // TODO ship + // TODO contract +} diff --git a/automation/contracting.js b/automation/contracting.js index aebb265..b5c7292 100644 --- a/automation/contracting.js +++ b/automation/contracting.js @@ -34,14 +34,14 @@ export async function auto(ctx) { await ships.navigate({ship: ctx.ship, waypoint: deliveryPoint}); break; case deliveryPoint: - await ships.dock({ship: ctx.ship}); + await ships.dock({symbol: ctx.ship}); await ships.refuel({ship: ctx.ship}); console.log(`delivering ${goodCargo.units} of ${good}`); await contracts.deliver({contract: contract.id, ship: ctx.ship, good: good, units: goodCargo.units }); await ships.navigate({ship: ctx.ship, waypoint: asteroidField}); - await ships.dock({ship: ctx.ship}); + await ships.dock({symbol: ctx.ship}); await ships.refuel({ship: ctx.ship}); - await ships.orbit({ship: ctx.ship}); + await ships.orbit({symbol: ctx.ship}); break; default: throw `where is the ship?`; diff --git a/automation/exploration.js b/automation/exploration.js new file mode 100644 index 0000000..9ea5bf8 --- /dev/null +++ b/automation/exploration.js @@ -0,0 +1,20 @@ +import * as db from '../database/systems.js'; + +// Retrieves all systems information, should be called only once after registering +export async function init() { + if (db.isInit()) { + return; + } + for (let page=1; true; ++page) { + const response = await api.send({endpoint: `/systems?limit=20&page=${page}`, priority:100}); + if (response.error !== undefined) { + throw response; + } + response.data.forEach(system => db.setSystem(system)); + if (response.meta.total <= response.meta.limit * page) { + break; + } + } + console.log('Finished retrieving all systems information'); + db.init(); +} diff --git a/automation/mining.js b/automation/mining.js index bdd89ac..a719bff 100644 --- a/automation/mining.js +++ b/automation/mining.js @@ -13,13 +13,13 @@ export async function mineUntilFullOf(ctx) { if (good?.units + (antimatter?.units ?? 0) >= response.data.cargo.capacity * 0.9) { // > 90% full of the valuable goods return good.units; } else { // we are full but need to sell junk - await ships.dock({ship: ctx.ship}); + await ships.dock({symbol: ctx.ship}); for (let i=0; i= response.data.cargo.capacity * 0.9) return response; } } + +// TODO surveying the asteroid field -- cgit v1.2.3