Fix issue with UI container update

This commit is contained in:
Vova
2023-12-18 10:50:05 +02:00
parent 6bd4971672
commit f6e0b24d81
3 changed files with 58 additions and 28 deletions
+29 -22
View File
@@ -10,40 +10,47 @@ public class ContainerItemsUI : MonoBehaviour
[SerializeField]
private Transform _itemUITemplate;
private ContainerItem _playerContainer;
private void Awake()
{
_container.gameObject.SetActive(false);
}
private void Update()
private void Start()
{
if (Player.Instance.IsHoldContainerItem())
Player.Instance.OnContainerChanged += OnContainerChanged;
}
private void OnContainerChanged(object sender, bool e)
{
if (e)
{
var playerContainer = Player.Instance.GetContainerItem();
_container.gameObject.SetActive(true);
if (playerContainer.IsSalebleItems())
{
ClearObject();
var playerItemsList = playerContainer.GetItems();
for (int count = 0; count < playerItemsList.Count; count++)
{
var itemUI = Instantiate(_itemUITemplate, _itemsList);
itemUI.gameObject.SetActive(true);
itemUI.GetComponent<ItemDescriptionUI>().SetItem((SellableItemSO)playerItemsList[count]);
}
}
else
{
ClearObject();
_container.gameObject.SetActive(false);
}
_playerContainer = Player.Instance.GetContainerItem();
_playerContainer.OnItemsChange += OnItemsChange;
}
else
{
ClearObject();
_container.gameObject.SetActive(false);
_playerContainer.OnItemsChange -= OnItemsChange;
_playerContainer = null;
}
}
private void OnItemsChange(object sender, System.EventArgs e)
{
if (_playerContainer.IsSalebleItems())
{
ClearObject();
var playerItemsList = _playerContainer.GetItems();
for (int count = 0; count < playerItemsList.Count; count++)
{
var itemUI = Instantiate(_itemUITemplate, _itemsList);
itemUI.gameObject.SetActive(true);
itemUI.GetComponent<ItemDescriptionUI>().SetItem((SellableItemSO)playerItemsList[count]);
}
}
}