public void ExecuteTurn(TurnObject turnObject) { var unit = turnObject.ChosenUnit; var player = unit.Owner; var attackDirection = turnObject.AttackDirection; int points = 0; switch (attackDirection) { case AttackDirection.colum: points = GetColumPoints(player, unit); break; case AttackDirection.row: points = GetRowPoints(player, unit); break; case AttackDirection.square: points = GetSquarePoints(player, unit); break; } player.Score += points; player.EndTurn(turnObject); if (PlaceUnit(unit, unit.Position.GetX(), unit.Position.GetY())) { player.MyUnits.Remove(unit); ; } EventManager.Singleton.OnTurnOver(); }
public override TurnObject MakeDecision(TurnData turnData, Player player) { var myUnits = player.MyUnits; var randomIndex = Random.Range(0, myUnits.Count); var randomUnit = myUnits[randomIndex]; var unitOptions = turnData._positionOptions[randomUnit]; var positionIndex = Random.Range(0, unitOptions.Count); var position = unitOptions[positionIndex]; randomUnit.Position = position; var turnObject = new TurnObject(); turnObject.ChosenUnit = randomUnit; randomIndex = Random.Range(0, 2); switch (randomIndex) { case 0: turnObject.AttackDirection = AttackDirection.row; break; case 1: turnObject.AttackDirection = AttackDirection.square; break; case 2: turnObject.AttackDirection = AttackDirection.colum; break; } return(turnObject); }
public IEnumerator HandleAiChoice(TurnObject turnObject) { yield return(new WaitForSeconds(1)); PickNumber(turnObject.ChosenUnit.Value); var position = turnObject.ChosenUnit.Position; UIManager.ChoiceManager.PickSquare(new Vector2(position.GetX(), position.GetY())); yield return(new WaitForSeconds(1)); UIManager.ChoiceManager.PickAttack(turnObject.AttackDirection); }
public void PickAttack(AttackDirection attackType) { if (_selectedUnit == null || _selectedPosition == null) { return; } var turnObject = new TurnObject(); turnObject.ChosenUnit = _selectedUnit; turnObject.ChosenUnit.Position = _selectedPosition; turnObject.AttackDirection = attackType; HideUsedNumber(); UIManager.ShowDamageOptions(false); SoundManager.Instance.PlayAttack(); _boardManager.ExecuteTurn(turnObject); }
// this is an AI which chooses a random unit and returns a random answer public override TurnObject MakeDecision(TurnData turnData, Player player) { var randomIndex = UnityEngine.Random.Range(0, player.MyUnits.Count); var randomUnit = player.MyUnits[randomIndex]; var unitOptions = turnData._positionOptions[randomUnit]; while (unitOptions.Count == 0) { randomIndex = UnityEngine.Random.Range(0, player.MyUnits.Count); randomUnit = player.MyUnits[randomIndex]; unitOptions = turnData._positionOptions[randomUnit]; } var turnObject = new TurnObject(); turnObject.ChosenUnit = randomUnit; SetHighestPointAttack(turnObject, unitOptions, turnData); return(turnObject); }
private void SetHighestPointAttack(TurnObject turnObject, List <Position> unitOptions, TurnData turnData) { var unit = turnObject.ChosenUnit; var maxPoints = 0; var index = 0; var bestDirection = AttackDirection.colum; for (int i = 0; i < unitOptions.Count; i++) { var rowPoints = GetRowPoints(unitOptions[i], unit, turnData.boardData); var columnPoints = GetColumnPoints(unitOptions[i], unit, turnData.boardData); var squarePoints = GetSquarePoints(unitOptions[i], unit, turnData.boardData); if (rowPoints > maxPoints) { index = i; maxPoints = rowPoints; bestDirection = AttackDirection.row; } if (columnPoints > maxPoints) { index = i; maxPoints = columnPoints; bestDirection = AttackDirection.colum; } if (columnPoints > maxPoints) { index = i; maxPoints = columnPoints; bestDirection = AttackDirection.square; } } unit.Position = unitOptions[index]; turnObject.AttackDirection = bestDirection; }
public void OnPlayerPlayed(TurnObject turnObject) { PlayerPlayed?.Invoke(turnObject); }