Files
SPT-Server-Build/Libraries/Core/Models/Eft/Common/Location.cs
T
2025-02-07 19:36:17 +00:00

403 lines
6.2 KiB
C#

using System.Text.Json.Serialization;
using Core.Models.Eft.Common.Tables;
using Core.Utils.Json;
namespace Core.Models.Eft.Common;
public record Location
{
/**
* Map meta-data
*/
[JsonPropertyName("base")]
public LocationBase? Base
{
get;
set;
}
/**
* Loose loot positions and item weights
*/
[JsonPropertyName("looseLoot")]
public LazyLoad<LooseLoot>? LooseLoot
{
get;
set;
}
/**
* Static loot item weights
*/
[JsonPropertyName("staticLoot")]
public LazyLoad<Dictionary<string, StaticLootDetails>>? StaticLoot
{
get;
set;
}
/**
* Static container positions and item weights
*/
[JsonPropertyName("staticContainers")]
public LazyLoad<StaticContainerDetails>? StaticContainers
{
get;
set;
}
[JsonPropertyName("staticAmmo")]
public Dictionary<string, List<StaticAmmoDetails>> StaticAmmo
{
get;
set;
}
/**
* All possible static containers on map + their assign groupings
*/
[JsonPropertyName("statics")]
public StaticContainer? Statics
{
get;
set;
}
/**
* All possible map extracts
*/
[JsonPropertyName("allExtracts")]
public Exit[] AllExtracts
{
get;
set;
}
}
public record StaticContainer
{
[JsonPropertyName("containersGroups")]
public Dictionary<string, ContainerMinMax>? ContainersGroups
{
get;
set;
}
[JsonPropertyName("containers")]
public Dictionary<string, ContainerData>? Containers
{
get;
set;
}
}
public record 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 record ContainerData
{
[JsonPropertyName("groupId")]
public string? GroupId
{
get;
set;
}
}
public record StaticLootDetails
{
[JsonPropertyName("itemcountDistribution")]
public ItemCountDistribution[] ItemCountDistribution
{
get;
set;
}
[JsonPropertyName("itemDistribution")]
public ItemDistribution[] ItemDistribution
{
get;
set;
}
}
public record ItemCountDistribution
{
[JsonPropertyName("count")]
public int? Count
{
get;
set;
}
[JsonPropertyName("relativeProbability")]
public float? RelativeProbability
{
get;
set;
}
}
public record ItemDistribution
{
[JsonPropertyName("tpl")]
public string? Tpl
{
get;
set;
}
[JsonPropertyName("relativeProbability")]
public float? RelativeProbability
{
get;
set;
}
}
public record 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;
}
}
[Obsolete("use SpawnpointTemplate")]
public record StaticWeaponProps : StaticPropsBase
{
[JsonPropertyName("Items")]
public Item[] Items
{
get;
set;
}
}
public record StaticContainerDetails
{
[JsonPropertyName("staticWeapons")]
public List<SpawnpointTemplate> StaticWeapons
{
get;
set;
}
[JsonPropertyName("staticContainers")]
public List<StaticContainerData> StaticContainers
{
get;
set;
}
[JsonPropertyName("staticForced")]
public List<StaticForced> StaticForced
{
get;
set;
}
}
public record StaticForced
{
[JsonPropertyName("containerId")]
public string ContainerId
{
get;
set;
}
[JsonPropertyName("itemTpl")]
public string ItemTpl
{
get;
set;
}
}
public record StaticContainerData
{
[JsonPropertyName("probability")]
public float? Probability
{
get;
set;
}
[JsonPropertyName("template")]
public SpawnpointTemplate? Template
{
get;
set;
}
}
public record StaticAmmoDetails
{
[JsonPropertyName("tpl")]
public string? Tpl
{
get;
set;
}
[JsonPropertyName("relativeProbability")]
public float? RelativeProbability
{
get;
set;
}
}
public record StaticForcedProps
{
[JsonPropertyName("containerId")]
public string? ContainerId
{
get;
set;
}
[JsonPropertyName("itemTpl")]
public string? ItemTpl
{
get;
set;
}
}
[Obsolete("use SpawnpointTemplate")]
public record StaticContainerProps : StaticPropsBase
{
[JsonPropertyName("Items")]
public StaticItem[] Items
{
get;
set;
}
}
public record StaticItem
{
[JsonPropertyName("_id")]
public string? Id
{
get;
set;
}
[JsonPropertyName("_tpl")]
public string? Tpl
{
get;
set;
}
[JsonPropertyName("upd")]
public Upd? Upd
{
get;
set;
}
}