From 7067f40a6109fe5cdc482fa971017301cdfcd1ba Mon Sep 17 00:00:00 2001
From: HungDK <>
Date: Wed, 27 May 2026 09:23:10 +0700
Subject: [PATCH] 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