feat: mangle crew healths

This commit is contained in:
tresabhi committed 2025-01-30 12:49:15 -06:00
1 parent c6f4a13abc
commit 6829ff921d
5 files changed
+158 -74

No files matched your search

+34 -1
View File
@@ -3,6 +3,7 @@ using BlitzKit.CLI.Models;
using BlitzKit.CLI.Utils;
using CUE4Parse.FileProvider.Objects;
using Google.Protobuf;
using Google.Protobuf.Collections;
using Newtonsoft.Json.Linq;
namespace BlitzKit.CLI.Functions
@@ -93,7 +94,7 @@ namespace BlitzKit.CLI.Functions
FuelTankHealth = MangleModuleHealth((props["FuelTankHealth"] as JObject)!),
};
tank.CrewHealth.Add("", 1);
MangleCrewHealth(tank.CrewHealth, (props["CrewHealth"] as JArray)!);
tanks.Tanks_.Add(tank.Id);
@@ -106,6 +107,38 @@ namespace BlitzKit.CLI.Functions
var tanksBytes = tanks.ToByteArray();
}
public static Dictionary<string, CrewType> CrewTypes = new()
{
{ "EModuleOrTankmen::Commander", CrewType.Commander },
{ "EModuleOrTankmen::Driver", CrewType.Driver },
{ "EModuleOrTankmen::Gunner1", CrewType.Gunner1 },
{ "EModuleOrTankmen::Gunner2", CrewType.Gunner2 },
{ "EModuleOrTankmen::Loader1", CrewType.Loader1 },
{ "EModuleOrTankmen::Loader2", CrewType.Loader2 },
};
public static void MangleCrewHealth(RepeatedField<CrewHealth> map, JArray array)
{
foreach (var member in array.Cast<JObject>())
{
var key = member["Key"]!.Value<string>()!;
if (CrewTypes.TryGetValue(key, out var crewType))
{
CrewHealth crewHealth = new()
{
Type = crewType,
MaxHealth = member["Value"]!["MaxHealth"]!.Value<float>(),
};
map.Add(crewHealth);
}
else
{
throw new Exception($"Unrecognized CrewType: {key}");
}
}
}
public static ModuleHealth MangleModuleHealth(JObject obj)
{
ModuleHealth moduleHealth = new()