update UI. add more developed feature into UI

This commit is contained in:
Chomper9981
2026-02-27 17:27:26 +07:00
parent ee4fe6891b
commit b73de9553e
15 changed files with 779 additions and 200 deletions
@@ -3,6 +3,7 @@ using BrewMonster.Common;
using BrewMonster.Network;
using BrewMonster.Scripts;
using BrewMonster.Scripts.UI;
using BrewMonster.Scripts.Task.UI;
using CSNetwork.GPDataType;
using ModelRenderer.Scripts.GameData;
using PerfectWorld.Scripts.Managers;
@@ -16,15 +17,16 @@ using UnityEngine.UI;
namespace BrewMonster.Scripts.Managers
{
public class EC_InventoryUI : MonoBehaviour
public class EC_InventoryUI : MonoBehaviour, IRefreshLayout
{
[Header("Pack Buttons (assign in Inspector)")]
[SerializeField] private List<Button> inventoryPackButtons = new List<Button>(); // byPackage: 0
[SerializeField] private List<Button> equipmentPackButtons = new List<Button>(); // byPackage: 1
[SerializeField] private List<Button> fashionPackButtons = new List<Button>(); // byPackage: 3
[Header("Detail Panel (assign in Inspector)")]
[SerializeField] private GameObject detailPanelRoot;
[SerializeField] private ItemInfo detailPanelRoot;
[SerializeField] private Vector2 detailPanelOffset = new Vector2(20f, 0f);
[SerializeField] private bool hideDetailOnStart = true;
[SerializeField] private EC_UIUtility.TextOutlet nameText;
@@ -127,6 +129,7 @@ namespace BrewMonster.Scripts.Managers
{
// Ensure cached values are pushed when the UI is enabled
ApplyPendingCurrency();
ShowDetailPanel(false);
}
private void Update()
@@ -325,9 +328,9 @@ namespace BrewMonster.Scripts.Managers
currentSelectedEquipment = CreateEquipmentFromItemData(itemData);
// Position detail panel near the clicked item button
PositionDetailPanelNearButton(package, slot);
FillDetailPanel(package, itemData);
PositionDetailPanelNearButton(package, slot);
}
else
{
@@ -957,7 +960,7 @@ namespace BrewMonster.Scripts.Managers
private void ShowDetailPanel(bool show)
{
EC_UIUtility.ShowPanel(detailPanelRoot, show);
EC_UIUtility.ShowPanel(detailPanelRoot.gameObject, show);
}
private Button GetButtonForSlot(byte package, int slot)
@@ -1059,7 +1062,7 @@ namespace BrewMonster.Scripts.Managers
// Show panel first
// 先显示面板
ShowDetailPanel(true);
descriptionText.tmp.gameObject.GetComponent<ItemInfoText>()?.RefreshLayout();
}
@@ -1080,8 +1083,17 @@ namespace BrewMonster.Scripts.Managers
{
if (package == PKG_INVENTORY)
{
tmpText.text = "Equip";
equipButton.gameObject.SetActive(true);
//if item is @EC_IvtrEquip and is not equipped, show equip button
if(item is EC_IvtrEquip)
{
tmpText.text = "Equip";
equipButton.gameObject.SetActive(true);
}
else
{
tmpText.text = "Use";
equipButton.gameObject.SetActive(true);
}
}
else if (package == PKG_EQUIPMENT)
{
@@ -1098,8 +1110,16 @@ namespace BrewMonster.Scripts.Managers
{
if (package == PKG_INVENTORY)
{
buttonText.text = "Equip";
equipButton.gameObject.SetActive(true);
if(item is EC_IvtrEquip)
{
buttonText.text = "Equip";
equipButton.gameObject.SetActive(true);
}
else
{
buttonText.text = "Use";
equipButton.gameObject.SetActive(true);
}
}
else if (package == PKG_EQUIPMENT)
{
@@ -1265,5 +1285,16 @@ namespace BrewMonster.Scripts.Managers
draggedItemSourceSlot = -1;
draggedItemSourcePackage = 0;
}
public void RefreshLayout()
{
var rectTransform = GetComponent<RectTransform>();
if (rectTransform == null)
{
return;
}
rectTransform.ForceUpdateRectTransforms();
LayoutRebuilder.ForceRebuildLayoutImmediate(rectTransform);
}
}
}