void UnAssignEquipmentToCharacter(Equipment.EquipmentPosition position) { Equipment equipment = character.equipments.SingleOrDefault(e => e.Position == position); if (equipment == null) { return; } character.equipments.Remove(equipment); equipment.UsingAmount--; Debug.Log($"Remove {equipment.Name} from {character.Name}. Now {equipment.Name} has {equipment.UsingAmount} out of {equipment.AllAmount}. "); equipmentListPanel.SetActive(false); OnClickCharacterPicture(); }
public void RefreshEquipmentsList(string _position) { Equipment.EquipmentPosition position = (Equipment.EquipmentPosition)Enum.Parse(typeof(Equipment.EquipmentPosition), _position); GameObject container = transform.Find("MainPanel/WearingItemSlotPanel/EquipmentPanel/EquipmentListPanel/Scrollview/Container").gameObject; foreach (Transform transform in container.transform) { Destroy(transform.gameObject); } GameObject cancelButtonGO = Instantiate(Resources.Load("Prefabs/UI/ImageWithAmountPrefab") as GameObject, container.transform); cancelButtonGO.name = "CancelEquippingButton"; cancelButtonGO.GetComponent <Image>().sprite = Resources.Load <Sprite>("Sprites/UI/Button/BtnCancel"); cancelButtonGO.GetComponentInChildren <Text>().text = ""; cancelButtonGO.AddComponent <Button>().onClick.AddListener(() => { UnAssignEquipmentToCharacter(position); UpdateInformation(); }); foreach (var equipment in ItemManager.Instance.AllEquipments.Where(e => e.Value.Position == position)) { GameObject itemGO = Instantiate(Resources.Load("Prefabs/UI/ImageWithAmountPrefab") as GameObject, container.transform); itemGO.name = equipment.Value.Name; Image image = itemGO.GetComponent <Image>(); image.sprite = Resources.Load <Sprite>(equipment.Value.spritePath); Text amount = itemGO.GetComponentInChildren <Text>(); amount.text = $"{equipment.Value.UsingAmount} / {equipment.Value.AllAmount}"; Button button = itemGO.AddComponent <Button>(); button.onClick.AddListener(() => { AssignEquipmentToCharacter(equipment.Value); UpdateInformation(); }); if (equipment.Value.AllAmount - equipment.Value.UsingAmount == 0) { image.color = Color.red; button.interactable = false; } } }