public override void OnDrop(PointerEventData eventData) { if (CanDrop) { DragSkill drag = eventData.pointerDrag.GetComponent <DragSkill>(); if (drag != null && drag.CanDrag) { var oldParentDrop = drag.OldParent.GetComponent <ADropToMe>(); oldParentDrop.RemoveFromThisInventory(null); AddToThisInventory(drag.SkillStack); Destroy(drag.gameObject); RefreshUI(); } } }
public override void OnDrop(PointerEventData eventData) { if (CanDrop) { DragSkill drag = eventData.pointerDrag.GetComponent <DragSkill>(); if (drag != null && drag.CanDrag) { var oldDrop = drag.OldParent.GetComponent <ADropToMe>(); oldDrop.RemoveFromThisInventory(null); //если в инвентаре есть стак if (transform.childCount > 0) { RemoveFromThisInventory(null); } AddToThisInventory(drag.SkillStack); Destroy(drag.gameObject); RefreshUI(); } } }
override public void RefreshUI() { if (!gameObject.activeInHierarchy) { return; } var savedSkills = GameManager.Instance.SavablePlayerData.PlayerProgress.Skills.skills; int cnt = skillCells.Length; for (int i = 0; i < cnt; i++) { //загружаес сохранённые статы skills[i].SkillStats = skills[i].Skill.CalcUpgradedStats( savedSkills.Find((t) => { return(t.Id == skills[i].Skill.Id); }).Upgrades ); // Image img = null; GameObject item = null; DragSkill drag = null; //если в ячейке нет скила, то добавляем if (skillCells[i].transform.childCount == 0) { item = Instantiate(skillItemOriginal, skillCells[i].transform); drag = item.GetComponent <DragSkill>(); drag.SkillStack.Skill = skills[i].Skill; drag.SkillStack.SkillStats = skills[i].SkillStats; drag.BeforeClick += BeforeDragClick; } //если уже есть скилл в ячейке, то вставляем туда нужную инфу else { drag = skillCells[i].transform.GetChild(0).GetComponent <DragSkill>(); drag.SkillStack.Skill = skills[i].Skill; drag.SkillStack.SkillStats = skills[i].SkillStats; } img = drag.GetComponent <Image>(); img.sprite = skills[i].Skill.MainPropertie.Icon; drags[i] = drag; if (drag.SkillStack.Skill.Id == currentSelectedSkill) { if (skillCells[i] != null) { skillCells[i].GetComponent <Image>().color = selectedSkillCellColor; } if (selectedSkillText != null) { selectedSkillText.ResourceName = drag.SkillStack.Skill.MainPropertie.StringResourceName; selectedSkillText.ReloadText(); } } else { if (skillCells[i] != null) { skillCells[i].GetComponent <Image>().color = cellDefaultColor; } } if (i < allUpgrades.Count && allUpgrades[i] != null) { allUpgrades[i].gameObject.SetActive(false); } bool unlocked = true; ISkillLockable sl = skills[i].SkillStats as ISkillLockable; if (sl != null) { unlocked = sl.Unlocked; } Executable first = Squad.playerSquadInstance.Inventory.FirstSkill.Skill; Executable second = Squad.playerSquadInstance.Inventory.SecondSkill.Skill; // если такой скилл уже взят как первый скилл или если такой скилл уже взят как второй скилл или самый первый апгрейд не вкачан if ((first != null && skills[i].Skill.Id == first.Id) || (second != null && skills[i].Skill.Id == second.Id) || !unlocked) { drag.CanDrag = false; img.color = disabledColor; if (first != null && skills[i].Skill.Id == first.Id) { Squad.playerSquadInstance.Inventory.FirstSkill.SkillStats = skills[i].SkillStats; } else if (second != null && skills[i].Skill.Id == second.Id) { Squad.playerSquadInstance.Inventory.SecondSkill.SkillStats = skills[i].SkillStats; } if (SquadSkillsInventoryUI.Instance != null) { SquadSkillsInventoryUI.Instance.RefreshUI(); } } else { drag.CanDrag = true; img.color = Color.white; } } SkillsUpgrade su = allUpgrades.Find(s => s.SkillId == currentSelectedSkill); if (su != null) { su.gameObject.SetActive(true); } }