From de36b370d6a4368e8bcec4d100baecb502b67270 Mon Sep 17 00:00:00 2001 From: VuNgocHaiC7 Date: Wed, 21 Jan 2026 17:37:35 +0700 Subject: [PATCH] complete UI DlgInstall.prefab --- .../Scripts/UI/Dialogs/DlgInstall.cs | 217 +++++++++++++----- Assets/Prefabs/UI/DlgInstall.prefab | 9 +- 2 files changed, 157 insertions(+), 69 deletions(-) diff --git a/Assets/PerfectWorld/Scripts/UI/Dialogs/DlgInstall.cs b/Assets/PerfectWorld/Scripts/UI/Dialogs/DlgInstall.cs index 258f439dff..6f306b8923 100644 --- a/Assets/PerfectWorld/Scripts/UI/Dialogs/DlgInstall.cs +++ b/Assets/PerfectWorld/Scripts/UI/Dialogs/DlgInstall.cs @@ -31,15 +31,14 @@ namespace BrewMonster [SerializeField] private Button m_BtnInstall; [SerializeField] private Button m_BtnCancel; - [Header("Item Info Panel")] - public Transform itemInfoRoot; - public TextMeshProUGUI infoNameText; - public TextMeshProUGUI infoDescText; - public TextMeshProUGUI infoExtraText; + [SerializeField] private Sprite khung_item; private EC_IvtrItem m_SelectedEquip; private EC_IvtrItem m_SelectedMaterial; + private int m_FirstInvSlot = -1; + private int m_SecondInvSlot = -1; + public override void Awake() { base.Awake(); @@ -47,22 +46,61 @@ namespace BrewMonster RegisterDrop(m_SlotSecondlParent, OnDropMaterial); RegisterClick(m_SlotFirstParent, OnClickEquipSlot); RegisterClick(m_SlotSecondlParent, OnClickMaterialSlot); - - // Hide item info panel initially - if (itemInfoRoot != null) - itemInfoRoot.gameObject.SetActive(false); } public void OnpenInstall(uint npcId) { - + } public void CloseInstall() { gameObject.SetActive(false); + RestoreInventoryColors(); } + private void RestoreInventoryColors() + { + var canvas = FindFirstObjectByType(); + if (canvas == null) + return; + + if (m_FirstInvSlot >= 0) + { + var btn = FindInventoryButtonBySlot(m_FirstInvSlot); + SetInventorySlotGray(btn, false); + m_FirstInvSlot = -1; + } + + if (m_SecondInvSlot >= 0) + { + var btn = FindInventoryButtonBySlot(m_SecondInvSlot); + SetInventorySlotGray(btn, false); + m_SecondInvSlot = -1; + } + } + + private Button FindInventoryButtonBySlot(int slot) + { + var inventoryUI = FindFirstObjectByType(); + if (inventoryUI == null) + return null; + + var field = typeof(EC_InventoryUI) + .GetField("inventoryPackButtons", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); + + if (field == null) + return null; + + var list = field.GetValue(inventoryUI) as List