mirror of
https://github.com/Pandipipas/scoreko-dev.git
synced 2026-06-06 11:42:06 +00:00
Load character names from downloaded game assets
This commit is contained in:
@@ -11,224 +11,6 @@ type GamePalette = readonly [startColor: string, endColor: string];
|
||||
const DEFAULT_PLACEHOLDER_PALETTE: GamePalette = ['#334155', '#0f172a'];
|
||||
const MAX_INITIALS = 2;
|
||||
|
||||
const characterNamesByGame: Record<string, string[]> = {
|
||||
'Guilty Gear -Strive-': [
|
||||
'A.B.A',
|
||||
'Anji Mito',
|
||||
'Asuka R. Kreutz',
|
||||
'Axl Low',
|
||||
'Baiken',
|
||||
'Bedman?',
|
||||
'Bridget',
|
||||
'Chipp Zanuff',
|
||||
'Dizzy',
|
||||
'Elphelt Valentine',
|
||||
'Faust',
|
||||
'Giovanna',
|
||||
'Goldlewis Dickinson',
|
||||
'Happy Chaos',
|
||||
'I-No',
|
||||
'Jack-O',
|
||||
'Johnny',
|
||||
'Ky Kiske',
|
||||
'Leo Whitefang',
|
||||
'Lucy',
|
||||
'May',
|
||||
'Millia Rage',
|
||||
'Nagoriyuki',
|
||||
'Potemkin',
|
||||
'Ramlethal Valentine',
|
||||
'Sin Kiske',
|
||||
'Slayer',
|
||||
'Sol Badguy',
|
||||
'Testament',
|
||||
'Unika',
|
||||
'Venom',
|
||||
'Zato-1',
|
||||
],
|
||||
'Street Fighter 6': [
|
||||
'A.K.I.',
|
||||
'Akuma',
|
||||
'Alex',
|
||||
'Bison',
|
||||
'Blanka',
|
||||
'Cammy',
|
||||
'Chun-Li',
|
||||
'Dee Jay',
|
||||
'Dhalsim',
|
||||
'E. Honda',
|
||||
'Ed',
|
||||
'Elena',
|
||||
'Guile',
|
||||
'Jamie',
|
||||
'JP',
|
||||
'Juri',
|
||||
'Ken',
|
||||
'Kimberly',
|
||||
'Lily',
|
||||
'Luke',
|
||||
'Mai',
|
||||
'Manon',
|
||||
'Marisa',
|
||||
'Rashid',
|
||||
'Ryu',
|
||||
'Sagat',
|
||||
'Terry',
|
||||
'Viper',
|
||||
'Zangief',
|
||||
],
|
||||
'TEKKEN 8': [
|
||||
'Alisa',
|
||||
'Anna',
|
||||
'Armor King',
|
||||
'Asuka',
|
||||
'Azucena',
|
||||
'Bob',
|
||||
'Bryan',
|
||||
'Claudio',
|
||||
'Clive',
|
||||
'Devil Jin',
|
||||
'Dragunov',
|
||||
'Eddy',
|
||||
'Fahkumram',
|
||||
'Feng',
|
||||
'Heihachi',
|
||||
'Hwoarang',
|
||||
'Jack-8',
|
||||
'Jin',
|
||||
'Jun',
|
||||
'Kazuya',
|
||||
'King',
|
||||
'Kuma',
|
||||
'Kunimitsu',
|
||||
'Lars',
|
||||
'Law',
|
||||
'Lee',
|
||||
'Leo',
|
||||
'Leroy',
|
||||
'Lidia',
|
||||
'Lili',
|
||||
'Miary Zo',
|
||||
'Nina',
|
||||
'Panda',
|
||||
'Paul',
|
||||
'Raven',
|
||||
'Reina',
|
||||
'Roger Jr',
|
||||
'Shaheen',
|
||||
'Steve',
|
||||
'Victor',
|
||||
'Xiaoyu',
|
||||
'Yoshimitsu',
|
||||
'Zafina',
|
||||
],
|
||||
'2XKO': [
|
||||
'Ahri',
|
||||
'Akali',
|
||||
'Braum',
|
||||
'Caitlyn',
|
||||
'Darius',
|
||||
'Ekko',
|
||||
'Illaoi',
|
||||
'Jinx',
|
||||
'Senna',
|
||||
'Teemo',
|
||||
'Vi',
|
||||
'Warwick',
|
||||
'Yasuo',
|
||||
],
|
||||
'Mortal Kombat 1': [
|
||||
'Ashrah',
|
||||
'Baraka',
|
||||
'Conan the Barbarian',
|
||||
'Cyrax',
|
||||
'Ermac',
|
||||
'Geras',
|
||||
'Ghostface',
|
||||
'Havik',
|
||||
'Homelander',
|
||||
'Johnny Cage',
|
||||
'Kenshi',
|
||||
'Kitana',
|
||||
'Kung Lao',
|
||||
'Li Mei',
|
||||
'Liu Kang',
|
||||
'Mileena',
|
||||
'Nitara',
|
||||
'Noob Saibot',
|
||||
'Omni-Man',
|
||||
'Peacemaker',
|
||||
'Quan Chi',
|
||||
'Raiden',
|
||||
'Rain',
|
||||
'Reiko',
|
||||
'Reptile',
|
||||
'Scorpion',
|
||||
'Sektor',
|
||||
'Shang Tsung',
|
||||
'Sindel',
|
||||
'Smoke',
|
||||
'Sub-Zero',
|
||||
'Takeda',
|
||||
'Tanya',
|
||||
'T-1000',
|
||||
],
|
||||
'THE KING OF FIGHTERS XV': [
|
||||
'Angel',
|
||||
'Antonov',
|
||||
'Ash Crimson',
|
||||
'Athena Asamiya',
|
||||
'Benimaru Nikaido',
|
||||
'Billy Kane',
|
||||
'Blue Mary',
|
||||
'Chizuru Kagura',
|
||||
'Chris',
|
||||
'Clark Still',
|
||||
'Dolores',
|
||||
'Duo Lon',
|
||||
'Elisabeth Blanctorche',
|
||||
'Gato',
|
||||
'Geese Howard',
|
||||
'Goenitz',
|
||||
'Heidern',
|
||||
'Hinako Shijo',
|
||||
'Iori Yagami',
|
||||
'Isla',
|
||||
'Joe Higashi',
|
||||
"K'",
|
||||
'Kim Kaphwan',
|
||||
'King',
|
||||
'King of Dinosaurs',
|
||||
'Krohnen McDougall',
|
||||
'Kula Diamond',
|
||||
'Kukri',
|
||||
'Kyo Kusanagi',
|
||||
'Leona Heidern',
|
||||
'Luong',
|
||||
'Mai Shiranui',
|
||||
'Maxima',
|
||||
'Meitenkun',
|
||||
'Najd',
|
||||
'Orochi Chris',
|
||||
'Orochi Shermie',
|
||||
'Orochi Yashiro',
|
||||
'Ralf Jones',
|
||||
'Ramón',
|
||||
'Robert Garcia',
|
||||
'Rock Howard',
|
||||
'Ryo Sakazaki',
|
||||
'Ryuji Yamazaki',
|
||||
'Shermie',
|
||||
'Shingo Yabuki',
|
||||
'Sylvie Paula Paula',
|
||||
'Terry Bogard',
|
||||
'Vanessa',
|
||||
'Whip',
|
||||
'Yashiro Nanakase',
|
||||
'Yuri Sakazaki',
|
||||
],
|
||||
};
|
||||
|
||||
const defaultCharacterPairByGame: Record<string, { leftCharacter: string; rightCharacter: string }> = {
|
||||
'Guilty Gear -Strive-': {
|
||||
leftCharacter: 'sol-badguy',
|
||||
@@ -296,11 +78,6 @@ const buildCharacterPlaceholder = (game: string, character: string) => {
|
||||
return toDataUrl(svg.trim());
|
||||
};
|
||||
|
||||
const getCharacterAssetUrl = (game: string, characterValue: string) => {
|
||||
const gameSlug = toSlug(game);
|
||||
return `/bundles/scoreko-dev/game-assets/${gameSlug}/characters/${characterValue}.png`;
|
||||
};
|
||||
|
||||
const characterImageModules = import.meta.glob('/src/shared/character-images/**/*.{png,jpg,jpeg,webp,avif,svg}', {
|
||||
eager: true,
|
||||
import: 'default',
|
||||
@@ -335,25 +112,21 @@ const getBundledCharacterImage = (game: string, characterValue: string) => {
|
||||
return characterImageByKey[`${gameSlug}/${characterValue}`] ?? '';
|
||||
};
|
||||
|
||||
const getCharacterImage = (game: string, character: string, characterValue: string) => getCharacterAssetUrl(game, characterValue);
|
||||
export const getCharacterAssetUrl = (game: string, characterValue: string) => {
|
||||
const gameSlug = toSlug(game);
|
||||
return `/bundles/scoreko-dev/game-assets/${gameSlug}/characters/${characterValue}.png`;
|
||||
};
|
||||
|
||||
export const fightingCharactersByGame: Record<string, FightingCharacterOption[]> = Object.fromEntries(
|
||||
Object.entries(characterNamesByGame).map(([game, characterNames]) => [
|
||||
game,
|
||||
characterNames.map((character) => {
|
||||
const value = toSlug(character);
|
||||
// Prefer packaged artwork and gracefully fallback to a generated image.
|
||||
return {
|
||||
label: character,
|
||||
value,
|
||||
image: getCharacterImage(game, character, value),
|
||||
bundledImage: getBundledCharacterImage(game, value),
|
||||
fallbackImage: buildCharacterPlaceholder(game, character),
|
||||
};
|
||||
}),
|
||||
]),
|
||||
);
|
||||
export const buildCharactersByGame = (game: string, characterNames: string[]) => characterNames.map((character) => {
|
||||
const value = toSlug(character);
|
||||
|
||||
export const getCharactersByGame = (game: string) => fightingCharactersByGame[game] ?? [];
|
||||
return {
|
||||
label: character,
|
||||
value,
|
||||
image: getCharacterAssetUrl(game, value),
|
||||
bundledImage: getBundledCharacterImage(game, value),
|
||||
fallbackImage: buildCharacterPlaceholder(game, character),
|
||||
};
|
||||
});
|
||||
|
||||
export const getDefaultCharactersByGame = (game: string) => defaultCharacterPairByGame[game];
|
||||
|
||||
Reference in New Issue
Block a user