mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-09-23 23:13:42 +02:00
Revert "[Bug] Prevent an empty starterpreferences object from being saved (#6410)"
This reverts commit c8a66b2e59
.
This commit is contained in:
parent
cc7391448a
commit
701eecf947
@ -1828,9 +1828,9 @@ export class StarterSelectUiHandler extends MessageUiHandler {
|
|||||||
// The persistent starter data to apply e.g. candy upgrades
|
// The persistent starter data to apply e.g. candy upgrades
|
||||||
const persistentStarterData = globalScene.gameData.starterData[this.lastSpecies.speciesId];
|
const persistentStarterData = globalScene.gameData.starterData[this.lastSpecies.speciesId];
|
||||||
// The sanitized starter preferences
|
// The sanitized starter preferences
|
||||||
let starterAttributes = this.starterPreferences[this.lastSpecies.speciesId] ?? {};
|
let starterAttributes = this.starterPreferences[this.lastSpecies.speciesId];
|
||||||
// The original starter preferences
|
// The original starter preferences
|
||||||
const originalStarterAttributes = this.originalStarterPreferences[this.lastSpecies.speciesId] ?? {};
|
const originalStarterAttributes = this.originalStarterPreferences[this.lastSpecies.speciesId];
|
||||||
|
|
||||||
// this gets the correct pokemon cursor depending on whether you're in the starter screen or the party icons
|
// this gets the correct pokemon cursor depending on whether you're in the starter screen or the party icons
|
||||||
if (!this.starterIconsCursorObj.visible) {
|
if (!this.starterIconsCursorObj.visible) {
|
||||||
@ -3408,9 +3408,8 @@ export class StarterSelectUiHandler extends MessageUiHandler {
|
|||||||
if (species) {
|
if (species) {
|
||||||
const defaultDexAttr = this.getCurrentDexProps(species.speciesId);
|
const defaultDexAttr = this.getCurrentDexProps(species.speciesId);
|
||||||
const defaultProps = globalScene.gameData.getSpeciesDexAttrProps(species, defaultDexAttr);
|
const defaultProps = globalScene.gameData.getSpeciesDexAttrProps(species, defaultDexAttr);
|
||||||
// Bang is correct due to the `?` before variant
|
|
||||||
const variant = this.starterPreferences[species.speciesId]?.variant
|
const variant = this.starterPreferences[species.speciesId]?.variant
|
||||||
? (this.starterPreferences[species.speciesId]!.variant as Variant)
|
? (this.starterPreferences[species.speciesId].variant as Variant)
|
||||||
: defaultProps.variant;
|
: defaultProps.variant;
|
||||||
const tint = getVariantTint(variant);
|
const tint = getVariantTint(variant);
|
||||||
this.pokemonShinyIcon.setFrame(getVariantIcon(variant)).setTint(tint);
|
this.pokemonShinyIcon.setFrame(getVariantIcon(variant)).setTint(tint);
|
||||||
|
@ -64,7 +64,7 @@ const StarterPrefers_DEFAULT: string = "{}";
|
|||||||
let StarterPrefers_private_latest: string = StarterPrefers_DEFAULT;
|
let StarterPrefers_private_latest: string = StarterPrefers_DEFAULT;
|
||||||
|
|
||||||
export interface StarterPreferences {
|
export interface StarterPreferences {
|
||||||
[key: number]: StarterAttributes | undefined;
|
[key: number]: StarterAttributes;
|
||||||
}
|
}
|
||||||
// called on starter selection show once
|
// called on starter selection show once
|
||||||
|
|
||||||
@ -74,27 +74,10 @@ export function loadStarterPreferences(): StarterPreferences {
|
|||||||
localStorage.getItem(`starterPrefs_${loggedInUser?.username}`) || StarterPrefers_DEFAULT),
|
localStorage.getItem(`starterPrefs_${loggedInUser?.username}`) || StarterPrefers_DEFAULT),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
// called on starter selection clear, always
|
||||||
/**
|
|
||||||
* Check if an object has no properties of its own (its shape is `{}`)
|
|
||||||
* @param obj - Object to check
|
|
||||||
* @returns - Whether the object is bare
|
|
||||||
*/
|
|
||||||
export function isBareObject(obj: object): boolean {
|
|
||||||
for (const _ in obj) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function saveStarterPreferences(prefs: StarterPreferences): void {
|
export function saveStarterPreferences(prefs: StarterPreferences): void {
|
||||||
// Fastest way to check if an object has any properties (does no allocation)
|
const pStr: string = JSON.stringify(prefs);
|
||||||
if (isBareObject(prefs)) {
|
|
||||||
console.warn("Refusing to save empty starter preferences");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// no reason to store `{}` (for starters not customized)
|
|
||||||
const pStr: string = JSON.stringify(prefs, (_, value) => (isBareObject(value) ? undefined : value));
|
|
||||||
if (pStr !== StarterPrefers_private_latest) {
|
if (pStr !== StarterPrefers_private_latest) {
|
||||||
// something changed, store the update
|
// something changed, store the update
|
||||||
localStorage.setItem(`starterPrefs_${loggedInUser?.username}`, pStr);
|
localStorage.setItem(`starterPrefs_${loggedInUser?.username}`, pStr);
|
||||||
|
Loading…
Reference in New Issue
Block a user