コード例 #1
0
    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();
            }
        }
    }
コード例 #2
0
    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();
            }
        }
    }
コード例 #3
0
    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);
        }
    }