Logs show Pokemon data

If a log doesn't contain starter data, but matches a save file, it shows your current party in that save instead.
This commit is contained in:
RedstonewolfX 2024-09-09 12:03:30 -04:00
parent dee46e090f
commit ecb86753bd
3 changed files with 120 additions and 42 deletions

View File

@ -977,15 +977,15 @@ export default class BattleScene extends SceneBase {
return container;
}
addPkIcon(pokemon: PokemonSpecies, form: integer = 0, x: number, y: number, originX: number = 0.5, originY: number = 0.5, ignoreOverride: boolean = false): Phaser.GameObjects.Container {
addPkIcon(pokemon: PokemonSpecies, form: integer = 0, x: number, y: number, originX: number = 0.5, originY: number = 0.5, ignoreOverride: boolean = false, shiny?: boolean, variant?: integer): Phaser.GameObjects.Container {
const container = this.add.container(x, y);
container.setName(`${pokemon.name}-icon`);
const icon = this.add.sprite(0, 0, pokemon.getIconAtlasKey(form));
const icon = this.add.sprite(0, 0, pokemon.getIconAtlasKey(form, shiny, variant));
icon.setName(`sprite-${pokemon.name}-icon`);
icon.setFrame(pokemon.getIconId(true));
icon.setFrame(pokemon.getIconId(true, form, shiny, variant));
// Temporary fix to show pokemon's default icon if variant icon doesn't exist
if (icon.frame.name !== pokemon.getIconId(true)) {
if (icon.frame.name !== pokemon.getIconId(true, form, shiny, variant)) {
console.log(`${pokemon.name}'s variant icon does not exist. Replacing with default.`);
icon.setTexture(pokemon.getIconAtlasKey(0));
icon.setFrame(pokemon.getIconId(true));

View File

@ -14,7 +14,7 @@ import Trainer from "./field/trainer";
import { Species } from "./enums/species";
import { GameMode, GameModes } from "./game-mode";
import PersistentModifierData from "./system/modifier-data";
import PokemonSpecies from "./data/pokemon-species";
import PokemonSpecies, { getPokemonSpecies, starterPassiveAbilities } from "./data/pokemon-species";
import { getStatusEffectCatchRateMultiplier, StatusEffect } from "./data/status-effect";
import { decrypt, SessionSaveData } from "./system/game-data";
import { loggedInUser } from "./account";
@ -24,6 +24,9 @@ import ArenaData from "./system/arena-data";
import ChallengeData from "./system/challenge-data";
import { Challenges } from "./enums/challenges";
import { getPlayerModifierTypeOptions, ModifierPoolType, ModifierTypeOption, regenerateModifierPoolThresholds } from "./modifier/modifier-type";
import { Ability, allAbilities } from "./data/ability";
import { pokemonPrevolutions } from "./data/pokemon-evolutions";
import { Abilities } from "./enums/abilities";
/*
SECTIONS
@ -528,7 +531,7 @@ export function printDRPD(inData: string, indent: string, drpd: DRPD): string {
inData += ",\n" + indent + " \"waves\": [\n"
var isFirst = true
for (var i = 0; i < drpd.waves.length; i++) {
if (drpd.waves[i] != undefined && drpd.waves[i] != null && drpd.waves[i].id > 0) {
if (drpd.waves[i] != undefined && drpd.waves[i] != null) {
if (isFirst) {
isFirst = false;
} else {
@ -1074,6 +1077,30 @@ export function exportPokemon(pokemon: Pokemon, encounterRarity?: string): PokeD
iv: formatIVs(pokemon.ivs)
}
}
/**
* Exports a Pokemon's data as `PokeData`, using `PokemonData` rather than the Pokemon object.
* @param pokemon The Pokemon to store.
* @param encounterRarity The rarity tier of the Pokemon for this biome.
* @returns The Pokemon data.
*/
export function exportPokemonFromData(pokemon: PokemonData, encounterRarity?: string): PokeData {
var P = getPokemonSpecies(pokemon.species)
return {
id: pokemon.species,
name: P.species,
ability: Utils.getEnumKeys(Abilities)[P.getAbility(pokemon.abilityIndex)],
isHiddenAbility: P.getAbility(pokemon.abilityIndex) === P.abilityHidden,
passiveAbility: "Cannot pull Passive or Held Items from raw file data",
nature: exportNature(pokemon.nature),
gender: pokemon.gender == 0 ? "Male" : (pokemon.gender == 1 ? "Female" : "Genderless"),
rarity: encounterRarity!,
captured: false,
level: pokemon.level,
items: [],
iv_raw: exportIVs(pokemon.ivs),
iv: formatIVs(pokemon.ivs)
}
}
/**
* Prints a Pokemon as a string, for saving a DRPD to your device.
* @param inData The data to add on to.

View File

@ -255,7 +255,7 @@ export default class LogSelectUiHandler extends MessageUiHandler {
}
class SessionSlot extends Phaser.GameObjects.Container {
public slotId: integer;
public slotId?: integer;
public autoSlot: integer;
public hasData: boolean;
public wv: integer;
@ -285,10 +285,12 @@ class SessionSlot extends Phaser.GameObjects.Container {
this.remove(this.loadingLabel, true);
var lbl = `???`
lbl = data.title!
var matchesFile = 0
if (this.slotId != undefined) {
lbl = `[${this.slotId + 1}] ${lbl}`
matchesFile = this.slotId + 1
}
console.log(data, this.slotId, this.autoSlot, lbl)
//console.log(data, this.slotId, this.autoSlot, lbl)
const gameModeLabel = addTextObject(this.scene, 8, 5, lbl, TextStyle.WINDOW);
this.add(gameModeLabel);
@ -297,49 +299,96 @@ class SessionSlot extends Phaser.GameObjects.Container {
const playTimeLabel = addTextObject(this.scene, 8, 33, data.version + " / Path: " + (data.label || ""), TextStyle.WINDOW);
this.add(playTimeLabel);
if (data.starters && data.starters![0] == null) {
const timestampLabel = addTextObject(this.scene, 144, 10, "No Starter data", TextStyle.WINDOW);
this.add(timestampLabel);
}
var wavecount = 0
data.waves.forEach((wv, idx) => {
if (wv) {
if (wv.id != 0) {
wavecount++
}
}
})
const waveLabel = addTextObject(this.scene, 185, 33, wavecount + " wv" + (wavecount == 1 ? "" : "s"), TextStyle.WINDOW);
this.add(waveLabel);
const fileSizeLabel = addTextObject(this.scene, 255, 33, LoggerTools.getSize(JSON.stringify(data)), TextStyle.WINDOW);
fileSizeLabel.setAlign("right")
//fileSizeLabel.setAlign("right")
this.add(fileSizeLabel);
const pokemonIconsContainer = this.scene.add.container(144, 4);
if (false || data.starters)
data.starters.forEach((p: LoggerTools.PokeData, i: integer) => {
if (p == undefined)
return;
const iconContainer = this.scene.add.container(26 * i, 0);
iconContainer.setScale(0.75);
if (data.starters && data.starters![0] != null) {
data.starters.forEach((p: LoggerTools.PokeData, i: integer) => {
if (p == undefined)
return;
const iconContainer = this.scene.add.container(26 * i, 0);
iconContainer.setScale(0.75);
//if (Utils.getEnumValues(Species)[p.id] == undefined)
//return;
//if (Utils.getEnumValues(Species)[p.id] == undefined)
//return;
//if (getPokemonSpecies(Utils.getEnumValues(Species)[p.id]) == undefined)
//return;
//if (getPokemonSpecies(Utils.getEnumValues(Species)[p.id]) == undefined)
//return;
if (allSpecies[Utils.getEnumValues(Species).indexOf(p.id)] == undefined) {
// Do nothing
console.log(p.id)
const icon = this.scene.addPkIcon(getPokemonSpecies(Utils.getEnumValues(Species)[p.id]), 0, 0, 0, 0, 0);
iconContainer.add(icon);
} else {
const icon = this.scene.addPkIcon(getPokemonSpecies(Utils.getEnumValues(Species)[p.id]), 0, 0, 0, 0, 0);
//const icon = this.scene.addPkIcon(getPokemonSpecies(Utils.getEnumValues(Species)[allSpecies[Utils.getEnumValues(Species).indexOf(p.id)].speciesId]), 0, 0, 0, 0, 0);
iconContainer.add(icon);
}
if (allSpecies[Utils.getEnumValues(Species).indexOf(p.id)] == undefined) {
// Do nothing
//console.log(p.id)
const icon = this.scene.addPkIcon(getPokemonSpecies(Utils.getEnumValues(Species)[p.id]), 0, 0, 0, 0, 0);
iconContainer.add(icon);
} else {
const icon = this.scene.addPkIcon(getPokemonSpecies(Utils.getEnumValues(Species)[p.id]), 0, 0, 0, 0, 0);
//const icon = this.scene.addPkIcon(getPokemonSpecies(Utils.getEnumValues(Species)[allSpecies[Utils.getEnumValues(Species).indexOf(p.id)].speciesId]), 0, 0, 0, 0, 0);
iconContainer.add(icon);
}
const text = addTextObject(this.scene, 32, 20, ``, TextStyle.PARTY, { fontSize: "54px", color: "#f8f8f8" });
text.setShadow(0, 0, undefined);
text.setStroke("#424242", 14);
text.setOrigin(1, 0);
const text = addTextObject(this.scene, 32, 20, ``, TextStyle.PARTY, { fontSize: "54px", color: "#f8f8f8" });
text.setShadow(0, 0, undefined);
text.setStroke("#424242", 14);
text.setOrigin(1, 0);
iconContainer.add(text);
iconContainer.add(text);
pokemonIconsContainer.add(iconContainer);
});
pokemonIconsContainer.add(iconContainer);
});
} else if (this.slotId != undefined) {
var gamedata = LoggerTools.parseSlotData(this.slotId)!
//console.log(gamedata)
gamedata.party.forEach((pk: PokemonData, i: integer) => {
if (pk == undefined)
return;
var p = LoggerTools.exportPokemonFromData(pk)
const iconContainer = this.scene.add.container(26 * i, 0);
iconContainer.setScale(0.75);
//if (Utils.getEnumValues(Species)[p.id] == undefined)
//return;
//if (getPokemonSpecies(Utils.getEnumValues(Species)[p.id]) == undefined)
//return;
var sp = getPokemonSpecies(pk.species);
if (allSpecies[Utils.getEnumValues(Species).indexOf(p.id)] == undefined) {
// Do nothing
const icon = this.scene.addPkIcon(sp, pk.formIndex, 0, 0, 0, 0, undefined, pk.shiny, pk.variant);
iconContainer.add(icon);
} else {
//console.log(p.id, Utils.getEnumValues(Species)[p.id])
const icon = this.scene.addPkIcon(sp, pk.formIndex, 0, 0, 0, 0, undefined, pk.shiny, pk.variant);
//const icon = this.scene.addPkIcon(getPokemonSpecies(Utils.getEnumValues(Species)[allSpecies[Utils.getEnumValues(Species).indexOf(p.id)].speciesId]), 0, 0, 0, 0, 0);
iconContainer.add(icon);
}
const text = addTextObject(this.scene, 32, 20, ``, TextStyle.PARTY, { fontSize: "54px", color: "#f8f8f8" });
text.setShadow(0, 0, undefined);
text.setStroke("#424242", 14);
text.setOrigin(1, 0);
iconContainer.add(text);
pokemonIconsContainer.add(iconContainer);
});
} else {
const timestampLabel = addTextObject(this.scene, 144, 10, "No Starter data", TextStyle.WINDOW);
this.add(timestampLabel);
}
this.add(pokemonIconsContainer);
@ -367,6 +416,7 @@ class SessionSlot extends Phaser.GameObjects.Container {
this.setupWithData(JSON.parse(localStorage.getItem(l)!))
resolve(true);
});
/*
return new Promise<boolean>(resolve => {
this.scene.gameData.getSession(this.slotId, this.autoSlot).then(async sessionData => {
if (!sessionData) {
@ -376,10 +426,11 @@ class SessionSlot extends Phaser.GameObjects.Container {
return;
}
this.hasData = true;
//await this.setupWithData(undefined);
await this.setupWithData(undefined);
resolve(true);
});
});
*/
}
}