Exemplo n.º 1
0
        private void RemoveUnitFromContent(BattleUnit unit, Transform content, AIIManager manager)
        {
            UnitItem[] units = content.GetComponentsInChildren <UnitItem>();

            for (int i = 0; i < units.Length; i++)
            {
                if (units[i].unit == unit)
                {
                    AxisInteractableItem item = units[i].GetComponent <AxisInteractableItem>();

                    if (item == manager.firstItem)
                    {
                        manager.firstItem = item.downItem;
                    }

                    if (item.downItem != null)
                    {
                        item.downItem.upItem = item.upItem;
                    }

                    if (item.upItem != null)
                    {
                        item.upItem.downItem = item.downItem;
                    }

                    if (item == manager.lastItem)
                    {
                        manager.lastItem = item.upItem;
                    }
                }
            }
        }
Exemplo n.º 2
0
        public void LoadContents()
        {
            for (int i = 0; i < Party.Instance.characters.Count; i++)
            {
                Hero hero = Party.Instance.characters[i].archetype;
                HeroesImages[i].sprite = hero.Portrait;

                foreach (SkillsMenuSkillItem item in SkillsContents[i].transform.GetComponentsInChildren <SkillsMenuSkillItem>())
                {
                    Destroy(item.gameObject);
                }

                AIIManager           manager  = SkillsContents[i];
                AxisInteractableItem lastItem = null;

                foreach (PlayerSkill skill in hero.skills)
                {
                    GameObject newSkill = Instantiate(SkillItem, SkillsContents[i].transform);
                    newSkill.GetComponent <SkillsMenuSkillItem>().LoadSkill(skill, loader, SkillsContents[i].GetComponent <HeroSkillsContent>());

                    AxisInteractableItem newItem = newSkill.GetComponent <AxisInteractableItem>();
                    if (lastItem == null)
                    {
                        manager.firstItem = newItem;
                    }
                    else
                    {
                        lastItem.downItem = newItem;
                        newItem.upItem    = lastItem;
                    }
                    lastItem = newItem;
                }
            }
        }
Exemplo n.º 3
0
        private IEnumerator HeroSkill(int heroIndex)
        {
            heroesImages[heroIndex].sprite = changes.heroes[heroIndex].Portrait;
            heroesImages[heroIndex].GetComponent <Animator>().runtimeAnimatorController = HeroImageAnimator;

            AIIManager           manager  = skillsContents[heroIndex].GetComponent <AIIManager>();
            AxisInteractableItem lastItem = null;

            for (int i = 0; i < changes.skillReferences[heroIndex].Count; i++)
            {
                UpdatedSkill newSkill = Instantiate(UpdatedSkill, skillsContents[heroIndex]).GetComponent <UpdatedSkill>();
                newSkill.LoadUpdatedSkill(changes.heroSkills[heroIndex][i], changes.skillReferences[heroIndex][i]);

                newSkill.GetComponent <VictorySkillListItem>().loader = Loader;

                AxisInteractableItem newItem = newSkill.GetComponent <AxisInteractableItem>();
                if (lastItem != null)
                {
                    newItem.upItem    = lastItem;
                    lastItem.downItem = newItem;
                }
                else
                {
                    manager.firstItem = newItem;
                }
                lastItem = newItem;

                yield return(new WaitForSeconds(timeBetweenSkillsShown));

                newSkill.StartAnimation();
            }

            for (int i = 0; i < changes.newSkills[heroIndex].Count; i++)
            {
                UpdatedSkill newSkill = Instantiate(UpdatedSkill, skillsContents[heroIndex]).GetComponent <UpdatedSkill>();
                newSkill.LoadNewSkill(changes.newSkills[heroIndex][i]);

                AxisInteractableItem newItem = newSkill.GetComponent <AxisInteractableItem>();
                if (lastItem != null)
                {
                    newItem.upItem    = lastItem;
                    lastItem.downItem = newItem;
                }
                else
                {
                    manager.firstItem = newItem;
                }
                lastItem = newItem;

                yield return(new WaitForSeconds(timeBetweenSkillsShown));

                newSkill.StartAnimation();
            }
        }
