Files
TorchPlugins/Kits/KitViewModel.cs
2023-11-13 23:17:39 +07:00

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);
}