diff --git a/src/ts/app/components/PokemonExplorer/PokemonExplorer.tsx b/src/ts/app/components/PokemonExplorer/PokemonExplorer.tsx index a4097b3..0e53f51 100644 --- a/src/ts/app/components/PokemonExplorer/PokemonExplorer.tsx +++ b/src/ts/app/components/PokemonExplorer/PokemonExplorer.tsx @@ -4,7 +4,7 @@ import React from 'react'; import classNames from 'classnames'; -import { ILeaguePokemon, League } from 'app/models/League'; +import { IBestWorstStats, ILeaguePokemon, League } from 'app/models/League'; import { Grade, IStats, } from 'app/models/Pokemon'; import { calculateCp, calculateStatAtLevel } from 'app/utils/calculator'; import { alolanForms, formatDexNumber, formatForm, formatType } from 'app/utils/formatter'; @@ -35,6 +35,29 @@ interface IState { } export class PokemonExplorer extends React.Component { + + private static calculateStatRanks(rankedPokemon : IStats | null, stats : IBestWorstStats) { + const rankedHp = rankedPokemon !== null ? rankedPokemon.hp : 0; + const rankedAtk = rankedPokemon !== null ? rankedPokemon.atk : 0; + const rankedDef = rankedPokemon !== null ? rankedPokemon.def : 0; + + const maxStamina = stats.stamina; + const staminaStatRank = Math.floor(((rankedHp - maxStamina.worst) / (maxStamina.best - maxStamina.worst)) * 100); + const maxAttack = stats.attack; + const attackStatRank = Math.floor(((rankedAtk - maxAttack.worst) / (maxAttack.best - maxAttack.worst)) * 100); + const maxDefense = stats.defense; + const defenseStatRank = Math.floor(((rankedDef - maxDefense.worst) / (maxDefense.best - maxDefense.worst)) * 100); + + return { + rankedHp, + rankedAtk, + rankedDef, + staminaStatRank, + attackStatRank, + defenseStatRank, + }; + } + private readonly MIN_LEVEL = 1; private readonly MAX_LEVEL = 40; private readonly MIN_IV = 0; @@ -125,9 +148,14 @@ export class PokemonExplorer extends React.Component{ formatType(leaguePokemon.types.type2) }; } - const maxStamina = leaguePokemon.statMax[activeLeague].stamina; - const staminaStatRank = Math.floor(((rankedHp - maxStamina.worst) / (maxStamina.best - maxStamina.worst)) * 100); - const maxAttack = leaguePokemon.statMax[activeLeague].attack; - const attackStatRank = Math.floor(((rankedAtk - maxAttack.worst) / (maxAttack.best - maxAttack.worst)) * 100); - const maxDefense = leaguePokemon.statMax[activeLeague].defense; - const defenseStatRank = Math.floor(((rankedDef - maxDefense.worst) / (maxDefense.best - maxDefense.worst)) * 100); - return (
diff --git a/src/ts/app/models/League.ts b/src/ts/app/models/League.ts index 5a8542c..82ba636 100644 --- a/src/ts/app/models/League.ts +++ b/src/ts/app/models/League.ts @@ -34,7 +34,7 @@ interface IBestWorstStatSpread { best : number; worst : number; } -interface IBestWorstStats { +export interface IBestWorstStats { stamina : IBestWorstStatSpread; attack : IBestWorstStatSpread; defense : IBestWorstStatSpread;