79 lines
1.8 KiB
TypeScript
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,
|
|
};
|
|
}
|