Skip to content

Commit

Permalink
fix(dexservice): properly parse sprites and evos (#36)
Browse files Browse the repository at this point in the history
* build: add vscode debug script

* fix(dexservice): properly parse sprites and evos

* docs: update pr template
  • Loading branch information
favna authored Nov 16, 2019
1 parent 8808f3a commit d51f009
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 22 deletions.
9 changes: 0 additions & 9 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,10 +1 @@
**Please describe the changes this PR makes and why it should be merged:**


**Status**
- [ ] Code changes have been tested against my own code, or there are no code changes

**Semantic versioning classification:**
- [ ] This PR changes the library's interface (methods or parameters added)
- [ ] This PR includes breaking changes (methods removed or renamed, parameters moved or removed)
- [ ] This PR **only** includes non-code changes, like changes to documentation, README, etc.
17 changes: 17 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}\\dist\\index.js"
}
]
}
36 changes: 25 additions & 11 deletions src/services/DexService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -164,10 +164,10 @@ export default class DexService {
pokemonData.baseSpecies = basePokemonData.baseSpecies;
pokemonData.otherFormes = basePokemonData.otherFormes;
pokemonData.flavorTexts = [];
pokemonData.sprite = `https://play.pokemonshowdown.com/sprites/ani/${Util.toLowerSingleWordCase(basePokemonData.species)}.gif`;
pokemonData.shinySprite = `https://play.pokemonshowdown.com/sprites/ani-shiny/${Util.toLowerSingleWordCase(basePokemonData.species)}.gif`;
pokemonData.bulbapediaPage = basePokemonData.num >= 1 ? this.parseSpeciesForBulbapedia(basePokemonData.species, basePokemonData.baseForme || basePokemonData.baseSpecies) : '';
pokemonData.serebiiPage = basePokemonData.num >= 1 ? `https://www.serebii.net/pokedex-sm/${basePokemonData.num}.shtml` : '';
pokemonData.bulbapediaPage = basePokemonData.num >= 1 ? this.parseSpeciesForBulbapedia(basePokemonData.species, basePokemonData.baseForme || basePokemonData.baseSpecies) : '';
pokemonData.sprite = this.parseSpeciesForSprite(basePokemonData.species, basePokemonData.baseForme || basePokemonData.baseSpecies);
pokemonData.shinySprite = this.parseSpeciesForSprite(basePokemonData.species, basePokemonData.baseForme || basePokemonData.baseSpecies, true);
pokemonData.smogonPage = basePokemonData.num >= 1 ? `https://www.smogon.com/dex/sm/pokemon/${Util.toLowerHyphenCase(basePokemonData.species)}` : '';

if (basePokemonData.num >= 0) {
Expand Down Expand Up @@ -215,14 +215,16 @@ export default class DexService {
}

if (basePokemonData.evos && basePokemonData.evos[0] !== parsingPokemon) {
const evoPokemon = this.findBySpecies(basePokemonData.evos[0]);
if (evoPokemon) {
evolutionChain.push(this.findBySpeciesWithDetails({
pokemon: evoPokemon.species,
skip,
take,
reverse,
}, basePokemonData.species));
for (const evo of basePokemonData.evos) {
const evoPokemon = this.findBySpecies(Util.toLowerSingleWordCase(evo));
if (evoPokemon) {
evolutionChain.push(this.findBySpeciesWithDetails({
pokemon: Util.toLowerSingleWordCase(evoPokemon.species),
skip,
take,
reverse,
}, basePokemonData.species));
}
}
}

Expand All @@ -239,4 +241,16 @@ export default class DexService {

return `https://bulbapedia.bulbagarden.net/wiki/${pokemonName}_(Pokemon)`;
}

private parseSpeciesForSprite(pokemonName: string, baseForme?: string, shiny = false) {
if (!baseForme) {
pokemonName = Util.toLowerSingleWordCase(pokemonName);
}

if (pokemonName.match(/^(.+)-(x|y)$/g)) {
pokemonName = pokemonName.replace(/^(.+)-(x|y)$/g, '$1$2');
}

return `https://play.pokemonshowdown.com/sprites/${shiny ? 'ani-shiny' : 'ani'}/${pokemonName}.gif`;
}
}
4 changes: 2 additions & 2 deletions src/structures/DexDetails.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ import FlavorEntry from './FlavorEntry';

@ObjectType({ description: 'A Pokémon\'s details entry' })
export default class DexDetails extends DexEntry {
@Field(() => DexDetails, { nullable: true, description: 'The evolutions for a Pokémon, if any ' })
@Field(() => [ DexDetails ], { nullable: true, description: 'The evolutions for a Pokémon, if any ' })
evolutions?: this[];

@Field(() => DexDetails, { nullable: true, description: 'The preevolutions for a Pokémon, if any ' })
@Field(() => [ DexDetails ], { nullable: true, description: 'The preevolutions for a Pokémon, if any ' })
preevolutions?: this[];

@Field(() => [ FlavorEntry ], { description: 'The flavortexts for a Pokémon' })
Expand Down

0 comments on commit d51f009

Please sign in to comment.