using System.Text.Json.Serialization; using Core.Models.Eft.Common.Tables; namespace Core.Models.Eft.Common; public class Location { /** Map meta-data */ [JsonPropertyName("base")] public LocationBase Base { get; set; } /** Loose loot positions and item weights */ [JsonPropertyName("looseLoot")] public LooseLoot LooseLoot { get; set; } /** Static loot item weights */ [JsonPropertyName("staticLoot")] public Dictionary StaticLoot { get; set; } /** Static container positions and item weights */ [JsonPropertyName("staticContainers")] public StaticContainerDetails StaticContainers { get; set; } [JsonPropertyName("staticAmmo")] public Dictionary StaticAmmo { get; set; } /** All possible static containers on map + their assign groupings */ [JsonPropertyName("statics")] public StaticContainer StaticContainer { get; set; } /** All possible map extracts */ [JsonPropertyName("allExtracts")] public Exit[] AllExtracts { get; set; } // TODO: talk to chomp about this type! [JsonPropertyName("statics")] public Dictionary Statics { get; set; } } public class StaticContainer { [JsonPropertyName("containersGroups")] public Dictionary ContainersGroups { get; set; } [JsonPropertyName("containers")] public Dictionary Containers { get; set; } } public class ContainerMinMax { [JsonPropertyName("minContainers")] public int MinContainers { get; set; } [JsonPropertyName("maxContainers")] public int MaxContainers { get; set; } [JsonPropertyName("current")] public int? Current { get; set; } [JsonPropertyName("chosenCount")] public int? ChosenCount { get; set; } } public class ContainerData { [JsonPropertyName("groupId")] public string GroupId { get; set; } } public class StaticLootDetails { [JsonPropertyName("itemcountDistribution")] public ItemCountDistribution[] ItemCountDistribution { get; set; } [JsonPropertyName("itemDistribution")] public ItemDistribution[] ItemDistribution { get; set; } } public class ItemCountDistribution { [JsonPropertyName("count")] public int Count { get; set; } [JsonPropertyName("relativeProbability")] public float RelativeProbability { get; set; } } public class ItemDistribution { [JsonPropertyName("tpl")] public string Tpl { get; set; } [JsonPropertyName("relativeProbability")] public float RelativeProbability { get; set; } } public class StaticPropsBase { [JsonPropertyName("Id")] public string Id { get; set; } [JsonPropertyName("IsContainer")] public bool IsContainer { get; set; } [JsonPropertyName("useGravity")] public bool UseGravity { get; set; } [JsonPropertyName("randomRotation")] public bool RandomRotation { get; set; } [JsonPropertyName("Position")] public XYZ Position { get; set; } [JsonPropertyName("Rotation")] public XYZ Rotation { get; set; } [JsonPropertyName("IsGroupPosition")] public bool IsGroupPosition { get; set; } [JsonPropertyName("IsAlwaysSpawn")] public bool IsAlwaysSpawn { get; set; } [JsonPropertyName("GroupPositions")] public GroupPosition[] GroupPositions { get; set; } [JsonPropertyName("Root")] public string Root { get; set; } [JsonPropertyName("Items")] public Item[] Items { get; set; } } public class StaticWeaponProps : StaticPropsBase { [JsonPropertyName("Items")] public Item[] Items { get; set; } } public class StaticContainerDetails { [JsonPropertyName("staticWeapons")] public StaticWeaponProps[] StaticWeapons { get; set; } [JsonPropertyName("staticContainers")] public StaticContainerData[] StaticContainers { get; set; } [JsonPropertyName("staticForced")] public StaticForcedProps[] StaticForced { get; set; } } public class StaticContainerData { [JsonPropertyName("probability")] public float Probability { get; set; } [JsonPropertyName("template")] public StaticContainerProps Template { get; set; } } public class StaticAmmoDetails { [JsonPropertyName("tpl")] public string Tpl { get; set; } [JsonPropertyName("relativeProbability")] public float RelativeProbability { get; set; } } public class StaticForcedProps { [JsonPropertyName("containerId")] public string ContainerId { get; set; } [JsonPropertyName("itemTpl")] public string ItemTpl { get; set; } } public class StaticContainerProps : StaticPropsBase { [JsonPropertyName("Items")] public StaticItem[] Items { get; set; } } public class StaticItem { [JsonPropertyName("_id")] public string Id { get; set; } [JsonPropertyName("_tpl")] public string Tpl { get; set; } [JsonPropertyName("upd")] public Upd Upd { get; set; } }