Fixed an issue where the inventory icon was not updated after the player threw an item.
修复玩家扔出物品后,物品栏没有更新图标的问题。
This commit is contained in:
parent
efff63ddd4
commit
617164a4bc
|
@ -766,7 +766,7 @@ public partial class CharacterTemplate : CharacterBody2D
|
|||
var actualQuantity = number < 0 ? item.Quantity : Math.Min(item.Quantity, number);
|
||||
for (var i = 0; i < actualQuantity; i++)
|
||||
{
|
||||
ThrowOneItem(item, velocity);
|
||||
ThrowOneItem(index, item, velocity);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -774,12 +774,13 @@ public partial class CharacterTemplate : CharacterBody2D
|
|||
/// <para>Throw item</para>
|
||||
/// <para>抛出物品</para>
|
||||
/// </summary>
|
||||
/// <param name="index"></param>
|
||||
/// <param name="originalItem"></param>
|
||||
/// <param name="velocity">
|
||||
/// <para>The speed to be applied to the item</para>
|
||||
/// <para>要施加到物品上的速度</para>
|
||||
/// </param>
|
||||
private void ThrowOneItem(IItem originalItem, Vector2 velocity)
|
||||
private void ThrowOneItem(int index, IItem originalItem, Vector2 velocity)
|
||||
{
|
||||
//Remove the item from the item container
|
||||
//从物品容器内取出物品
|
||||
|
@ -837,7 +838,7 @@ public partial class CharacterTemplate : CharacterBody2D
|
|||
break;
|
||||
}
|
||||
|
||||
originalItem.Quantity -= 1;
|
||||
ProtectedItemContainer?.RemoveItem(index, 1);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -114,7 +114,7 @@ public partial class ItemSlotNode : MarginContainer, IItemDisplay
|
|||
/// </summary>
|
||||
private void UpdateTooltipText()
|
||||
{
|
||||
if (Item == null)
|
||||
if (Item is PlaceholderItem or null)
|
||||
{
|
||||
TooltipText = null;
|
||||
return;
|
||||
|
@ -149,6 +149,12 @@ public partial class ItemSlotNode : MarginContainer, IItemDisplay
|
|||
return;
|
||||
}
|
||||
|
||||
if (Item is PlaceholderItem or null)
|
||||
{
|
||||
_quantityLabel.Hide();
|
||||
return;
|
||||
}
|
||||
|
||||
switch (Item?.Quantity)
|
||||
{
|
||||
case null or 1:
|
||||
|
@ -177,12 +183,9 @@ public partial class ItemSlotNode : MarginContainer, IItemDisplay
|
|||
}
|
||||
|
||||
public void Update(IItem? item)
|
||||
{
|
||||
if (item is not PlaceholderItem)
|
||||
{
|
||||
Item = item;
|
||||
UpdateAllDisplay();
|
||||
}
|
||||
UpdateBackground(item is { IsSelect: true });
|
||||
}
|
||||
|
||||
|
|
|
@ -230,6 +230,12 @@ public class UniversalItemContainer(int totalCapacity) : IItemContainer
|
|||
item.Quantity = 0;
|
||||
_itemDictionary.Remove(itemIndex);
|
||||
UpdateNextAvailableIndex();
|
||||
ItemDataChangeEvent?.Invoke(new ItemDataChangeEvent
|
||||
{
|
||||
NewItem = item,
|
||||
NewIndex = itemIndex,
|
||||
Type = Config.ItemDataChangeEventType.Remove
|
||||
});
|
||||
return originalQuantity;
|
||||
}
|
||||
|
||||
|
@ -239,6 +245,12 @@ public class UniversalItemContainer(int totalCapacity) : IItemContainer
|
|||
{
|
||||
_itemDictionary.Remove(itemIndex);
|
||||
UpdateNextAvailableIndex();
|
||||
ItemDataChangeEvent?.Invoke(new ItemDataChangeEvent
|
||||
{
|
||||
NewItem = item,
|
||||
NewIndex = itemIndex,
|
||||
Type = Config.ItemDataChangeEventType.Remove
|
||||
});
|
||||
}
|
||||
|
||||
return removed;
|
||||
|
|
Loading…
Reference in New Issue
Block a user