From 7067f40a6109fe5cdc482fa971017301cdfcd1ba Mon Sep 17 00:00:00 2001 From: HungDK <> Date: Wed, 27 May 2026 09:23:10 +0700 Subject: [PATCH 1/4] Add logic of account storage --- .../Scripts/Managers/EC_AccountStorageUI.cs | 126 ++++++++++++++++++ .../Managers/EC_AccountStorageUI.cs.meta | 2 + 2 files changed, 128 insertions(+) create mode 100644 Assets/PerfectWorld/Scripts/Managers/EC_AccountStorageUI.cs create mode 100644 Assets/PerfectWorld/Scripts/Managers/EC_AccountStorageUI.cs.meta diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_AccountStorageUI.cs b/Assets/PerfectWorld/Scripts/Managers/EC_AccountStorageUI.cs new file mode 100644 index 0000000000..5c62e189dd --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Managers/EC_AccountStorageUI.cs @@ -0,0 +1,126 @@ +using BrewMonster; +using BrewMonster.Scripts; +using BrewMonster.UI; +using UnityEngine; +using UnityEngine.UI; + +namespace BrewMonster.Scripts.Managers +{ + /// + /// Money-only account warehouse UI. C++ uses Win_Storage3, but this Unity port keeps it + /// separate from so normal warehouse item logic cannot leak in. + /// + public class EC_AccountStorageUI : AUIDialog + { + [SerializeField] private Button closeButton; + [SerializeField] private Button depositMoneyButton; + [SerializeField] private Button withdrawMoneyButton; + [SerializeField] private Text accountMoneyTextLegacy; + [SerializeField] private TMPro.TextMeshProUGUI accountMoneyTextTMP; + + private static EC_AccountStorageUI s_instance; + + public override void Awake() + { + base.Awake(); + s_instance = this; + ResolveButtons(); + WireButtons(); + } + + private void OnDestroy() + { + if (s_instance == this) + s_instance = null; + } + + public static void RefreshMoneyStatic() + { + s_instance?.RefreshMoney(); + } + + public void RefreshAll() + { + RefreshMoney(); + } + + void ResolveButtons() + { + var buttons = GetComponentsInChildren