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; } } } }
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)); } }