import type { AetherShipKind } from "../game/aetherAssault"; export const AETHER_STANDARD_SHIP_COLORS = [ "#20c8e8", "#8a5cff", "#f044b5", "#31cf74", "#f06b3c", "#d6b91c", ] as const; export const AETHER_ARMORED_SHIP_COLORS = [ "#9ef5ff", "#d0b8ff", "#ff9bdc", "#9af0b8", "#ffb088", "#ffe976", ] as const; export function aetherShipColorIndex(seed: number, wave: number, shipIndex: number) { const normalizedSeed = Math.floor(Number.isFinite(seed) ? seed : 0) >>> 0; const mixedSeed = (normalizedSeed ^ (normalizedSeed >>> 16)) >>> 0; const normalizedWave = Math.max(1, Math.floor(Number.isFinite(wave) ? wave : 1)); const normalizedIndex = Math.max(0, Math.floor(Number.isFinite(shipIndex) ? shipIndex : 0)); return (mixedSeed + (normalizedWave - 1) * 3 + normalizedIndex * 5) % AETHER_STANDARD_SHIP_COLORS.length; } export function aetherShipColor(seed: number, wave: number, shipIndex: number, kind: AetherShipKind) { const palette = kind === "armored" ? AETHER_ARMORED_SHIP_COLORS : AETHER_STANDARD_SHIP_COLORS; return palette[aetherShipColorIndex(seed, wave, shipIndex)]; }