Files
horse/zenno/src/lib/alpha123Umalator.ts
2026-05-22 23:22:28 -04:00

79 lines
1.8 KiB
TypeScript

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,
};
}