[UI/UX] Cancel button on Pokédex page to previously selected Pokémon (#5528)

* Removed redundant form index argument in show() of pokedex page

* Storing previous pokémon for cancel button
This commit is contained in:
Wlowscha 2025-03-24 06:03:11 +01:00 committed by GitHub
parent 37e51e9657
commit 7f72794d23
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 43 additions and 15 deletions

View File

@ -574,9 +574,7 @@ export default class PartyUiHandler extends MessageUiHandler {
form: pokemon.formIndex, form: pokemon.formIndex,
female: pokemon.gender === Gender.FEMALE, female: pokemon.gender === Gender.FEMALE,
}; };
ui.setOverlayMode(Mode.POKEDEX_PAGE, pokemon.species, pokemon.formIndex, attributes).then(() => ui.setOverlayMode(Mode.POKEDEX_PAGE, pokemon.species, attributes).then(() => this.clearOptions());
this.clearOptions(),
);
return true; return true;
} else if (option === PartyOption.UNPAUSE_EVOLUTION) { } else if (option === PartyOption.UNPAUSE_EVOLUTION) {
this.clearOptions(); this.clearOptions();

View File

@ -239,6 +239,9 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
private starterAttributes: StarterAttributes; private starterAttributes: StarterAttributes;
private savedStarterAttributes: StarterAttributes; private savedStarterAttributes: StarterAttributes;
private previousSpecies: PokemonSpecies[];
private previousStarterAttributes: StarterAttributes[];
protected blockInput = false; protected blockInput = false;
protected blockInputOverlay = false; protected blockInputOverlay = false;
@ -653,6 +656,9 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
// Filter bar sits above everything, except the message box // Filter bar sits above everything, except the message box
this.starterSelectContainer.bringToTop(this.starterSelectMessageBoxContainer); this.starterSelectContainer.bringToTop(this.starterSelectMessageBoxContainer);
this.previousSpecies = [];
this.previousStarterAttributes = [];
} }
show(args: any[]): boolean { show(args: any[]): boolean {
@ -665,14 +671,14 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
return false; return false;
} }
this.species = args[0]; this.species = args[0];
this.formIndex = args[1] ?? 0; this.savedStarterAttributes = args[1] ?? {
this.savedStarterAttributes = args[2] ?? {
shiny: false, shiny: false,
female: true, female: true,
variant: 0, variant: 0,
form: 0, form: 0,
}; };
this.filteredIndices = args[3] ?? null; this.formIndex = this.savedStarterAttributes.form ?? 0;
this.filteredIndices = args[2] ?? null;
this.starterSetup(); this.starterSetup();
this.moveInfoOverlay.clear(); // clear this when removing a menu; the cancel button doesn't seem to trigger this automatically on controllers this.moveInfoOverlay.clear(); // clear this when removing a menu; the cancel button doesn't seem to trigger this automatically on controllers
@ -1088,8 +1094,19 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
if (this.statsMode) { if (this.statsMode) {
this.toggleStatsMode(false); this.toggleStatsMode(false);
success = true; success = true;
} else if (this.previousSpecies.length > 0) {
this.blockInput = true;
ui.setModeWithoutClear(Mode.OPTION_SELECT).then(() => {
const species = this.previousSpecies.pop();
const starterAttributes = this.previousStarterAttributes.pop();
this.moveInfoOverlay.clear();
this.clearText();
ui.setModeForceTransition(Mode.POKEDEX_PAGE, species, starterAttributes);
success = true;
});
this.blockInput = false;
} else { } else {
this.getUi().revertMode(); ui.revertMode();
success = true; success = true;
} }
} else { } else {
@ -1504,6 +1521,8 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
? (preSpecies ?? this.species).getFormNameToDisplay(preFormIndex, true) ? (preSpecies ?? this.species).getFormNameToDisplay(preFormIndex, true)
: (preSpecies ?? this.species).getExpandedSpeciesName(), : (preSpecies ?? this.species).getExpandedSpeciesName(),
handler: () => { handler: () => {
this.previousSpecies.push(this.species);
this.previousStarterAttributes.push({ ...this.savedStarterAttributes });
const newSpecies = allSpecies.find( const newSpecies = allSpecies.find(
species => species.speciesId === pokemonPrevolutions[pre.speciesId], species => species.speciesId === pokemonPrevolutions[pre.speciesId],
); );
@ -1519,7 +1538,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
this.savedStarterAttributes.form = newFormIndex; this.savedStarterAttributes.form = newFormIndex;
this.moveInfoOverlay.clear(); this.moveInfoOverlay.clear();
this.clearText(); this.clearText();
ui.setMode(Mode.POKEDEX_PAGE, newSpecies, newFormIndex, this.savedStarterAttributes); ui.setMode(Mode.POKEDEX_PAGE, newSpecies, this.savedStarterAttributes);
return true; return true;
}, },
onHover: () => this.showText(conditionText), onHover: () => this.showText(conditionText),
@ -1555,11 +1574,13 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
: (evoSpecies ?? this.species).getExpandedSpeciesName(), : (evoSpecies ?? this.species).getExpandedSpeciesName(),
style: isCaughtEvo && isFormCaughtEvo ? TextStyle.WINDOW : TextStyle.SHADOW_TEXT, style: isCaughtEvo && isFormCaughtEvo ? TextStyle.WINDOW : TextStyle.SHADOW_TEXT,
handler: () => { handler: () => {
this.previousSpecies.push(this.species);
this.previousStarterAttributes.push({ ...this.savedStarterAttributes });
this.starterAttributes.form = newFormIndex; this.starterAttributes.form = newFormIndex;
this.savedStarterAttributes.form = newFormIndex; this.savedStarterAttributes.form = newFormIndex;
this.moveInfoOverlay.clear(); this.moveInfoOverlay.clear();
this.clearText(); this.clearText();
ui.setMode(Mode.POKEDEX_PAGE, evoSpecies, newFormIndex, this.savedStarterAttributes); ui.setMode(Mode.POKEDEX_PAGE, evoSpecies, this.savedStarterAttributes);
return true; return true;
}, },
onHover: () => this.showText(conditionText), onHover: () => this.showText(conditionText),
@ -1595,6 +1616,8 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
label: label, label: label,
style: isFormCaught ? TextStyle.WINDOW : TextStyle.SHADOW_TEXT, style: isFormCaught ? TextStyle.WINDOW : TextStyle.SHADOW_TEXT,
handler: () => { handler: () => {
this.previousSpecies.push(this.species);
this.previousStarterAttributes.push({ ...this.savedStarterAttributes });
const newSpecies = this.species; const newSpecies = this.species;
const newFormIndex = this.species.forms.find(f => f.formKey === bf.formKey)?.formIndex; const newFormIndex = this.species.forms.find(f => f.formKey === bf.formKey)?.formIndex;
this.starterAttributes.form = newFormIndex; this.starterAttributes.form = newFormIndex;
@ -1604,7 +1627,6 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
ui.setMode( ui.setMode(
Mode.POKEDEX_PAGE, Mode.POKEDEX_PAGE,
newSpecies, newSpecies,
newFormIndex,
this.savedStarterAttributes, this.savedStarterAttributes,
this.filteredIndices, this.filteredIndices,
); );
@ -1955,6 +1977,11 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
case Button.LEFT: case Button.LEFT:
this.blockInput = true; this.blockInput = true;
ui.setModeWithoutClear(Mode.OPTION_SELECT).then(() => { ui.setModeWithoutClear(Mode.OPTION_SELECT).then(() => {
// Always go back to first selection after scrolling around
if (this.previousSpecies.length === 0) {
this.previousSpecies.push(this.species);
this.previousStarterAttributes.push({ ...this.savedStarterAttributes });
}
let newSpecies: PokemonSpecies; let newSpecies: PokemonSpecies;
if (this.filteredIndices) { if (this.filteredIndices) {
const index = this.filteredIndices.findIndex(id => id === this.species.speciesId); const index = this.filteredIndices.findIndex(id => id === this.species.speciesId);
@ -1976,7 +2003,6 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
ui.setModeForceTransition( ui.setModeForceTransition(
Mode.POKEDEX_PAGE, Mode.POKEDEX_PAGE,
newSpecies, newSpecies,
newFormIndex,
this.savedStarterAttributes, this.savedStarterAttributes,
this.filteredIndices, this.filteredIndices,
); );
@ -1985,6 +2011,11 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
break; break;
case Button.RIGHT: case Button.RIGHT:
ui.setModeWithoutClear(Mode.OPTION_SELECT).then(() => { ui.setModeWithoutClear(Mode.OPTION_SELECT).then(() => {
// Always go back to first selection after scrolling around
if (this.previousSpecies.length === 0) {
this.previousSpecies.push(this.species);
this.previousStarterAttributes.push({ ...this.savedStarterAttributes });
}
let newSpecies: PokemonSpecies; let newSpecies: PokemonSpecies;
if (this.filteredIndices) { if (this.filteredIndices) {
const index = this.filteredIndices.findIndex(id => id === this.species.speciesId); const index = this.filteredIndices.findIndex(id => id === this.species.speciesId);
@ -2006,7 +2037,6 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
ui.setModeForceTransition( ui.setModeForceTransition(
Mode.POKEDEX_PAGE, Mode.POKEDEX_PAGE,
newSpecies, newSpecies,
newFormIndex,
this.savedStarterAttributes, this.savedStarterAttributes,
this.filteredIndices, this.filteredIndices,
); );

View File

@ -1125,7 +1125,7 @@ export default class PokedexUiHandler extends MessageUiHandler {
} else if (this.showingTray) { } else if (this.showingTray) {
if (button === Button.ACTION) { if (button === Button.ACTION) {
const formIndex = this.trayForms[this.trayCursor].formIndex; const formIndex = this.trayForms[this.trayCursor].formIndex;
ui.setOverlayMode(Mode.POKEDEX_PAGE, this.lastSpecies, formIndex, { form: formIndex }, this.filteredIndices); ui.setOverlayMode(Mode.POKEDEX_PAGE, this.lastSpecies, { form: formIndex }, this.filteredIndices);
success = true; success = true;
} else { } else {
const numberOfForms = this.trayContainers.length; const numberOfForms = this.trayContainers.length;
@ -1174,7 +1174,7 @@ export default class PokedexUiHandler extends MessageUiHandler {
} }
} else { } else {
if (button === Button.ACTION) { if (button === Button.ACTION) {
ui.setOverlayMode(Mode.POKEDEX_PAGE, this.lastSpecies, 0, null, this.filteredIndices); ui.setOverlayMode(Mode.POKEDEX_PAGE, this.lastSpecies, null, this.filteredIndices);
success = true; success = true;
} else { } else {
switch (button) { switch (button) {

View File

@ -2324,7 +2324,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
form: starterAttributes.form, form: starterAttributes.form,
female: starterAttributes.female, female: starterAttributes.female,
}; };
ui.setOverlayMode(Mode.POKEDEX_PAGE, this.lastSpecies, starterAttributes.form, attributes); ui.setOverlayMode(Mode.POKEDEX_PAGE, this.lastSpecies, attributes);
}); });
return true; return true;
}, },