forked from chomp/BotGenerator
Code cleanup and attempt at reducing ram usage
Added extra bosses to pmc enemy forcing code
This commit is contained in:
parent
c9c472882e
commit
de11386c5a
@ -1,6 +1,5 @@
|
|||||||
using Common.Models.Input;
|
using Common.Models.Input;
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
using System.Collections.Concurrent;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
@ -12,7 +11,7 @@ namespace Common.Bots;
|
|||||||
|
|
||||||
public static class BotParser
|
public static class BotParser
|
||||||
{
|
{
|
||||||
static JsonSerializerOptions serialiserOptions = new JsonSerializerOptions { };
|
static readonly JsonSerializerOptions serialiserOptions = new() { };
|
||||||
|
|
||||||
public static async Task<List<Datum>> ParseAsync(string dumpPath, string[] botTypes)
|
public static async Task<List<Datum>> ParseAsync(string dumpPath, string[] botTypes)
|
||||||
{
|
{
|
||||||
@ -37,12 +36,6 @@ public static class BotParser
|
|||||||
int dupeCount = 0;
|
int dupeCount = 0;
|
||||||
var rawInputString = await ReadFileContentsAsync(file);
|
var rawInputString = await ReadFileContentsAsync(file);
|
||||||
|
|
||||||
//var json = rawInputString;
|
|
||||||
//if (rawInputString.Contains("location\":1,"))
|
|
||||||
//{
|
|
||||||
// json = PruneMalformedBsgJson(rawInputString, splitFilePath.Last());
|
|
||||||
//}
|
|
||||||
|
|
||||||
List<Datum> bots = null;
|
List<Datum> bots = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -50,38 +43,50 @@ public static class BotParser
|
|||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"file parse fucked up: {file}");
|
Console.WriteLine($"File parse fucked up: {file}");
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (bots == null || bots.Count == 0)
|
if (bots == null || bots.Count == 0)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"skipping file: {splitFilePath.Last()}. no bots found, ");
|
Console.WriteLine($"Skipping file: {splitFilePath.Last()}. no bots found, ");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Console.WriteLine($"parsing: {bots.Count} bots in file {splitFilePath.Last()}");
|
//Console.WriteLine($"parsing: {bots.Count} bots in file {splitFilePath.Last()}");
|
||||||
foreach (var bot in bots)
|
foreach (var bot in bots)
|
||||||
{
|
{
|
||||||
|
// I have no idea
|
||||||
if (bot._id == "6483938c53cc9087c70eae86")
|
if (bot._id == "6483938c53cc9087c70eae86")
|
||||||
{
|
{
|
||||||
Console.WriteLine("oh no");
|
Console.WriteLine("oh no");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// We dont know how to parse this bot type, need to add it to types enum
|
||||||
if (!botTypes.Contains(bot.Info.Settings.Role.ToLower()))
|
if (!botTypes.Contains(bot.Info.Settings.Role.ToLower()))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Bot already exists in dictionary, skip
|
||||||
if (parsedBotsDict.ContainsKey(bot._id))
|
if (parsedBotsDict.ContainsKey(bot._id))
|
||||||
{
|
{
|
||||||
//var existingBot = parsedBotsDict[bot._id];
|
//var existingBot = parsedBotsDict[bot._id];
|
||||||
dupeCount++;
|
dupeCount++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (!parsedBotsDict.ContainsKey(bot._id))
|
if (!parsedBotsDict.ContainsKey(bot._id))
|
||||||
{
|
{
|
||||||
|
// Null out data we don't need for generating bots to save RAM
|
||||||
|
bot.Stats = null;
|
||||||
|
bot.Encyclopedia = null;
|
||||||
|
bot.Hideout = null;
|
||||||
|
bot.ConditionCounters = null;
|
||||||
|
bot.Bonuses = null;
|
||||||
|
bot.BackendCounters = null;
|
||||||
|
bot.InsuredItems = null;
|
||||||
parsedBotsDict.Add(bot._id, bot);
|
parsedBotsDict.Add(bot._id, bot);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,9 @@
|
|||||||
using Common;
|
using Common.Extensions;
|
||||||
using Common.Extensions;
|
|
||||||
using Common.Models;
|
using Common.Models;
|
||||||
using Common.Models.Input;
|
using Common.Models.Input;
|
||||||
using Common.Models.Output;
|
using Common.Models.Output;
|
||||||
using Generator.Helpers;
|
using Generator.Helpers;
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
|
|
||||||
namespace Generator
|
namespace Generator
|
||||||
{
|
{
|
||||||
@ -136,18 +131,13 @@ namespace Generator
|
|||||||
|
|
||||||
if (!alreadyExists)
|
if (!alreadyExists)
|
||||||
{
|
{
|
||||||
var bodyPartHpToAdd = new Common.Models.Output.BodyParts();
|
var bodyPartHpToAdd = new Common.Models.Output.BodyParts()
|
||||||
bodyPartHpToAdd.Head.min = bot.Health.BodyParts.Head.Health.Current;
|
{
|
||||||
bodyPartHpToAdd.Head.max = bot.Health.BodyParts.Head.Health.Maximum;
|
Head = new MinMax(bot.Health.BodyParts.Head.Health.Current, bot.Health.BodyParts.Head.Health.Maximum),
|
||||||
|
Chest = new MinMax(bot.Health.BodyParts.Chest.Health.Current, bot.Health.BodyParts.Chest.Health.Maximum),
|
||||||
bodyPartHpToAdd.Chest.min = bot.Health.BodyParts.Chest.Health.Current;
|
Stomach = new MinMax(bot.Health.BodyParts.Stomach.Health.Current, bot.Health.BodyParts.Stomach.Health.Maximum),
|
||||||
bodyPartHpToAdd.Chest.max = bot.Health.BodyParts.Chest.Health.Maximum;
|
LeftArm = new MinMax(bot.Health.BodyParts.LeftArm.Health.Current, bot.Health.BodyParts.LeftArm.Health.Maximum)
|
||||||
|
};
|
||||||
bodyPartHpToAdd.Stomach.min = bot.Health.BodyParts.Stomach.Health.Current;
|
|
||||||
bodyPartHpToAdd.Stomach.max = bot.Health.BodyParts.Stomach.Health.Maximum;
|
|
||||||
|
|
||||||
bodyPartHpToAdd.LeftArm.min = bot.Health.BodyParts.LeftArm.Health.Current;
|
|
||||||
bodyPartHpToAdd.LeftArm.max = bot.Health.BodyParts.LeftArm.Health.Maximum;
|
|
||||||
|
|
||||||
bodyPartHpToAdd.RightArm.min = bot.Health.BodyParts.RightArm.Health.Current;
|
bodyPartHpToAdd.RightArm.min = bot.Health.BodyParts.RightArm.Health.Current;
|
||||||
bodyPartHpToAdd.RightArm.max = bot.Health.BodyParts.RightArm.Health.Maximum;
|
bodyPartHpToAdd.RightArm.max = bot.Health.BodyParts.RightArm.Health.Maximum;
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
using Common.Models.Output;
|
using Common.Models;
|
||||||
|
using Common.Models.Output;
|
||||||
using Common.Models.Output.Difficulty;
|
using Common.Models.Output.Difficulty;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using Newtonsoft.Json.Linq;
|
|
||||||
using System.Collections;
|
|
||||||
|
|
||||||
namespace Generator.Helpers
|
namespace Generator.Helpers
|
||||||
{
|
{
|
||||||
@ -15,12 +14,12 @@ namespace Generator.Helpers
|
|||||||
// Read bot setting files from assets folder that match this bots type
|
// Read bot setting files from assets folder that match this bots type
|
||||||
// Save into dictionary with difficulty as key
|
// Save into dictionary with difficulty as key
|
||||||
var difficultySettingsJsons = new Dictionary<string, DifficultySettings>();
|
var difficultySettingsJsons = new Dictionary<string, DifficultySettings>();
|
||||||
var botType = botToUpdate.botType.ToString();
|
BotType botType = botToUpdate.botType;
|
||||||
var pathsWithBotType = difficultyFilePaths.Where(x => x.Contains($"_{botType}_", StringComparison.InvariantCultureIgnoreCase));
|
var pathsWithBotType = difficultyFilePaths.Where(x => x.Contains($"_{botType}_", StringComparison.InvariantCultureIgnoreCase));
|
||||||
foreach (var path in pathsWithBotType)
|
foreach (var path in pathsWithBotType)
|
||||||
{
|
{
|
||||||
var json = File.ReadAllText(path);
|
var difficultyJson = File.ReadAllText(path);
|
||||||
var serialisedDifficultySettings = JsonConvert.DeserializeObject<DifficultySettings>(json);
|
var serialisedDifficultySettings = JsonConvert.DeserializeObject<DifficultySettings>(difficultyJson);
|
||||||
|
|
||||||
serialisedDifficultySettings = ApplyCustomDifficultyValues(botType, serialisedDifficultySettings);
|
serialisedDifficultySettings = ApplyCustomDifficultyValues(botType, serialisedDifficultySettings);
|
||||||
|
|
||||||
@ -91,16 +90,20 @@ namespace Generator.Helpers
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static DifficultySettings ApplyCustomDifficultyValues(string botType, DifficultySettings difficultySettings)
|
private static DifficultySettings ApplyCustomDifficultyValues(BotType botType, DifficultySettings difficultySettings)
|
||||||
{
|
{
|
||||||
switch (botType)
|
switch (botType)
|
||||||
{
|
{
|
||||||
// make all bosses fight PMCs
|
// make all bosses fight PMCs
|
||||||
case "bosskilla":
|
case BotType.bosskilla:
|
||||||
case "bossgluhar":
|
case BotType.bossgluhar:
|
||||||
case "bosstagilla":
|
case BotType.bosstagilla:
|
||||||
case "bossbully":
|
case BotType.bossbully:
|
||||||
case "bosskojaniy":
|
case BotType.bosskojaniy:
|
||||||
|
case BotType.bossboar:
|
||||||
|
case BotType.bossboarsniper:
|
||||||
|
case BotType.bossknight:
|
||||||
|
case BotType.bosszryachiy:
|
||||||
AddHostileToPMCSettings(difficultySettings);
|
AddHostileToPMCSettings(difficultySettings);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -1,14 +1,8 @@
|
|||||||
using Common.Models;
|
using Common.Models;
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace Generator.Weighting
|
namespace Generator.Weighting
|
||||||
{
|
{
|
||||||
|
|
||||||
public class Weightings
|
public class Weightings
|
||||||
{
|
{
|
||||||
public Dictionary<string, Dictionary<string, int>> Equipment { get; set; }
|
public Dictionary<string, Dictionary<string, int>> Equipment { get; set; }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user