From 0cad6b769f419ddb3774b3c7a09f2bd33279e815 Mon Sep 17 00:00:00 2001 From: Chomp Date: Sat, 14 Aug 2021 09:44:45 +0100 Subject: [PATCH] Rewrite helper to read from asset files instead of using hard coded values --- Generator/Helpers/DifficultyHelper.cs | 115 +++++++++++--------------- 1 file changed, 49 insertions(+), 66 deletions(-) diff --git a/Generator/Helpers/DifficultyHelper.cs b/Generator/Helpers/DifficultyHelper.cs index 600f606..7e3c930 100644 --- a/Generator/Helpers/DifficultyHelper.cs +++ b/Generator/Helpers/DifficultyHelper.cs @@ -1,81 +1,64 @@ using Generator.Models.Output; +using Generator.Models.Output.Difficulty; +using Newtonsoft.Json; +using System.Collections.Generic; +using System.IO; +using System.Linq; namespace Generator.Helpers { public static class DifficultyHelper { - public static void AddAssaultDifficulties(Bot bot) + private static readonly string[] _difficulties = new[] { "easy", "normal", "hard", "impossible" }; + + public static void AddDifficultySettings(Bot bot, List difficultyFilePaths) { - bot.difficulty.easy = new Models.Output.Difficulty.DifficultySettings + // Read bot setting files from assets folder that match this bots type + // Save into dictionary with difficulty as key + var difficultySettingsJsons = new Dictionary(); + foreach (var path in difficultyFilePaths.Where(x=>x.Contains(bot.botType.ToString()))) { - Lay = EasyHelper.GenerateLay(), - Aiming = EasyHelper.GenerateAiming(), - Look = EasyHelper.GenerateLook(), - Shoot = EasyHelper.GenerateShoot(), - Move = EasyHelper.GenerateMove(), - Grenade = EasyHelper.GenerateGrenade(), - Change = EasyHelper.GenerateChange(), - Cover = EasyHelper.GenerateCover(), - Patrol = EasyHelper.GeneratePatrol(), - Hearing = EasyHelper.GenerateHearing(), - Mind = EasyHelper.GenerateMind(), - Boss = EasyHelper.GenerateBoss(), - Core = EasyHelper.GenerateCore(), - Scattering = EasyHelper.GenerateScattering() - }; + var json = File.ReadAllText(path); + var serialisedObject = JsonConvert.DeserializeObject(json); - bot.difficulty.normal = new Models.Output.Difficulty.DifficultySettings(){ - Lay = NormalHelper.GenerateLay(), - Aiming = NormalHelper.GenerateAiming(), - Look = NormalHelper.GenerateLook(), - Shoot = NormalHelper.GenerateShoot(), - Move = NormalHelper.GenerateMove(), - Grenade = NormalHelper.GenerateGrenade(), - Change = NormalHelper.GenerateChange(), - Cover = NormalHelper.GenerateCover(), - Patrol = NormalHelper.GeneratePatrol(), - Hearing = NormalHelper.GenerateHearing(), - Mind = NormalHelper.GenerateMind(), - Boss = NormalHelper.GenerateBoss(), - Core = NormalHelper.GenerateCore(), - Scattering = NormalHelper.GenerateScattering() - }; + var difficultyOfFile = GetFileDifficultyFromPath(path); + difficultySettingsJsons.Add(difficultyOfFile, serialisedObject); + } - bot.difficulty.hard = new Models.Output.Difficulty.DifficultySettings() + // Find each difficulty in dictionary and save into bot + foreach (var difficulty in _difficulties) { - Lay = HardHelper.GenerateLay(), - Aiming = HardHelper.GenerateAiming(), - Look = HardHelper.GenerateLook(), - Shoot = HardHelper.GenerateShoot(), - Move = HardHelper.GenerateMove(), - Grenade = HardHelper.GenerateGrenade(), - Change = HardHelper.GenerateChange(), - Cover = HardHelper.GenerateCover(), - Patrol = HardHelper.GeneratePatrol(), - Hearing = HardHelper.GenerateHearing(), - Mind = HardHelper.GenerateMind(), - Boss = HardHelper.GenerateBoss(), - Core = HardHelper.GenerateCore(), - Scattering = HardHelper.GenerateScattering() - }; - bot.difficulty.impossible = new Models.Output.Difficulty.DifficultySettings() - { - Lay = ImpossibleHelper.GenerateLay(), - Aiming = ImpossibleHelper.GenerateAiming(), - Look = ImpossibleHelper.GenerateLook(), - Shoot = ImpossibleHelper.GenerateShoot(), - Move = ImpossibleHelper.GenerateMove(), - Grenade = ImpossibleHelper.GenerateGrenade(), - Change = ImpossibleHelper.GenerateChange(), - Cover = ImpossibleHelper.GenerateCover(), - Patrol = ImpossibleHelper.GeneratePatrol(), - Hearing = ImpossibleHelper.GenerateHearing(), - Mind = ImpossibleHelper.GenerateMind(), - Boss = ImpossibleHelper.GenerateBoss(), - Core = ImpossibleHelper.GenerateCore(), - Scattering = ImpossibleHelper.GenerateScattering() - }; + var settings = difficultySettingsJsons.FirstOrDefault(x => x.Key.Contains(difficulty)); + + SaveSettingsIntoBotFile(bot, difficulty, settings.Value); + } } + private static string GetFileDifficultyFromPath(string path) + { + // Split path into parts and find the last part (filename) + // Split filename and take the first part (difficulty, easy/normal etc) + var splitPath = path.Split("\\"); + return splitPath.Last().Split("_").First(); + } + + private static void SaveSettingsIntoBotFile(Bot bot, string difficulty, DifficultySettings settings) + { + switch (difficulty) + { + case "easy": + bot.difficulty.easy = settings; + break; + case "normal": + bot.difficulty.normal = settings; + break; + case "hard": + bot.difficulty.hard = settings; + break; + case "impossible": + bot.difficulty.impossible = settings; + break; + } + } } }