From 48ff515269643f99e9bdcb21cf595b9a5a65236e Mon Sep 17 00:00:00 2001 From: RedstonewolfX <108761527+RedstonewolfX@users.noreply.github.com> Date: Sat, 13 Jul 2024 16:31:04 -0400 Subject: [PATCH] Fancy Title Screen Tutorials are off by default Type Hints are on by default Added an option to make the title screen's biome change as you navigate menus --- src/battle-scene.ts | 17 +++++++++++++++-- src/logger.ts | 2 ++ src/system/settings/settings.ts | 22 +++++++++++++++++++--- src/ui/abstact-option-select-ui-handler.ts | 2 ++ src/ui/save-slot-select-ui-handler.ts | 22 ++++++++++++++++++---- src/utils.ts | 1 + 6 files changed, 57 insertions(+), 9 deletions(-) diff --git a/src/battle-scene.ts b/src/battle-scene.ts index ebef2f4dd6d..466fb384206 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -122,6 +122,7 @@ export default class BattleScene extends SceneBase { public enableRetries: boolean = false; public damageDisplay: string = "Off"; public lazyReloads: boolean = false; + public menuChangesBiome: boolean; /** * Determines the condition for a notification should be shown for Candy Upgrades * - 0 = 'Off' @@ -256,6 +257,8 @@ export default class BattleScene extends SceneBase { public eventManager: TimedEventManager; + public biomeChangeMode: boolean = false; + /** * Allows subscribers to listen for events * @@ -298,6 +301,7 @@ export default class BattleScene extends SceneBase { Phaser.Math.RND.realInRange = function (min: number, max: number): number { const ret = originalRealInRange.apply(this, [ min, max ]); const args = [ "RNG", ++scene.rngCounter, ret / (max - min), `min: ${min} / max: ${max}` ]; + scene.setScoreText("RNG: " + this.rngCounter + ")") args.push(`seed: ${scene.rngSeedOverride || scene.waveSeed || scene.seed}`); if (scene.rngOffset) { args.push(`offset: ${scene.rngOffset}`); @@ -901,6 +905,7 @@ export default class BattleScene extends SceneBase { setSeed(seed: string): void { this.seed = seed; this.rngCounter = 0; + //this.setScoreText("RNG: 0") this.waveCycleOffset = this.getGeneratedWaveCycleOffset(); this.offsetGym = this.gameMode.isClassic && this.getGeneratedOffsetGym(); } @@ -1352,6 +1357,7 @@ export default class BattleScene extends SceneBase { Phaser.Math.RND.sow([ this.waveSeed ]); console.log("Wave Seed:", this.waveSeed, wave); this.rngCounter = 0; + //this.setScoreText("RNG: 0") } executeWithSeedOffset(func: Function, offset: integer, seedOverride?: string): void { @@ -1368,6 +1374,7 @@ export default class BattleScene extends SceneBase { this.rngSeedOverride = seedOverride || ""; func(); Phaser.Math.RND.state(state); + this.setScoreText("RNG: " + tempRngCounter + " (Last sim: " + this.rngCounter + ")") this.rngCounter = tempRngCounter; this.rngOffset = tempRngOffset; this.rngSeedOverride = tempRngSeedOverride; @@ -1497,10 +1504,16 @@ export default class BattleScene extends SceneBase { } updateScoreText(): void { - this.scoreText.setText(`Score: ${this.score.toString()}`); - this.scoreText.setVisible(this.gameMode.isDaily); + //this.scoreText.setText(`Score: ${this.score.toString()}`); + //this.scoreText.setVisible(this.gameMode.isDaily); } setScoreText(text: string): void { + if (this.scoreText == undefined) + return; + if (this.scoreText.setText == undefined) + return; + if (this.scoreText.setVisible == undefined) + return; this.scoreText.setText(text); this.scoreText.setVisible(true); } diff --git a/src/logger.ts b/src/logger.ts index 0ea68fedb02..a09e2b667c8 100644 --- a/src/logger.ts +++ b/src/logger.ts @@ -40,6 +40,8 @@ export const logKeys: string[] = [ "d", // Debug ]; +export const RNGState: number[] = [] + export const autoCheckpoints: integer[] = [ 1, 11, diff --git a/src/system/settings/settings.ts b/src/system/settings/settings.ts index 5897490b2a2..e1ef70898be 100644 --- a/src/system/settings/settings.ts +++ b/src/system/settings/settings.ts @@ -100,7 +100,8 @@ export const SettingKeys = { Music_Preference: "MUSIC_PREFERENCE", Show_BGM_Bar: "SHOW_BGM_BAR", Damage_Display: "DAMAGE_DISPLAY", - LazyReloads: "FLAG_EVERY_RESET_AS_RELOAD" + LazyReloads: "FLAG_EVERY_RESET_AS_RELOAD", + FancyBiome: "FANCY_BIOMES" }; /** @@ -176,6 +177,19 @@ export const Setting: Array = [ default: 0, type: SettingType.GENERAL, }, + { + key: SettingKeys.FancyBiome, + label: "Fancy Title Screen", + options: [{ + label: "Off", + value: "Off" + }, { + label: "On", + value: "On" + }], + default: 0, + type: SettingType.GENERAL, + }, { key: SettingKeys.HP_Bar_Speed, label: i18next.t("settings:hpBarSpeed"), @@ -278,7 +292,7 @@ export const Setting: Array = [ key: SettingKeys.Tutorials, label: i18next.t("settings:tutorials"), options: OFF_ON, - default: 0, + default: 1, type: SettingType.GENERAL }, { @@ -518,7 +532,7 @@ export const Setting: Array = [ key: SettingKeys.Type_Hints, label: i18next.t("settings:typeHints"), options: OFF_ON, - default: 1, + default: 0, type: SettingType.DISPLAY }, { @@ -640,6 +654,8 @@ export function setSetting(scene: BattleScene, setting: string, value: integer): scene.damageDisplay = Setting[index].options[value].value case SettingKeys.LazyReloads: scene.lazyReloads = Setting[index].options[value].value == "On" + case SettingKeys.FancyBiome: + scene.menuChangesBiome = Setting[index].options[value].value == "On" case SettingKeys.Skip_Seen_Dialogues: scene.skipSeenDialogues = Setting[index].options[value].value === "On"; break; diff --git a/src/ui/abstact-option-select-ui-handler.ts b/src/ui/abstact-option-select-ui-handler.ts index 2069f034e89..eda469adaf3 100644 --- a/src/ui/abstact-option-select-ui-handler.ts +++ b/src/ui/abstact-option-select-ui-handler.ts @@ -6,6 +6,8 @@ import { addWindow } from "./ui-theme"; import * as Utils from "../utils"; import { argbFromRgba } from "@material/material-color-utilities"; import {Button} from "#enums/buttons"; +import { Biome } from "#app/enums/biome.js"; +import { getBiomeKey } from "#app/field/arena.js"; export interface OptionSelectConfig { xOffset?: number; diff --git a/src/ui/save-slot-select-ui-handler.ts b/src/ui/save-slot-select-ui-handler.ts index e878de3d692..50d7ce00dca 100644 --- a/src/ui/save-slot-select-ui-handler.ts +++ b/src/ui/save-slot-select-ui-handler.ts @@ -107,8 +107,20 @@ export default class SaveSlotSelectUiHandler extends MessageUiHandler { } else { switch (this.uiMode) { case SaveSlotUiMode.LOAD: - this.saveSlotSelectCallback = null; - originalCallback(this.sessionSlots[cursor].slotId, this.sessionSlots[cursor].autoSlot); + if (this.sessionSlots[cursor].autoSlot) { + ui.showText("This will revert slot " + (this.sessionSlots[cursor].slotId + 1) + " to wave " + (this.sessionSlots[cursor].wv) + ".\nIs that okay?", null, () => { + ui.setOverlayMode(Mode.CONFIRM, () => { + this.saveSlotSelectCallback = null; + originalCallback(this.sessionSlots[cursor].slotId, this.sessionSlots[cursor].autoSlot); + }, () => { + ui.revertMode(); + ui.showText(null, 0); + }, false, 0, 19, 500); + }); + } else { + this.saveSlotSelectCallback = null; + originalCallback(this.sessionSlots[cursor].slotId, this.sessionSlots[cursor].autoSlot); + } break; case SaveSlotUiMode.SAVE: const saveAndCallback = () => { @@ -279,6 +291,7 @@ class SessionSlot extends Phaser.GameObjects.Container { public slotId: integer; public autoSlot: integer; public hasData: boolean; + public wv: integer; private loadingLabel: Phaser.GameObjects.Text; constructor(scene: BattleScene, slotId: integer, ypos: integer, autoSlot?: integer) { @@ -301,9 +314,10 @@ class SessionSlot extends Phaser.GameObjects.Container { async setupWithData(data: SessionSaveData) { this.remove(this.loadingLabel, true); - var lbl = `${GameMode.getModeName(data.gameMode) || i18next.t("gameMode:unkown")} - ${i18next.t("saveSlotSelectUiHandler:wave")} ${data.waveIndex}` + this.wv = data.waveIndex; + var lbl = `Slot ${this.slotId+1} (${GameMode.getModeName(data.gameMode) || i18next.t("gameMode:unkown")}) - ${i18next.t("saveSlotSelectUiHandler:wave")} ${data.waveIndex}` if (this.autoSlot != undefined) { - lbl = `Slot ${this.slotId} (Auto) - ${i18next.t("saveSlotSelectUiHandler:wave")} ${data.waveIndex}` + lbl = `Slot ${this.slotId+1} (Auto) - ${i18next.t("saveSlotSelectUiHandler:wave")} ${data.waveIndex}` } console.log(data, this.slotId, this.autoSlot, lbl) const gameModeLabel = addTextObject(this.scene, 8, 5, lbl, TextStyle.WINDOW); diff --git a/src/utils.ts b/src/utils.ts index 5aa558bae3a..69584191d5c 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,5 +1,6 @@ import i18next from "i18next"; import { MoneyFormat } from "#enums/money-format"; +import * as LoggerTools from "./logger" export const MissingTextureKey = "__MISSING";