void Awake() { health = GetComponentInChildren <Player_HealthController>(); movement = GetComponent <PlanetMovement>(); ability = GetComponent <ISpecialAbility>(); Camera.main.GetComponent <CameraFollow>().AddPlayers(gameObject.transform); }
//специальные действия выполняют все юниты, начиная с первого (нулевой в дуэли сражается) private IEnumerable <ActionResult> DoSpecialActionsForArmy(IArmy myArmy, IArmy enemyArmy, Random random) { List <ActionResult> results = new List <ActionResult>(); for (int i = 1; i < myArmy.Count; i++) { if (myArmy.GetUnit(i).IsAlive()) { ISpecialAbility unit = myArmy.GetUnit(i) as ISpecialAbility; if (unit != null) { results.Add(unit.DoSpecialAction(i, myArmy, enemyArmy, random)); } } } return(results); }
public void SpecialAbilities(IArmy enemiesArmy) { int unitsCount = this.Units.Count(); for (int i = 0; i < unitsCount; i++) { IUnit unit = this.Units[i]; if (!unit.isDead()) { ISpecialAbility saUnit = unit as ISpecialAbility; if (saUnit != null && saUnit.SpecialAbilityProc()) { saUnit.DoSpecialAbility(this, enemiesArmy); } } } }
public List <IUnit> getSpecialAbilityTargets(IArmy friendlyArmy, IArmy enemiesArmy, ISpecialAbility unit) { List <IUnit> friendlyUnits = friendlyArmy.Units; int position = friendlyUnits.IndexOf(unit); int i = 0; List <IUnit> availableRange = new List <IUnit>(); foreach (var armyUnit in friendlyUnits) { if (!armyUnit.isDead() && Math.Abs(position - i) <= unit.SpecialAbilityRange && i != position) { availableRange.Add(armyUnit); } i++; } int range = unit.SpecialAbilityRange - position; i = 0; while (i < range && i < enemiesArmy.Units.Count) { IUnit armyUnit = enemiesArmy.Units[i]; if (!armyUnit.isDead()) { availableRange.Add(armyUnit); } i++; } return(availableRange); }
public List <IUnit> getSpecialAbilityTargets(IArmy friendlyArmy, IArmy enemiesArmy, ISpecialAbility unit) { List <IUnit> friendlyUnits = friendlyArmy.Units; int position = friendlyUnits.IndexOf(unit); int colNum = position / N, rowNum = position % N; int i = 0; List <IUnit> availableRange = new List <IUnit>(); foreach (var armyUnit in friendlyUnits) { int unitColNum = i / N, unitRowNum = i % N; if (!armyUnit.isDead() && i != position && Math.Abs(unitColNum - colNum) + Math.Abs(unitRowNum - rowNum) <= unit.SpecialAbilityRange) { availableRange.Add(armyUnit); } i++; } i = 0; foreach (var armyUnit in enemiesArmy.Units) { int unitColNum = i / N, unitRowNum = i % N; if (!armyUnit.isDead() && i != position && Math.Abs(unitColNum - colNum) + Math.Abs(unitRowNum - rowNum) + colNum + 1 <= unit.SpecialAbilityRange) { availableRange.Add(armyUnit); } i++; } return(availableRange); }