Beispiel #1
0
        public void GoToFirstLine()
        {
            if (BattleControll.battleControll.EnemyLines <= 1)
            {
                return;
            }
            UnitLogic[,] units = BattleControll.battleControll.enemyUnitsParent.units;

            int y = units.GetLength(1) - 1;

            for (int x = 0; x < units.GetLength(0); x++)
            {
                if (units[x, y] == null)
                {
                    UnitLogic logic = null;
                    for (int q = 0; q < units.GetLength(0); q++)
                    {
                        if (!units[q, 0].unitObject.IsRangeUnit)
                        {
                            if (logic == null || units[q, 0].unitlogic.Hp > logic.unitlogic.Hp || units[q, 0].unitlogic.Hp == logic.unitlogic.Hp && Mathf.Abs(x - q) < Math.Abs(x - logic.position.x))
                            {
                                logic = units[q, 0];
                            }
                        }
                    }
                    if (logic != null)
                    {
                        Vector3 pos = BattleControll.battleControll.enemyUnitsParent.GetPosition(x, y);

                        logic.SetPosition(new Vector2Int(x, y), pos);

                        BattleControll.battleControll.enemyUnitsParent.units[logic.position.x, logic.position.y] = null;
                        BattleControll.battleControll.enemyUnitsParent.units[x, y] = logic;
                    }
                }
            }
        }
Beispiel #2
0
        public void PositionReload(UnitLogic unit)
        {
            int        Lines    = BattleControll.loadedLevel.EnemiesOnField / BattleControll.loadedLevel.EnemyRows;
            Vector2Int myPos    = unit.position;
            UnitLogic  swapUnit = null;
            Transform  enemies  = BattleControll.battleControll.enemyUnitsParent.transform;

            for (int i = 0; i < enemies.childCount; i++)
            {
                UnitLogic enamy = enemies.GetChild(i).GetComponent <UnitLogic>();
                if (enamy == unit)
                {
                    continue;
                }
                if (unit.unitObject.FirstLinePriority)
                {
                    if (enamy.position.y > myPos.y)
                    {
                        if (swapUnit == null)
                        {
                            swapUnit = enamy;
                        }
                        else
                        {
                            if (enamy.unitlogic.Hp < swapUnit.unitlogic.Hp)
                            {
                                swapUnit = enamy;
                            }
                        }
                    }
                }
                else if (unit.unitObject.IsRangeUnit && unit.position.y != 0)
                {
                    if (enamy.position.y == 0 && !enamy.unitObject.IsRangeUnit)
                    {
                        if (swapUnit == null)
                        {
                            swapUnit = enamy;
                        }
                        else
                        {
                            if (enamy.unitlogic.Hp > swapUnit.unitlogic.Hp)
                            {
                                swapUnit = enamy;
                            }
                        }
                    }
                }
                else
                {
                    // if (unit.position.y > 0 && enamy.position.y > 0)
                    if (unit.unitlogic.Hp <= unit.unitObject.unitProperty.Hp / 3 && !enamy.unitObject.IsRangeUnit && unit.position.y > 0)
                    {
                        if (swapUnit == null)
                        {
                            if (enamy.unitlogic.Hp > unit.unitlogic.Hp && Math.Abs(BattleControll.heroLogic.GetRealPos() - enamy.position.x) > Math.Abs(BattleControll.heroLogic.GetRealPos() - unit.position.x) || enamy.position.y == 0 && enamy.unitlogic.Hp > unit.unitlogic.Hp)
                            {
                                swapUnit = enamy;
                            }
                        }
                        else if (enamy.position.y == 0 && enamy.unitlogic.Hp > unit.unitlogic.Hp)
                        {
                            if (swapUnit.position.y > 0 || enamy.unitlogic.Hp > swapUnit.unitlogic.Hp)
                            {
                                swapUnit = enamy;
                            }
                        }
                        else if (enamy.unitlogic.Hp > unit.unitlogic.Hp && Math.Abs(BattleControll.heroLogic.GetRealPos() - enamy.position.x) > Math.Abs(BattleControll.heroLogic.GetRealPos() - swapUnit.position.x))
                        {
                            if (swapUnit.position.y != 0 || enamy.unitlogic.Hp > swapUnit.unitlogic.Hp * 2)
                            {
                                swapUnit = enamy;
                            }
                        }
                    }
                }
            }

            if (swapUnit != null && swapUnit != unit)
            {
                Vector2Int newPos = swapUnit.position;
                Vector3    pos1   = BattleControll.battleControll.enemyUnitsParent.GetPosition(newPos.x, newPos.y);
                Vector3    pos2   = BattleControll.battleControll.enemyUnitsParent.GetPosition(myPos.x, myPos.y);

                swapUnit.SetPosition(myPos, pos2);
                unit.SetPosition(newPos, pos1);

                BattleControll.battleControll.enemyUnitsParent.units[myPos.x, myPos.y]   = swapUnit;
                BattleControll.battleControll.enemyUnitsParent.units[newPos.x, newPos.y] = unit;

                //   unit.unitlogic.UnitAction = 0;

                StartCoroutine(enumerator(unit, swapUnit, myPos, newPos));
            }
        }