mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-07-28 11:12:24 +02:00
Filtering moves and abilities correctly
This commit is contained in:
parent
3009de74cb
commit
0167dc7052
@ -68433,6 +68433,30 @@ export const tmSpecies: TmSpecies = {
|
||||
],
|
||||
};
|
||||
|
||||
interface SpeciesTmMoves {
|
||||
[key: number]: Array<Moves>
|
||||
}
|
||||
|
||||
function flipTmSpecies(tmSpecies: TmSpecies): SpeciesTmMoves {
|
||||
const flipped: SpeciesTmMoves = {};
|
||||
|
||||
for (const move in tmSpecies) {
|
||||
const speciesList = tmSpecies[move]; // Convert the move key back to a number
|
||||
|
||||
for (const species of speciesList) {
|
||||
if (!flipped[species]) {
|
||||
flipped[species] = [];
|
||||
}
|
||||
flipped[species].push(move);
|
||||
}
|
||||
}
|
||||
|
||||
return flipped;
|
||||
}
|
||||
|
||||
export const speciesTmMoves: SpeciesTmMoves = flipTmSpecies(tmSpecies);
|
||||
|
||||
|
||||
interface TmPoolTiers {
|
||||
[key: integer]: ModifierTier
|
||||
}
|
||||
|
@ -278,7 +278,6 @@ export class FilterText extends Phaser.GameObjects.Container {
|
||||
}
|
||||
|
||||
getValue(row: number): string {
|
||||
console.log("Getting value", this.selections[row].getWrappedText()[0]);
|
||||
return this.selections[row].getWrappedText()[0];
|
||||
}
|
||||
|
||||
|
@ -6,12 +6,16 @@ import { OptionSelectItem } from "./abstact-option-select-ui-handler";
|
||||
import { isNullOrUndefined } from "#app/utils";
|
||||
import { Mode } from "./ui";
|
||||
import { FilterTextRow } from "./filter-text";
|
||||
import { allAbilities } from "#app/data/ability";
|
||||
import { allMoves } from "#app/data/move";
|
||||
|
||||
export default class PokedexScanUiHandler extends FormModalUiHandler {
|
||||
|
||||
keys: string[];
|
||||
reducedKeys: string[];
|
||||
parallelKeys: string[];
|
||||
moveKeys: string[];
|
||||
abilityKeys: string[];
|
||||
|
||||
constructor(scene, mode) {
|
||||
super(scene, mode);
|
||||
@ -39,6 +43,10 @@ export default class PokedexScanUiHandler extends FormModalUiHandler {
|
||||
|
||||
const keysInArrays = flattenKeys(i18next.getDataByLanguage(String(i18next.resolvedLanguage))).filter((t) => t.length > 0); // Array of arrays
|
||||
const keys = keysInArrays.flat(Infinity).map(String); // One array of string
|
||||
|
||||
this.moveKeys = allMoves.map(a => a.name);
|
||||
this.abilityKeys = allAbilities.map(a => a.name);
|
||||
|
||||
this.keys = keys;
|
||||
}
|
||||
|
||||
@ -77,22 +85,18 @@ export default class PokedexScanUiHandler extends FormModalUiHandler {
|
||||
switch (row) {
|
||||
case FilterTextRow.NAME: {
|
||||
const startString = "pokemon:";
|
||||
const endString = "";
|
||||
this.reducedKeys = this.keys.filter(str => str.startsWith(startString) && str.endsWith(endString));
|
||||
// TODO: nameKeys
|
||||
this.reducedKeys = this.keys.filter(str => str.startsWith(startString));
|
||||
break;
|
||||
}
|
||||
case FilterTextRow.MOVE_1:
|
||||
case FilterTextRow.MOVE_2: {
|
||||
const startString = "move:";
|
||||
const endString = ".name";
|
||||
this.reducedKeys = this.keys.filter(str => str.startsWith(startString) && str.endsWith(endString));
|
||||
this.reducedKeys = this.moveKeys;
|
||||
break;
|
||||
}
|
||||
case FilterTextRow.ABILITY_1:
|
||||
case FilterTextRow.ABILITY_2: {
|
||||
const startString = "ability:";
|
||||
const endString = ".name";
|
||||
this.reducedKeys = this.keys.filter(str => str.startsWith(startString) && str.endsWith(endString));
|
||||
this.reducedKeys = this.abilityKeys;
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
|
@ -37,6 +37,10 @@ import { addWindow, WindowVariant } from "./ui-theme";
|
||||
import * as Utils from "../utils";
|
||||
import { OptionSelectConfig } from "./abstact-option-select-ui-handler";
|
||||
import { FilterText, FilterTextRow } from "./filter-text";
|
||||
import { allAbilities } from "#app/data/ability";
|
||||
import { starterPassiveAbilities } from "#app/data/balance/passives";
|
||||
import { allMoves } from "#app/data/move";
|
||||
import { speciesTmMoves } from "#app/data/balance/tms";
|
||||
|
||||
|
||||
export interface Starter {
|
||||
@ -1358,8 +1362,30 @@ export default class PokedexUiHandler extends MessageUiHandler {
|
||||
const isStarterProgressable = speciesEggMoves.hasOwnProperty(container.species.speciesId);
|
||||
|
||||
// Name filter
|
||||
console.log(container.species.name);
|
||||
const fitsName = [ container.species.name, this.filterText.defaultText ].includes(this.filterText.getValue(FilterTextRow.NAME));
|
||||
const selectedName = this.filterText.getValue(FilterTextRow.NAME);
|
||||
const fitsName = container.species.name === selectedName || selectedName === this.filterText.defaultText;
|
||||
|
||||
// Move filter
|
||||
const levelMoves = pokemonSpeciesLevelMoves[container.species.speciesId].map(m => allMoves[m[1]].name);
|
||||
const eggMoves = speciesEggMoves[container.species.speciesId]?.map(m => allMoves[m].name) ?? [];
|
||||
const tmMoves = speciesTmMoves[container.species.speciesId]?.map(m => allMoves[m].name) ?? [];
|
||||
const selectedMove1 = this.filterText.getValue(FilterTextRow.MOVE_1);
|
||||
const selectedMove2 = this.filterText.getValue(FilterTextRow.MOVE_2);
|
||||
|
||||
const fitsMove1 = levelMoves.includes(selectedMove1) || eggMoves.includes(selectedMove1) || tmMoves.includes(selectedMove1) || selectedMove1 === this.filterText.defaultText;
|
||||
const fitsMove2 = levelMoves.includes(selectedMove2) || eggMoves.includes(selectedMove2) || tmMoves.includes(selectedMove2) || selectedMove2 === this.filterText.defaultText;
|
||||
|
||||
// Ability filter
|
||||
// allAbilities already contains the localized names of the abilities
|
||||
const abilities = [ container.species.ability1, container.species.ability2, container.species.abilityHidden ].map(a => allAbilities[a].name);
|
||||
// console.log(abilities);
|
||||
const selectedAbility1 = this.filterText.getValue(FilterTextRow.ABILITY_1);
|
||||
const fitsAbility1 = abilities.includes(selectedAbility1) || selectedAbility1 === this.filterText.defaultText;
|
||||
|
||||
const passive = starterPassiveAbilities[container.species.speciesId] ?? 0;
|
||||
const selectedAbility2 = this.filterText.getValue(FilterTextRow.ABILITY_2);
|
||||
const fitsAbility2 = allAbilities[passive].name === selectedAbility2 || selectedAbility2 === this.filterText.defaultText;
|
||||
|
||||
|
||||
// Gen filter
|
||||
const fitsGen = this.filterBar.getVals(DropDownColumn.GEN).includes(container.species.generation);
|
||||
@ -1482,7 +1508,7 @@ export default class PokedexUiHandler extends MessageUiHandler {
|
||||
}
|
||||
});
|
||||
|
||||
if (fitsName && fitsGen && fitsType && fitsCaught && fitsPassive && fitsCostReduction && fitsFavorite && fitsWin && fitsHA && fitsEgg && fitsPokerus) {
|
||||
if (fitsName && fitsAbility1 && fitsAbility2 && fitsMove1 && fitsMove2 && fitsGen && fitsType && fitsCaught && fitsPassive && fitsCostReduction && fitsFavorite && fitsWin && fitsHA && fitsEgg && fitsPokerus) {
|
||||
this.filteredStarterContainers.push(container);
|
||||
}
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user