import { AptitudeLevel, Mood, RunningStyle } from './race'; import type { Runner } from './runner'; const aptMap = { G: AptitudeLevel.G, F: AptitudeLevel.F, E: AptitudeLevel.E, D: AptitudeLevel.D, C: AptitudeLevel.C, B: AptitudeLevel.B, A: AptitudeLevel.A, S: AptitudeLevel.S, } as const; type AptitudeString = keyof typeof aptMap; const styleMap = { Nige: RunningStyle.FrontRunner, Sentou: RunningStyle.PaceChaser, Sasi: RunningStyle.LateSurger, Oikomi: RunningStyle.EndCloser, Oonige: RunningStyle.GreatEscape, } as const; export interface ImportUma { outfitId: string; starCount: number; speed: number; stamina: number; power: number; guts: number; wisdom: number; strategy: keyof typeof styleMap; distanceAptitude: AptitudeString; surfaceAptitude: AptitudeString; strategyAptitude: AptitudeString; aptitudes: [ AptitudeString, AptitudeString, AptitudeString, AptitudeString, AptitudeString, AptitudeString, AptitudeString, AptitudeString, AptitudeString, AptitudeString, ]; skills: string[]; uniqueLv: number; mood: Mood; popularity: number; } export function load(obj: ImportUma, name?: string): Runner { return { name: name ?? '', chara_card_id: obj.outfitId !== '' ? parseInt(obj.outfitId) : 0, style: styleMap[obj.strategy], mood: obj.mood, speed: obj.speed, stamina: obj.stamina, power: obj.power, guts: obj.guts, wit: obj.wisdom, sprint: aptMap[obj.aptitudes[0]], mile: aptMap[obj.aptitudes[1]], medium: aptMap[obj.aptitudes[2]], long: aptMap[obj.aptitudes[3]], front: aptMap[obj.aptitudes[4]], pace: aptMap[obj.aptitudes[5]], late: aptMap[obj.aptitudes[6]], end: aptMap[obj.aptitudes[7]], turf: aptMap[obj.aptitudes[8]], dirt: aptMap[obj.aptitudes[9]], skills: obj.skills.map((s) => parseInt(s)), unique_level: obj.uniqueLv, }; }