mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-07-29 11:42:21 +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 {
|
interface TmPoolTiers {
|
||||||
[key: integer]: ModifierTier
|
[key: integer]: ModifierTier
|
||||||
}
|
}
|
||||||
|
@ -278,7 +278,6 @@ export class FilterText extends Phaser.GameObjects.Container {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getValue(row: number): string {
|
getValue(row: number): string {
|
||||||
console.log("Getting value", this.selections[row].getWrappedText()[0]);
|
|
||||||
return 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 { isNullOrUndefined } from "#app/utils";
|
||||||
import { Mode } from "./ui";
|
import { Mode } from "./ui";
|
||||||
import { FilterTextRow } from "./filter-text";
|
import { FilterTextRow } from "./filter-text";
|
||||||
|
import { allAbilities } from "#app/data/ability";
|
||||||
|
import { allMoves } from "#app/data/move";
|
||||||
|
|
||||||
export default class PokedexScanUiHandler extends FormModalUiHandler {
|
export default class PokedexScanUiHandler extends FormModalUiHandler {
|
||||||
|
|
||||||
keys: string[];
|
keys: string[];
|
||||||
reducedKeys: string[];
|
reducedKeys: string[];
|
||||||
parallelKeys: string[];
|
parallelKeys: string[];
|
||||||
|
moveKeys: string[];
|
||||||
|
abilityKeys: string[];
|
||||||
|
|
||||||
constructor(scene, mode) {
|
constructor(scene, mode) {
|
||||||
super(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 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
|
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;
|
this.keys = keys;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -77,22 +85,18 @@ export default class PokedexScanUiHandler extends FormModalUiHandler {
|
|||||||
switch (row) {
|
switch (row) {
|
||||||
case FilterTextRow.NAME: {
|
case FilterTextRow.NAME: {
|
||||||
const startString = "pokemon:";
|
const startString = "pokemon:";
|
||||||
const endString = "";
|
// TODO: nameKeys
|
||||||
this.reducedKeys = this.keys.filter(str => str.startsWith(startString) && str.endsWith(endString));
|
this.reducedKeys = this.keys.filter(str => str.startsWith(startString));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case FilterTextRow.MOVE_1:
|
case FilterTextRow.MOVE_1:
|
||||||
case FilterTextRow.MOVE_2: {
|
case FilterTextRow.MOVE_2: {
|
||||||
const startString = "move:";
|
this.reducedKeys = this.moveKeys;
|
||||||
const endString = ".name";
|
|
||||||
this.reducedKeys = this.keys.filter(str => str.startsWith(startString) && str.endsWith(endString));
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case FilterTextRow.ABILITY_1:
|
case FilterTextRow.ABILITY_1:
|
||||||
case FilterTextRow.ABILITY_2: {
|
case FilterTextRow.ABILITY_2: {
|
||||||
const startString = "ability:";
|
this.reducedKeys = this.abilityKeys;
|
||||||
const endString = ".name";
|
|
||||||
this.reducedKeys = this.keys.filter(str => str.startsWith(startString) && str.endsWith(endString));
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
|
@ -37,6 +37,10 @@ import { addWindow, WindowVariant } from "./ui-theme";
|
|||||||
import * as Utils from "../utils";
|
import * as Utils from "../utils";
|
||||||
import { OptionSelectConfig } from "./abstact-option-select-ui-handler";
|
import { OptionSelectConfig } from "./abstact-option-select-ui-handler";
|
||||||
import { FilterText, FilterTextRow } from "./filter-text";
|
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 {
|
export interface Starter {
|
||||||
@ -1358,8 +1362,30 @@ export default class PokedexUiHandler extends MessageUiHandler {
|
|||||||
const isStarterProgressable = speciesEggMoves.hasOwnProperty(container.species.speciesId);
|
const isStarterProgressable = speciesEggMoves.hasOwnProperty(container.species.speciesId);
|
||||||
|
|
||||||
// Name filter
|
// Name filter
|
||||||
console.log(container.species.name);
|
const selectedName = this.filterText.getValue(FilterTextRow.NAME);
|
||||||
const fitsName = [ container.species.name, this.filterText.defaultText ].includes(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
|
// Gen filter
|
||||||
const fitsGen = this.filterBar.getVals(DropDownColumn.GEN).includes(container.species.generation);
|
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);
|
this.filteredStarterContainers.push(container);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user