public void PrepareToFire(TurnState turnState, int?preferredFireTargetCoord) { if (!canFire) { return; } var ship = turnState.FindMyShip(shipId); fireTarget = TryGetPreferredFireTarget(ship, preferredFireTargetCoord) ?? SelectFireTarget(turnState, ship); }
private FireTarget SelectFireTarget(TurnState turnState, Ship ship) { FireTarget bestFireTarget = null; foreach (var enemyShip in turnState.enemyShips) { var fireTargets = GetFireTargets(ship, enemyShip); foreach (var fireTarget in fireTargets) { if (bestFireTarget == null || fireTarget.turns < bestFireTarget.turns || fireTarget.turns == bestFireTarget.turns && fireTarget.TargetType < bestFireTarget.TargetType) { bestFireTarget = fireTarget; } } } return(bestFireTarget); }
public void StartTurn(TurnState turnState) { canFire = !cooldown; cooldown = false; fireTarget = null; }