Example #1
0
        private static IEnumerable <Vector2D> GetPathForCreep(this GameLevel gameLevel)
        {
            var storedPaths = gameLevel.GetStoredPaths();

            if (storedPaths.Count == 1)
            {
                return(storedPaths[0].GetListOfCoordinates());
            }
            int max = 0;
            int min = 0;

            for (int i = 1; i < storedPaths.Count; i++)
            {
                if (storedPaths[i].FinalCost < storedPaths[min].FinalCost)
                {
                    min = i;
                }
                else if (storedPaths[i].FinalCost > storedPaths[max].FinalCost)
                {
                    max = i;
                }
            }
            var valueMin = storedPaths[min].FinalCost / storedPaths[min].GetListOfCoordinates().Count;
            var valueMax = storedPaths[max].FinalCost / storedPaths[max].GetListOfCoordinates().Count;

            return(Math.Abs(valueMax - valueMin) <= 50
                                ? storedPaths[Randomizer.Current.Get(0, storedPaths.Count)].GetListOfCoordinates()
                                : storedPaths[min].GetListOfCoordinates());
        }
Example #2
0
 public static void CleanLevel(this GameLevel level)
 {
     if (level == null)
     {
         return;
     }
     level.RemoveTowers();
     level.RemoveCreeps();
     level.GetStoredPaths().Clear();
     level.RemoveCurrentTracers();
     ResetPlayerGoldAndLives();
     level.DeadCreepCount        = 0;
     level.ExitReachedCreepCount = 0;
     level.WaveGenerator.Dispose();
     level.IsCompleted = false;
 }
Example #3
0
 public static bool UpdatePathsIfPossible(this GameLevel gameLevel)
 {
     for (int i = 0; i < gameLevel.SpawnPoints.Count; i++)
     {
         for (int j = 0; j < gameLevel.GoalPoints.Count; j++)
         {
             var list = gameLevel.GetPath(gameLevel.SpawnPoints[i], gameLevel.GoalPoints[j]);
             if (list.GetListOfCoordinates().Count == 0)
             {
                 return(false);
             }
             var storedPaths = gameLevel.GetStoredPaths();
             storedPaths[i * gameLevel.SpawnPoints.Count + j] = list;
         }
     }
     gameLevel.UpdateTracers();
     return(true);
 }