namespace PartyDamage; public class CombatData { public Encounter Encounter { get; } public Dictionary Combatants { get; } = []; public CombatData(RawCombatData raw) { foreach (var (key, value) in raw.Combatants) { this.Combatants[key] = new Combatant { Name = value.Name, EncDps = TryFloat(value.EncDps), }; } this.Encounter = new Encounter { Title = raw.Encounter.Title, EncDps = TryFloat(raw.Encounter.EncDps), }; } private static float TryFloat(string input, float def = float.NaN) { if (!float.TryParse(input, out var result)) { result = def; } return result; } } public class Encounter { public string Title { get; init; } public float EncDps { get; init; } } public class Combatant { public string Name { get; init; } public float EncDps { get; init; } }