63 lines
2.6 KiB
C#
63 lines
2.6 KiB
C#
using System.Collections.ObjectModel;
|
|
using System.Xml.Serialization;
|
|
using Kits.Views;
|
|
using Torch;
|
|
using Torch.Views;
|
|
using VRage.Game.ModAPI;
|
|
using VRage.ObjectBuilders;
|
|
|
|
namespace Kits;
|
|
|
|
public class KitViewModel : ViewModel
|
|
{
|
|
[Display(Name = "Name", GroupName = "General")]
|
|
[XmlAttribute]
|
|
public string Name { get; set; } = "unnamed";
|
|
[Display(Name = "Cost", GroupName = "Usage", Description = "Credits cost to use this kit")]
|
|
public long UseCost { get; set; } = 0;
|
|
[Display(Name = "Cooldown Minutes", GroupName = "Usage", Description = "Cooldown to use this kit per player in minutes")]
|
|
public ulong UseCooldownMinutes { get; set; } = 0;
|
|
[Display(Name = "Required Promote Level", GroupName = "Conditions", Description = "Minimal Promote Level to use this kit")]
|
|
public MyPromoteLevel RequiredPromoteLevel { get; set; } = MyPromoteLevel.None;
|
|
[Display(Name = "Lp Permission", GroupName = "Conditions", Description = "Luck Perms permission to use this kit (leave empty to disable, example: kits.vip)")]
|
|
public string LpPermission { get; set; } = "";
|
|
[Display(Name = "Respawn Pod Wildcards", GroupName = "Usage", Description = "Respawn pod name wildcard to filter usage of kit, leave empty to disable")]
|
|
public ObservableCollection<string> RespawnPodWildcards { get; set; } = new();
|
|
[Display(Name = "Items", GroupName = "General", EditorType = typeof(EditButton))]
|
|
[XmlArrayItem("Item")]
|
|
public ObservableCollection<KitItemViewModel> Items { get; set; } = new();
|
|
|
|
public override string ToString()
|
|
{
|
|
return Name;
|
|
}
|
|
}
|
|
public class KitItemViewModel : ViewModel
|
|
{
|
|
[Display(Name = "Id", EditorType = typeof(DefinitionIdEditor), Description = "TypeId/SubtypeId. Only items are allowed. for e.g Component/SteelPlate, Ore/Stone, PhysicalGunObject/RapidFireAutomaticRifleItem")]
|
|
public DefinitionId Id { get; set; } = new();
|
|
[Display(Name = "Probability", Description = "Probability of the item. 1 is 100%, 0 is 0%")]
|
|
public float Probability { get; set; } = 1;
|
|
[Display(Name = "Amount")]
|
|
public float Amount { get; set; } = 0;
|
|
|
|
[XmlIgnore]
|
|
public string Name => Id.ToString();
|
|
|
|
public override string ToString()
|
|
{
|
|
return Id.ToString();
|
|
}
|
|
}
|
|
|
|
public class DefinitionId : ViewModel
|
|
{
|
|
[XmlAttribute]
|
|
public string TypeId { get; set; } = "type";
|
|
[XmlAttribute]
|
|
public string SubtypeId { get; set; } = "subtype";
|
|
|
|
public override string ToString() => $"{TypeId}/{SubtypeId}";
|
|
public static implicit operator SerializableDefinitionId(DefinitionId id) => new(MyObjectBuilderType.ParseBackwardsCompatible(id.TypeId), id.SubtypeId);
|
|
}
|