Aetheria/Aetheria.State/Documents/AetheriaItemDefinition.cs
2026-06-13 10:01:20 +01:00

216 lines
4.4 KiB
C#

using GameCult.Caching;
using MessagePack;
namespace Aetheria.State.Documents;
[CultDocument("aetheria.item_definition", "aetheria.item_definition.v1")]
[MessagePackObject]
public sealed class AetheriaItemDefinition
{
[Key(0)]
[CultName]
public string Name { get; set; } = "";
[Key(1)]
[CultIndex("category")]
public string Category { get; set; } = "uncategorized";
[Key(2)]
[CultIndex("legacyId")]
public string LegacyId { get; set; } = "";
[Key(3)]
public string Description { get; set; } = "";
[Key(4)]
public double Mass { get; set; }
[Key(5)]
public double Volume { get; set; }
[Key(6)]
public string[] Tags { get; set; } = [];
[Key(7)]
[CultIndex("manufacturerLegacyId")]
public string ManufacturerLegacyId { get; set; } = "";
[Key(8)]
public int Price { get; set; }
[Key(9)]
public int ShapeWidth { get; set; }
[Key(10)]
public int ShapeHeight { get; set; }
[Key(11)]
public int OccupiedCells { get; set; }
[Key(12)]
[CultIndex("hardpointType")]
public string HardpointType { get; set; } = "";
[Key(13)]
[CultIndex("hullType")]
public string HullType { get; set; } = "";
[Key(14)]
public string[] BehaviorKinds { get; set; } = [];
[Key(15)]
public int BehaviorCount { get; set; }
[Key(16)]
public int MaxStack { get; set; }
[Key(17)]
public bool Stackable { get; set; }
[Key(18)]
public double Duration { get; set; }
[Key(19)]
public double Durability { get; set; }
[Key(20)]
public string WeaponRange { get; set; } = "";
[Key(21)]
public string WeaponCaliber { get; set; } = "";
[Key(22)]
public string WeaponType { get; set; } = "";
[Key(23)]
public string WeaponFireTypes { get; set; } = "";
[Key(24)]
public string WeaponModifiers { get; set; } = "";
[Key(25)]
public AetheriaShapeCell[] ShapeCells { get; set; } = [];
[Key(26)]
public int InteriorShapeWidth { get; set; }
[Key(27)]
public int InteriorShapeHeight { get; set; }
[Key(28)]
public int InteriorOccupiedCells { get; set; }
[Key(29)]
public AetheriaShapeCell[] InteriorShapeCells { get; set; } = [];
[Key(30)]
public AetheriaItemHardpoint[] Hardpoints { get; set; } = [];
[Key(31)]
public AetheriaBehaviorPayload[] BehaviorPayloads { get; set; } = [];
}
[MessagePackObject]
public sealed class AetheriaShapeCell
{
[Key(0)]
public int X { get; set; }
[Key(1)]
public int Y { get; set; }
}
[MessagePackObject]
public sealed class AetheriaItemHardpoint
{
[Key(0)]
public string Type { get; set; } = "";
[Key(1)]
public int PositionX { get; set; }
[Key(2)]
public int PositionY { get; set; }
[Key(3)]
public int ShapeWidth { get; set; }
[Key(4)]
public int ShapeHeight { get; set; }
[Key(5)]
public int OccupiedCells { get; set; }
[Key(6)]
public AetheriaShapeCell[] ShapeCells { get; set; } = [];
[Key(7)]
public string Transform { get; set; } = "";
[Key(8)]
public string Rotation { get; set; } = "";
[Key(9)]
public double Armor { get; set; }
}
[MessagePackObject]
public sealed class AetheriaBehaviorPayload
{
[Key(0)]
public int UnionKey { get; set; }
[Key(1)]
public string Kind { get; set; } = "";
[Key(2)]
public int Group { get; set; }
[Key(3)]
public AetheriaBehaviorField[] Fields { get; set; } = [];
}
[MessagePackObject]
public sealed class AetheriaBehaviorField
{
[Key(0)]
public int Key { get; set; }
[Key(1)]
public AetheriaBehaviorValue Value { get; set; } = new();
}
[MessagePackObject]
public sealed class AetheriaBehaviorMapEntry
{
[Key(0)]
public string Key { get; set; } = "";
[Key(1)]
public AetheriaBehaviorValue Value { get; set; } = new();
}
[MessagePackObject]
public sealed class AetheriaBehaviorValue
{
[Key(0)]
public string Kind { get; set; } = "nil";
[Key(1)]
public string StringValue { get; set; } = "";
[Key(2)]
public double NumberValue { get; set; }
[Key(3)]
public bool BoolValue { get; set; }
[Key(4)]
public string LegacyIdValue { get; set; } = "";
[Key(5)]
public AetheriaBehaviorValue[] Children { get; set; } = [];
[Key(6)]
public AetheriaBehaviorMapEntry[] MapEntries { get; set; } = [];
}