Exemplo n.º 4
0
        public BattleUnit LoadUnit(Unit unit)
        {
            GameObject newUnit      = Instantiate(unitPrefab, (unit.IsHero)? heroesContent : enemiesContent);
            int        sortingLayer = 0;

            foreach (Transform child in ((unit.IsHero)? heroesContent : enemiesContent))
            {
                sortingLayer++;
                sortingLayer++;
            }
            BattleUnit battleUnit = newUnit.GetComponentInChildren <BattleUnit>();

            battleUnit.GetComponent <SpriteRenderer>().sortingOrder = sortingLayer;
            battleUnit.Configure(unit);
            Sprite unitSprite            = battleUnit.GetComponent <SpriteRenderer>().sprite;
            AxisInteractableItem newItem = battleUnit.GetComponent <AxisInteractableItem>();

            AIIManager manager = (unit.IsHero)? heroesManager : enemiesManager;

            battleUnit.battleItem = battleUnit.GetComponent <UnitItem>();


            battleUnit.battleItem.layout.preferredWidth  = unit.BoundsSizeX * 64;
            battleUnit.battleItem.layout.preferredHeight = unit.BoundsSizeY * 64;

            newUnit.transform.rotation = Quaternion.identity;

            Image[] unitImages = newUnit.GetComponentsInChildren <Image>();
            unitImages[0].sprite = (unit.GetType() == typeof(Hero))? heroIndicator : enemyIndicator;
            unitImages[1].sprite = unitSprite;

            // Ordena o item na lista
            if (manager.lastItem != null)
            {
                newItem.upItem            = manager.lastItem;
                manager.lastItem.downItem = newItem;
            }
            else
            {
                manager.firstItem = newItem;
            }
            manager.lastItem = newItem;

            return(battleUnit);
        }
Exemplo n.º 5
0
        private void ReinsertUnitInContent(BattleUnit unit, Transform content, AIIManager manager)
        {
            UnitItem[]           units    = content.GetComponentsInChildren <UnitItem>();
            AxisInteractableItem thisItem = null;

            foreach (UnitItem item in units)
            {
                if (item.unit == unit)
                {
                    thisItem = item.GetComponent <AxisInteractableItem>();
                    break;
                }
            }
            AxisInteractableItem previousItem = null;
            AxisInteractableItem nextItem     = manager.firstItem;

            while (nextItem != manager.lastItem && (System.Array.IndexOf(units, nextItem.GetComponent <UnitItem>()) < System.Array.IndexOf(units, thisItem.GetComponent <UnitItem>())))
            {
                previousItem = nextItem;
                nextItem     = nextItem.downItem;
            }

            thisItem.upItem = previousItem;
            if (previousItem == null)
            {
                manager.firstItem = thisItem;
            }
            else
            {
                previousItem.downItem = thisItem;
            }
            thisItem.downItem = nextItem;
            if (nextItem == null)
            {
                manager.lastItem = thisItem;
            }
            else
            {
                thisItem.downItem = nextItem;
            }
        }
Exemplo n.º 6
0
        private void LoadTeam(UnitType team, Transform content, AIIManager manager)
        {
            List <BattleUnit> units = BattleManager.instance.GetTeam(team);

            foreach (AxisInteractableItem item in content.GetComponentsInChildren <AxisInteractableItem>())
            {
                Destroy(item.gameObject);
            }

            // Variável auxiliar para a ordenação dos itens
            AxisInteractableItem lastItem = null;

            // Passa por todas as unidades da lista, adicionando-as no menu e as ordenando
            foreach (BattleUnit unit in units)
            {
                // Instancia um novo item e o coloca no content
                GameObject newUnit = Instantiate(unitPrefab, content);
                newUnit.transform.rotation = Quaternion.identity;

                unit.battleItem      = newUnit.GetComponent <UnitItem>();
                unit.battleItem.unit = unit;

                newUnit.GetComponent <Image>().color = unit.unit.color;

                unit.Configure(unit.unit);

                // Ordena o item na lista
                AxisInteractableItem newItem = newUnit.GetComponent <AxisInteractableItem>();
                if (lastItem != null)
                {
                    newItem.upItem    = lastItem;
                    lastItem.downItem = newItem;
                }
                else
                {
                    manager.firstItem = newItem;
                }
                lastItem = newItem;
            }
        }
 /// <summary>
 /// Função chamada para pedir um componente ao provedor.
 /// Pede um AIIManager.
 /// </summary>
 /// <param name="provider"> Game object que provê o componente desejado. </param>
 public override void RequestComponent(GameObject provider)
 {
     manager = provider.GetComponent <AIIManager>();
 }