ripcrypt/module/utils/distanceBetweenFates.mjs

33 lines
890 B
JavaScript

import { gameTerms } from "../gameTerms.mjs";
import { Logger } from "./Logger.mjs";
const { FatePath } = gameTerms;
export function isOppositeFates(a, b) {
return (a === FatePath.NORTH && b === FatePath.SOUTH)
|| (a === FatePath.EAST && b === FatePath.WEST);
};
export function distanceBetweenFates(start, end) {
if (!start || !end) {
Logger.error(`Start and End must both have a defined value, given`, {start, end});
return undefined;
};
if (start === end) {
return 0;
};
if (isOppositeFates(start, end) || isOppositeFates(end, start)) {
return 2;
};
let isForward = start === FatePath.SOUTH && end === FatePath.WEST;
isForward ||= start === FatePath.NORTH && end === FatePath.EAST;
isForward ||= start === FatePath.WEST && end === FatePath.NORTH;
isForward ||= start === FatePath.EAST && end === FatePath.SOUTH;
if (isForward) {
return 1;
};
return 3;
};