From 3e80bc8a4d3127d17dbc3f52301d33a79e53a980 Mon Sep 17 00:00:00 2001 From: Julien Dessaux Date: Sat, 6 Apr 2024 21:36:42 +0200 Subject: [node] multiple contracting fixes and some more refactoring --- nodejs/lib/utils.ts | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'nodejs/lib/utils.ts') diff --git a/nodejs/lib/utils.ts b/nodejs/lib/utils.ts index 39378e9..480e7a4 100644 --- a/nodejs/lib/utils.ts +++ b/nodejs/lib/utils.ts @@ -5,6 +5,11 @@ export type CategorizedCargo = { goods: CargoManifest; }; +type Point = { + x: number; + y: number; +}; + // cargo is a ship.cargo object, want is an optional symbol export function categorizeCargo(cargo: Cargo, want?: string): CategorizedCargo { const wanted = cargo.inventory.filter(i => i.symbol === want || i.symbol === 'ANTIMATTER'); @@ -20,6 +25,26 @@ export function categorizeCargo(cargo: Cargo, want?: string): CategorizedCargo { return {wanted: wobj, goods: gobj}; } +export function distance(a: Point, b: Point) { + return Math.sqrt((a.x-b.x)**2 + (a.y-b.y)**2); +} + +export function sortByDistanceFrom(a: Point, points: Array): Array<{data: T, distance: number}>{ + let result = points.map(function (m) { return { + data: m, + distance: distance(a, m), + }}); + result.sort(function(a, b) { + if (a.distance < b.distance) { + return -1; + } else if (a.distance > b.distance) { + return 1; + } + return 0; + }); + return result; +} + export function systemFromWaypoint(waypoint: string): string { return waypoint.split('-').slice(0,2).join('-'); } -- cgit v1.2.3