[UI/UX][Beta] Adjustments to display of ribbons (#6709)

* Introduce custom ordering of ribbons

* Displaying classic ribbon for mons that have at least one classic win

---------

Co-authored-by: damocleas <damocleas25@gmail.com>
This commit is contained in:
Wlowscha 2025-10-29 23:27:03 +01:00 committed by GitHub
parent 12b57836b2
commit a55b2b18e8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 55 additions and 4 deletions

View File

@ -1,11 +1,11 @@
import { globalScene } from "#app/global-scene";
import type { PokemonSpecies } from "#data/pokemon-species";
import { Button } from "#enums/buttons";
import type { RibbonData, RibbonFlag } from "#system/ribbons/ribbon-data";
import { RibbonData, type RibbonFlag } from "#system/ribbons/ribbon-data";
import { ribbonFlagToAssetKey } from "#system/ribbons/ribbon-methods";
import type { MessageUiHandler } from "#ui/message-ui-handler";
import { addWindow } from "#ui/ui-theme";
import { getAvailableRibbons, getRibbonKey } from "#utils/ribbon-utils";
import { getAvailableRibbons, getRibbonKey, orderedRibbons } from "#utils/ribbon-utils";
import i18next from "i18next";
export class RibbonTray extends Phaser.GameObjects.Container {
@ -111,8 +111,15 @@ export class RibbonTray extends Phaser.GameObjects.Container {
this.trayIcons = [];
let index = 0;
for (const ribbon of getAvailableRibbons(species)) {
const hasRibbon = this.ribbonData.has(ribbon);
const availableRibbons = getAvailableRibbons(species);
const availableOrderedRibbons = orderedRibbons.filter(r => availableRibbons.includes(r));
const hasWonClassic = globalScene.gameData.starterData[species.speciesId]?.classicWinCount > 0;
for (const ribbon of availableOrderedRibbons) {
const hasRibbon = this.ribbonData.has(ribbon) || (ribbon === RibbonData.CLASSIC && hasWonClassic);
if (!hasRibbon && !globalScene.dexForDevs && !globalScene.showMissingRibbons) {
continue;
}

View File

@ -170,3 +170,47 @@ export function getRibbonKey(flag: RibbonFlag): string {
return "";
}
}
/**
* This list is used to determined the display order of ribbons in the Pokédex.
*/
export const orderedRibbons: RibbonFlag[] = [
RibbonData.CLASSIC,
RibbonData.FRIENDSHIP,
RibbonData.FRESH_START,
RibbonData.HARDCORE,
RibbonData.LIMITED_CATCH,
RibbonData.NUZLOCKE,
RibbonData.NO_HEAL,
RibbonData.NO_SHOP,
RibbonData.NO_SUPPORT,
RibbonData.MONO_GEN_1,
RibbonData.MONO_GEN_2,
RibbonData.MONO_GEN_3,
RibbonData.MONO_GEN_4,
RibbonData.MONO_GEN_5,
RibbonData.MONO_GEN_6,
RibbonData.MONO_GEN_7,
RibbonData.MONO_GEN_8,
RibbonData.MONO_GEN_9,
RibbonData.MONO_NORMAL,
RibbonData.MONO_FIGHTING,
RibbonData.MONO_FLYING,
RibbonData.MONO_POISON,
RibbonData.MONO_GROUND,
RibbonData.MONO_ROCK,
RibbonData.MONO_BUG,
RibbonData.MONO_GHOST,
RibbonData.MONO_STEEL,
RibbonData.MONO_FIRE,
RibbonData.MONO_WATER,
RibbonData.MONO_GRASS,
RibbonData.MONO_ELECTRIC,
RibbonData.MONO_PSYCHIC,
RibbonData.MONO_ICE,
RibbonData.MONO_DRAGON,
RibbonData.MONO_DARK,
RibbonData.MONO_FAIRY,
RibbonData.INVERSE,
RibbonData.FLIP_STATS,
];