diff options
Diffstat (limited to '')
-rw-r--r-- | nodejs/lib/utils.ts | 25 |
1 files changed, 25 insertions, 0 deletions
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<T extends Point>(a: Point, points: Array<T>): 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('-'); } |