Add tabs button to show task and item inventory
This commit is contained in:
@@ -22,10 +22,15 @@ namespace BrewMonster.Scripts.Managers
|
||||
{
|
||||
|
||||
[Header("Pack Buttons (assign in Inspector)")]
|
||||
[SerializeField] private List<Button> inventoryPackButtons = new List<Button>(); // byPackage: 0
|
||||
[Tooltip("Main slot grid: shows IVTRTYPE_PACK (0) on Item tab and IVTRTYPE_TASKPACK (2) on Task tab.")]
|
||||
[SerializeField] private List<Button> inventoryPackButtons = new List<Button>();
|
||||
[SerializeField] private List<Button> equipmentPackButtons = new List<Button>(); // byPackage: 1
|
||||
[SerializeField] private List<Button> fashionPackButtons = new List<Button>(); // byPackage: 3
|
||||
|
||||
[Header("Inventory tabs — Item vs Task (original PW)")]
|
||||
[SerializeField] private Button tabItemButton;
|
||||
[SerializeField] private Button tabTaskButton;
|
||||
|
||||
[Header("Detail Panel (assign in Inspector)")]
|
||||
[SerializeField] private ItemInfo detailPanelRoot;
|
||||
[SerializeField] private Vector2 detailPanelOffset = new Vector2(20f, 0f);
|
||||
@@ -89,14 +94,24 @@ namespace BrewMonster.Scripts.Managers
|
||||
private EC_IvtrItem currentSelectedItem;
|
||||
private EC_IvtrItem currentSelectedEquipment;
|
||||
|
||||
private const byte PKG_INVENTORY = 0;
|
||||
private const byte PKG_EQUIPMENT = 1;
|
||||
private const byte PKG_FASHION = 3; // Note: byPackage 3 used for Fashion
|
||||
private const byte PKG_INVENTORY = InventoryConst.IVTRTYPE_PACK;
|
||||
private const byte PKG_EQUIPMENT = InventoryConst.IVTRTYPE_EQUIPPACK;
|
||||
private const byte PKG_TASK = InventoryConst.IVTRTYPE_TASKPACK;
|
||||
private const byte PKG_FASHION = 3; // Trash / fashion box slot in legacy client (GetInventory may not resolve; see host)
|
||||
|
||||
public enum InventoryBagTab
|
||||
{
|
||||
Item,
|
||||
Task,
|
||||
}
|
||||
|
||||
private InventoryBagTab _bagTab = InventoryBagTab.Item;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
model = new InventoryModel();
|
||||
view = new InventoryView();
|
||||
WireBagTabButtons();
|
||||
|
||||
//if (currentDragImage == null)
|
||||
//{
|
||||
@@ -115,7 +130,7 @@ namespace BrewMonster.Scripts.Managers
|
||||
|
||||
private void Start()
|
||||
{
|
||||
RefreshAll();
|
||||
SetBagTab(InventoryBagTab.Item);
|
||||
if (hideDetailOnStart)
|
||||
{
|
||||
ShowDetailPanel(false);
|
||||
@@ -130,6 +145,29 @@ namespace BrewMonster.Scripts.Managers
|
||||
ApplyPendingCurrency();
|
||||
UpdateCharacterInfo();
|
||||
ShowDetailPanel(false);
|
||||
RefreshAll();
|
||||
}
|
||||
|
||||
private void WireBagTabButtons()
|
||||
{
|
||||
if (tabItemButton != null)
|
||||
{
|
||||
tabItemButton.onClick.RemoveAllListeners();
|
||||
tabItemButton.onClick.AddListener(() => SetBagTab(InventoryBagTab.Item));
|
||||
}
|
||||
if (tabTaskButton != null)
|
||||
{
|
||||
tabTaskButton.onClick.RemoveAllListeners();
|
||||
tabTaskButton.onClick.AddListener(() => SetBagTab(InventoryBagTab.Task));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Switches main bag view between normal items (tab 1) and task / quest bag (tab 2), like legacy PW.</summary>
|
||||
public void SetBagTab(InventoryBagTab tab)
|
||||
{
|
||||
_bagTab = tab;
|
||||
ShowDetailPanel(false);
|
||||
RefreshAll();
|
||||
}
|
||||
|
||||
private void Update()
|
||||
@@ -149,9 +187,10 @@ namespace BrewMonster.Scripts.Managers
|
||||
/// </summary>
|
||||
public void UpdateCooldownOverlays()
|
||||
{
|
||||
// Update inventory pack cooldowns
|
||||
// Main grid shows either normal pack or task pack depending on tab
|
||||
// 更新背包冷却
|
||||
UpdatePackageCooldowns(inventoryPackButtons, PKG_INVENTORY);
|
||||
byte mainPack = _bagTab == InventoryBagTab.Item ? PKG_INVENTORY : PKG_TASK;
|
||||
UpdatePackageCooldowns(inventoryPackButtons, mainPack);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -204,8 +243,16 @@ namespace BrewMonster.Scripts.Managers
|
||||
var invItems = model.GetInventoryData(PKG_INVENTORY);
|
||||
var eqpItems = model.GetInventoryData(PKG_EQUIPMENT);
|
||||
var fshItems = model.GetInventoryData(PKG_FASHION);
|
||||
var taskItems = model.GetInventoryData(PKG_TASK);
|
||||
|
||||
view.RenderPackage(inventoryPackButtons, invItems, PKG_INVENTORY, OnInventoryButtonClicked, GetDisplayTextForItem);
|
||||
if (_bagTab == InventoryBagTab.Item)
|
||||
{
|
||||
view.RenderPackage(inventoryPackButtons, invItems, PKG_INVENTORY, OnInventoryButtonClicked, GetDisplayTextForItem);
|
||||
}
|
||||
else
|
||||
{
|
||||
view.RenderPackage(inventoryPackButtons, taskItems, PKG_TASK, OnInventoryButtonClicked, GetDisplayTextForItem);
|
||||
}
|
||||
view.RenderPackage(equipmentPackButtons, eqpItems, PKG_EQUIPMENT, OnInventoryButtonClicked, GetDisplayTextForItem);
|
||||
view.RenderPackage(fashionPackButtons, fshItems, PKG_FASHION, OnInventoryButtonClicked, GetDisplayTextForItem);
|
||||
UpdateCharacterInfo();
|
||||
@@ -378,7 +425,7 @@ namespace BrewMonster.Scripts.Managers
|
||||
return;
|
||||
}
|
||||
|
||||
if (currentSelectedPackage == PKG_INVENTORY)
|
||||
if (currentSelectedPackage == PKG_INVENTORY || currentSelectedPackage == PKG_TASK)
|
||||
{
|
||||
// Check if item is equipment
|
||||
if (currentSelectedItem.IsEquipment())
|
||||
@@ -415,9 +462,9 @@ namespace BrewMonster.Scripts.Managers
|
||||
return;
|
||||
}
|
||||
|
||||
if (currentSelectedPackage != PKG_INVENTORY)
|
||||
if (currentSelectedPackage != PKG_INVENTORY && currentSelectedPackage != PKG_TASK)
|
||||
{
|
||||
Debug.LogWarning("[InventoryUI] Can only use items from inventory package");
|
||||
Debug.LogWarning("[InventoryUI] Can only use items from inventory or task package");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -964,6 +1011,7 @@ namespace BrewMonster.Scripts.Managers
|
||||
switch (package)
|
||||
{
|
||||
case PKG_INVENTORY:
|
||||
case PKG_TASK:
|
||||
list = inventoryPackButtons;
|
||||
break;
|
||||
case PKG_EQUIPMENT:
|
||||
@@ -1075,7 +1123,7 @@ namespace BrewMonster.Scripts.Managers
|
||||
var tmpText = equipButton.GetComponentInChildren<TMPro.TextMeshProUGUI>();
|
||||
if (tmpText != null)
|
||||
{
|
||||
if (package == PKG_INVENTORY)
|
||||
if (package == PKG_INVENTORY || package == PKG_TASK)
|
||||
{
|
||||
//if item is @EC_IvtrEquip and is not equipped, show equip button
|
||||
if(item is EC_IvtrEquip)
|
||||
@@ -1102,7 +1150,7 @@ namespace BrewMonster.Scripts.Managers
|
||||
}
|
||||
else
|
||||
{
|
||||
if (package == PKG_INVENTORY)
|
||||
if (package == PKG_INVENTORY || package == PKG_TASK)
|
||||
{
|
||||
if(item is EC_IvtrEquip)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user