private static void CalculateNotForwardNearestMoves(EnemyTank enemyTank) { if (!AppSettings.EnableEnemyTankNotForwardNearestMoves) { return; } var notForwardDirections = BaseMobile.ValidDirections.Where(x => x != enemyTank.Direction).ToList(); foreach (var direction in notForwardDirections) { var nextPoint = enemyTank.GetNextPoints(enemyTank.Point, direction).First(); var nextCell = Field.GetCell(nextPoint); if (nextCell.CanMove) { nextCell.AddPrediction(1, PredictionType.EnemyMove, item: enemyTank); } } }
private static void CalculateEnemyMovePredictions(EnemyTank enemyTank) { var thisCell = Field.GetCell(enemyTank.Point); thisCell.AddPrediction(1, PredictionType.EnemyMove, item: enemyTank); CalculateNotForwardNearestMoves(enemyTank); var predictionStartPoint = enemyTank.Point; for (var depth = 1; depth <= AppSettings.EnemyTankMovePredictionDepth; depth++) { var nextPoint = enemyTank.GetNextPoints(predictionStartPoint).First(); var nextCell = Field.GetCell(nextPoint); if (nextCell.CanMove) { nextCell.AddPrediction(depth, PredictionType.EnemyMove, item: enemyTank); predictionStartPoint = nextPoint; } } }