mirror of
https://github.com/jcreek/LivingDexTracker.git
synced 2026-07-13 11:03:44 +00:00
feat(#11): Add sprite component
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
import SignUp from '$lib/components/SignUp.svelte';
|
||||
import SignIn from '$lib/components/SignIn.svelte';
|
||||
import SignOut from '$lib/components/SignOut.svelte';
|
||||
import PokemonSprite from '$lib/components/PokemonSprite.svelte';
|
||||
|
||||
export let data;
|
||||
let { supabase } = data;
|
||||
@@ -51,3 +52,9 @@
|
||||
<SignIn {supabase} on:signedIn={setUserEmail} />
|
||||
<br />
|
||||
<SignOut {supabase} on:signedOut={setUserEmail} />
|
||||
|
||||
<div>
|
||||
<PokemonSprite pokedexNumber={666} form={'poke-ball'} />
|
||||
<PokemonSprite pokedexNumber={666} form={''} />
|
||||
<PokemonSprite pokedexNumber={'003'} form={''} />
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
import { json } from '@sveltejs/kit';
|
||||
import sprites from '$lib/helpers/sprites.json';
|
||||
|
||||
interface PokemonSpritesData {
|
||||
[key: string]: {
|
||||
forms: {
|
||||
[key: string]: {
|
||||
is_prev_gen_icon?: boolean;
|
||||
is_alias_of?: string;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
export async function GET({ url }) {
|
||||
const pokedexNumber = url.searchParams.get('pokedexNumber');
|
||||
const form = url.searchParams.get('form') ?? undefined;
|
||||
|
||||
if (!pokedexNumber) {
|
||||
return json({
|
||||
status: 400,
|
||||
error: 'Pokédex number is required'
|
||||
});
|
||||
}
|
||||
|
||||
const spriteFileName = getPokemonSpriteFileName(pokedexNumber, form);
|
||||
|
||||
if (spriteFileName) {
|
||||
// If spriteUrl is found, return it with status 200
|
||||
return json({
|
||||
status: 200,
|
||||
spriteFileName: spriteFileName
|
||||
});
|
||||
} else {
|
||||
// If spriteUrl is not found, return 404
|
||||
return json({
|
||||
status: 404,
|
||||
error: `Sprite URL not found for the specified Pokémon with Pokédex number ${pokedexNumber} and form ${form}`
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function getPokemonSpriteFileName(number: string, form?: string): string | undefined {
|
||||
const spritesData: PokemonSpritesData = sprites;
|
||||
|
||||
// Check if the Pokémon number exists in the sprites JSON
|
||||
if (spritesData[number] && spritesData[number]['gen-8']) {
|
||||
const forms = spritesData[number]['gen-8'].forms;
|
||||
let formName = '$';
|
||||
|
||||
// If a form is provided and it exists for the Pokémon, set the form name
|
||||
if (form && forms[form]) {
|
||||
formName = form;
|
||||
}
|
||||
|
||||
// Check if the form has an alias
|
||||
if (forms[formName].is_alias_of) {
|
||||
formName = forms[formName].is_alias_of;
|
||||
}
|
||||
|
||||
const fileName = `${spritesData[number].slug.eng.toLowerCase()}${formName !== '$' ? '-' + formName : ''}.png`;
|
||||
return fileName;
|
||||
}
|
||||
|
||||
// If the Pokémon number doesn't exist or doesn't have gen-8 sprites, return undefined
|
||||
return undefined;
|
||||
}
|
||||
Reference in New Issue
Block a user