using BrewMonster.Network; using BrewMonster.Scripts.Managers; using BrewMonster.UI; using PerfectWorld.Scripts.Managers; using System; using System.Collections.Generic; using BrewMonster.Scripts; using TMPro; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; namespace BrewMonster { public class DlgInstall : AUIDialog { public enum InstallMode { Enchase, Disenchase } [Header("Mode")][SerializeField] private InstallMode m_Mode = InstallMode.Enchase; [Header("Slot First")] [SerializeField] private Transform m_SlotFirstParent; [SerializeField] private TextMeshProUGUI m_TxtFirstName; [Header("Slot Second")] [SerializeField] private Transform m_SlotSecondParent; [SerializeField] private TextMeshProUGUI m_TxtSecondName; [Header("Buttons and Money")] [SerializeField] private TextMeshProUGUI m_TxtMoney; [SerializeField] private Button m_useItem; [SerializeField] private Button m_BtnMergeOrReset; [SerializeField] private Button m_BtnCancel; [SerializeField] private Button m_BtnClose; [SerializeField] private Sprite khung_item; [SerializeField] private GameObject itemInventoryRoot; private EC_IvtrItem m_SelectedEquip; private EC_IvtrItem m_SelectedMaterial; private int m_FirstInvSlot = -1; private int m_SecondInvSlot = -1; private int m_install_price = -1; public InstallMode GetInstallMode => m_Mode; public EC_IvtrItem SelectedEquip => m_SelectedEquip; public int FirstSlotIndex => m_FirstInvSlot; public override void Awake() { base.Awake(); RegisterClick(m_SlotFirstParent, OnClickEquipSlot); if (m_Mode == InstallMode.Enchase && m_SlotSecondParent != null) { RegisterClick(m_SlotSecondParent, OnClickMaterialSlot); } } public override void OnEnable() { base.OnEnable(); //todo need to set from other class // SetName("Win_Enchase"); m_BtnMergeOrReset.onClick.AddListener(OnClickedMergeOrReset); m_BtnCancel.onClick.AddListener(OnCommandCancel); m_BtnClose.onClick.AddListener(OnCommandCancel); m_useItem.onClick.AddListener(OnUseItemClicked); m_install_price = -1; if (m_SlotSecondParent != null) m_SlotSecondParent.gameObject.SetActive(m_Mode == InstallMode.Enchase); ClearEquiment(); ClearStone(); } public override void OnDisable() { base.OnDisable(); m_BtnMergeOrReset.onClick.RemoveListener(OnClickedMergeOrReset); m_BtnCancel.onClick.RemoveListener(OnCommandCancel); m_BtnClose.onClick.RemoveListener(OnCommandCancel); m_useItem.onClick.RemoveListener(OnUseItemClicked); } 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