From 4f91c47168fab212657747a0f481792f471aee60 Mon Sep 17 00:00:00 2001
From: Flashfyre <flashfireex@gmail.com>
Date: Sat, 4 Nov 2023 21:53:38 -0400
Subject: [PATCH] Add option to not show level up stats

---
 src/battle-scene.ts                 |  1 +
 src/system/settings.ts              | 12 +++++++++---
 src/ui/battle-message-ui-handler.ts |  2 ++
 src/ui/settings-ui-handler.ts       | 13 ++++++++-----
 4 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/src/battle-scene.ts b/src/battle-scene.ts
index 3e002127d47..a3d02be338b 100644
--- a/src/battle-scene.ts
+++ b/src/battle-scene.ts
@@ -71,6 +71,7 @@ export default class BattleScene extends Phaser.Scene {
 	public bgmVolume: number = 1;
 	public seVolume: number = 1;
 	public gameSpeed: integer = 1;
+	public showLevelUpStats: boolean = true;
 	public quickStart: boolean = quickStart;
 	public finalWave: integer = 200;
 	
diff --git a/src/system/settings.ts b/src/system/settings.ts
index a407abde626..104ac760fdc 100644
--- a/src/system/settings.ts
+++ b/src/system/settings.ts
@@ -4,7 +4,8 @@ export enum Setting {
   Game_Speed = "GAME_SPEED",
   Master_Volume = "MASTER_VOLUME",
   BGM_Volume = "BGM_VOLUME",
-  SE_Volume = "SE_VOLUME"
+  SE_Volume = "SE_VOLUME",
+  Show_Stats_on_Level_Up = "SHOW_LEVEL_UP_STATS"
 }
 
 export interface SettingOptions {
@@ -19,14 +20,16 @@ export const settingOptions: SettingOptions = {
   [Setting.Game_Speed]: [ '1x', '1.25x', '1.5x', '2x', '2.5x', '3x', '4x', '5x' ],
   [Setting.Master_Volume]: new Array(11).fill(null).map((_, i) => i ? (i * 10).toString() : 'Mute'),
   [Setting.BGM_Volume]: new Array(11).fill(null).map((_, i) => i ? (i * 10).toString() : 'Mute'),
-  [Setting.SE_Volume]: new Array(11).fill(null).map((_, i) => i ? (i * 10).toString() : 'Mute')
+  [Setting.SE_Volume]: new Array(11).fill(null).map((_, i) => i ? (i * 10).toString() : 'Mute'),
+  [Setting.Show_Stats_on_Level_Up]: [ 'Off', 'On' ]
 };
 
 export const settingDefaults: SettingDefaults = {
   [Setting.Game_Speed]: 0,
   [Setting.Master_Volume]: 5,
   [Setting.BGM_Volume]: 10,
-  [Setting.SE_Volume]: 10
+  [Setting.SE_Volume]: 10,
+  [Setting.Show_Stats_on_Level_Up]: 1
 };
 
 export function setSetting(scene: BattleScene, setting: Setting, value: integer): boolean {
@@ -46,6 +49,9 @@ export function setSetting(scene: BattleScene, setting: Setting, value: integer)
       scene.seVolume = value ? parseInt(settingOptions[setting][value]) * 0.01 : 0;
       scene.updateSoundVolume();
       break;
+    case Setting.Show_Stats_on_Level_Up:
+      scene.showLevelUpStats = settingOptions[setting][value] === 'On';
+      break;
   }
 
   return true;
diff --git a/src/ui/battle-message-ui-handler.ts b/src/ui/battle-message-ui-handler.ts
index 19d8a4dbaea..9425dd464b3 100644
--- a/src/ui/battle-message-ui-handler.ts
+++ b/src/ui/battle-message-ui-handler.ts
@@ -131,6 +131,8 @@ export default class BattleMessageUiHandler extends MessageUiHandler {
   }
 
   promptLevelUpStats(partyMemberIndex: integer, prevStats: integer[], showTotals: boolean, callback?: Function): void {
+    if (!this.scene.showLevelUpStats)
+      return callback();
     const newStats = (this.scene as BattleScene).getParty()[partyMemberIndex].stats;
     let levelUpStatsValuesText = '';
     const stats = Utils.getEnumValues(Stat);
diff --git a/src/ui/settings-ui-handler.ts b/src/ui/settings-ui-handler.ts
index f135daf51ea..5cfd08aa417 100644
--- a/src/ui/settings-ui-handler.ts
+++ b/src/ui/settings-ui-handler.ts
@@ -39,13 +39,14 @@ export default class SettingsUiHandler extends UiHandler {
 
     this.optionsContainer = this.scene.add.container(0, 0);
 
+    const settingLabels = [];
     this.optionValueLabels = [];
 
     Object.keys(Setting).forEach((setting, s) => {
-      const settingLabel = addTextObject(this.scene, 8, 28 + s * 16, setting.replace(/\_/g, ' '), TextStyle.SETTINGS_LABEL);
-      settingLabel.setOrigin(0, 0);
+      settingLabels[s] = addTextObject(this.scene, 8, 28 + s * 16, setting.replace(/\_/g, ' '), TextStyle.SETTINGS_LABEL);
+      settingLabels[s].setOrigin(0, 0);
 
-      this.optionsContainer.add(settingLabel);
+      this.optionsContainer.add(settingLabels[s]);
 
       this.optionValueLabels.push(settingOptions[Setting[setting]].map((option, o) => {
         const valueLabel = addTextObject(this.scene, 0, 0, option, settingDefaults[Setting[setting]] === o ? TextStyle.SETTINGS_SELECTED : TextStyle.WINDOW);
@@ -58,13 +59,15 @@ export default class SettingsUiHandler extends UiHandler {
 
       const totalWidth = this.optionValueLabels[s].map(o => o.width).reduce((total, width) => total += width, 0);
 
-      const totalSpace = 220 - totalWidth / 6;
+      const labelWidth =  Math.max(78, settingLabels[s].displayWidth + 8);
+
+      const totalSpace = (300 - labelWidth) - totalWidth / 6;
       const optionSpacing = Math.floor(totalSpace / (this.optionValueLabels[s].length - 1));
 
       let xOffset = 0;
 
       for (let value of this.optionValueLabels[s]) {
-        value.setPositionRelative(settingLabel, 82 + xOffset, 0);
+        value.setPositionRelative(settingLabels[s], labelWidth + xOffset, 0);
         xOffset += value.width / 6 + optionSpacing;
       }
     });