import type { GameConfig } from "@deadhead/content"; /** XP for one delivery, in whole points: base + per-million-km × distance + per-tier × tier. */ export function deliveryXp(distanceMillionKm: number, tier: number, config: GameConfig): number { const { base, perMillionKm, perCargoTier } = config.xpPerDelivery; return Math.round(base + perMillionKm * distanceMillionKm + perCargoTier * tier); } /** Pilot level: how many level thresholds the pilot's total XP has reached. */ export function pilotLevel(totalXp: number, config: GameConfig): number { return config.pilotLevelXpThresholds.filter((threshold) => totalXp >= threshold).length; } /** Unspent skill points: levels × points per level minus points spent, never below 0. */ export function skillPointsAvailable( level: number, pointsSpent: number, config: GameConfig, ): number { return Math.max(0, level * config.skillPointsPerLevel - pointsSpent); }