From 8ae78fcd0586f3a22b1804781c304787a824ac3c Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Tue, 24 Oct 2023 23:04:23 -0400 Subject: [PATCH] Add growth rate to starter select screen --- src/data/exp.ts | 21 +++++++++++++++++++-- src/ui/starter-select-ui-handler.ts | 18 ++++++++++++++++++ 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/src/data/exp.ts b/src/data/exp.ts index 58505bda079..4b8eb972f51 100644 --- a/src/data/exp.ts +++ b/src/data/exp.ts @@ -51,8 +51,25 @@ export function getLevelTotalExp(level: integer, growthRate: GrowthRate): intege return Math.floor(ret * 0.325 + getLevelTotalExp(level, GrowthRate.MEDIUM_FAST) * 0.675); return Math.floor(ret); -}; +} export function getLevelRelExp(level: integer, growthRate: GrowthRate): number { return getLevelTotalExp(level, growthRate) - getLevelTotalExp(level - 1, growthRate); -}; \ No newline at end of file +} + +export function getGrowthRateColor(growthRate: GrowthRate, shadow?: boolean) { + switch (growthRate) { + case GrowthRate.ERRATIC: + return !shadow ? '#f85888' : '#906060'; + case GrowthRate.FAST: + return !shadow ? '#f8d030' : '#b8a038'; + case GrowthRate.MEDIUM_FAST: + return !shadow ? '#78c850' : '#588040'; + case GrowthRate.MEDIUM_SLOW: + return !shadow ? '#6890f0' : '#807870'; + case GrowthRate.SLOW: + return !shadow ? '#f08030' : '#c03028'; + case GrowthRate.FLUCTUATING: + return !shadow ? '#a040a0' : '#483850'; + } +} \ No newline at end of file diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index 42561ea0b26..43c6a0361f8 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -11,6 +11,7 @@ import { pokemonPrevolutions } from "../data/pokemon-evolutions"; import { abilities } from "../data/ability"; import { GameMode } from "../game-mode"; import { Unlockables } from "../system/unlockables"; +import { GrowthRate, getGrowthRateColor } from "../data/exp"; export type StarterSelectCallback = (starters: Starter[]) => void; @@ -28,6 +29,8 @@ export default class StarterSelectUiHandler extends MessageUiHandler { private pokemonNumberText: Phaser.GameObjects.Text; private pokemonSprite: Phaser.GameObjects.Sprite; private pokemonNameText: Phaser.GameObjects.Text; + private pokemonGrowthRateLabelText: Phaser.GameObjects.Text; + private pokemonGrowthRateText: Phaser.GameObjects.Text; private pokemonGenderText: Phaser.GameObjects.Text; private pokemonAbilityLabelText: Phaser.GameObjects.Text; private pokemonAbilityText: Phaser.GameObjects.Text; @@ -90,6 +93,15 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonNameText.setOrigin(0, 0); this.starterSelectContainer.add(this.pokemonNameText); + this.pokemonGrowthRateLabelText = addTextObject(this.scene, 8, 103, 'Growth Rate:', TextStyle.SUMMARY, { fontSize: '48px' }); + this.pokemonGrowthRateLabelText.setOrigin(0, 0); + this.pokemonGrowthRateLabelText.setVisible(false); + this.starterSelectContainer.add(this.pokemonGrowthRateLabelText); + + this.pokemonGrowthRateText = addTextObject(this.scene, 44, 103, '', TextStyle.SUMMARY_RED, { fontSize: '48px' }); + this.pokemonGrowthRateText.setOrigin(0, 0); + this.starterSelectContainer.add(this.pokemonGrowthRateText); + this.pokemonGenderText = addTextObject(this.scene, 96, 112, '', TextStyle.SUMMARY); this.pokemonGenderText.setOrigin(0, 0); this.starterSelectContainer.add(this.pokemonGenderText); @@ -468,12 +480,18 @@ export default class StarterSelectUiHandler extends MessageUiHandler { if (species && this.speciesStarterDexEntry) { this.pokemonNumberText.setText(Utils.padInt(species.speciesId, 3)); this.pokemonNameText.setText(species.name); + this.pokemonGrowthRateText.setText(Utils.toReadableString(GrowthRate[species.growthRate])); + this.pokemonGrowthRateText.setColor(getGrowthRateColor(species.growthRate)); + this.pokemonGrowthRateText.setShadowColor(getGrowthRateColor(species.growthRate, true)); + this.pokemonGrowthRateLabelText.setVisible(true); this.pokemonAbilityLabelText.setVisible(true); this.setSpeciesDetails(species, !!this.speciesStarterDexEntry?.shiny, this.speciesStarterDexEntry?.formIndex, !!this.speciesStarterDexEntry?.female, this.speciesStarterDexEntry?.abilityIndex); } else { this.pokemonNumberText.setText(Utils.padInt(0, 3)); this.pokemonNameText.setText(species ? '???' : ''); + this.pokemonGrowthRateText.setText(''); + this.pokemonGrowthRateLabelText.setVisible(false); this.pokemonAbilityLabelText.setVisible(false); this.setSpeciesDetails(species, false, 0, false, 0);