summaryrefslogtreecommitdiff
path: root/nodejs/lib/utils.ts
diff options
context:
space:
mode:
Diffstat (limited to 'nodejs/lib/utils.ts')
-rw-r--r--nodejs/lib/utils.ts25
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('-');
}