mirror of
https://github.com/Tribufu/ServerManagers
synced 2026-08-10 05:01:05 +00:00
source code checkin
This commit is contained in:
parent
5f8fb2c825
commit
7e57b72e35
675 changed files with 168433 additions and 0 deletions
418
src/ARKServerManager/Lib/Model/SupplyCrateOverride.cs
Normal file
418
src/ARKServerManager/Lib/Model/SupplyCrateOverride.cs
Normal file
|
|
@ -0,0 +1,418 @@
|
|||
using ServerManagerTool.Common.Attibutes;
|
||||
using ServerManagerTool.Common.Model;
|
||||
using ServerManagerTool.Lib.ViewModel;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Windows;
|
||||
|
||||
namespace ServerManagerTool.Lib
|
||||
{
|
||||
[DataContract]
|
||||
public class SupplyCrateOverrideList : AggregateIniValueList<SupplyCrateOverride>
|
||||
{
|
||||
public SupplyCrateOverrideList(string aggregateValueName)
|
||||
: base(aggregateValueName, null)
|
||||
{
|
||||
}
|
||||
|
||||
public string[] RenderToView()
|
||||
{
|
||||
List<string> errors = new List<string>();
|
||||
|
||||
foreach (var supplyCrate in this)
|
||||
{
|
||||
foreach (var itemSet in supplyCrate.ItemSets)
|
||||
{
|
||||
foreach (var itemEntry in itemSet.ItemEntries)
|
||||
{
|
||||
itemEntry.Items = new ObservableCollection<SupplyCrateItemEntrySettings>();
|
||||
|
||||
for (var index = 0; index < itemEntry.ItemClassStrings.Count; index++)
|
||||
{
|
||||
var itemsWeight = 0.0f;
|
||||
if (index < itemEntry.ItemsWeights.Count)
|
||||
itemsWeight = itemEntry.ItemsWeights[index];
|
||||
else
|
||||
errors.Add($"Missing Supply Crate Item Weight: Crate '{supplyCrate.SupplyCrateClassString}'; Set '{itemSet.SetName}'; Entry '{itemEntry.ItemEntryName}'; Item '{itemEntry.ItemClassStrings[index]}'.");
|
||||
|
||||
itemEntry.Items.Add(new SupplyCrateItemEntrySettings {
|
||||
ItemClassString = itemEntry.ItemClassStrings[index],
|
||||
ItemWeight = itemsWeight,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return errors.ToArray();
|
||||
}
|
||||
|
||||
public void RenderToModel()
|
||||
{
|
||||
foreach (var supplyCrate in this)
|
||||
{
|
||||
foreach (var itemSet in supplyCrate.ItemSets)
|
||||
{
|
||||
foreach (var itemEntry in itemSet.ItemEntries)
|
||||
{
|
||||
itemEntry.ItemClassStrings = new StringIniValueList(null, null);
|
||||
itemEntry.ItemsWeights = new FloatIniValueList(null, null);
|
||||
|
||||
foreach (var itemClass in itemEntry.Items)
|
||||
{
|
||||
itemEntry.ItemClassStrings.Add(itemClass.ItemClassString);
|
||||
itemEntry.ItemsWeights.Add(itemClass.ItemWeight);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateForLocalization()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
[DataContract]
|
||||
public class SupplyCrateOverride : AggregateIniValue
|
||||
{
|
||||
public SupplyCrateOverride()
|
||||
{
|
||||
ItemSets = new AggregateIniValueList<SupplyCrateItemSet>(null, null);
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty SupplyCrateClassStringProperty = DependencyProperty.Register(nameof(SupplyCrateClassString), typeof(string), typeof(SupplyCrateOverride), new PropertyMetadata(string.Empty));
|
||||
[DataMember]
|
||||
[AggregateIniValueEntry]
|
||||
public string SupplyCrateClassString
|
||||
{
|
||||
get { return (string)GetValue(SupplyCrateClassStringProperty); }
|
||||
set { SetValue(SupplyCrateClassStringProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty MinItemSetsProperty = DependencyProperty.Register(nameof(MinItemSets), typeof(float), typeof(SupplyCrateOverride), new PropertyMetadata(1.0f));
|
||||
[DataMember]
|
||||
[AggregateIniValueEntry]
|
||||
public float MinItemSets
|
||||
{
|
||||
get { return (float)GetValue(MinItemSetsProperty); }
|
||||
set { SetValue(MinItemSetsProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty MaxItemSetsProperty = DependencyProperty.Register(nameof(MaxItemSets), typeof(float), typeof(SupplyCrateOverride), new PropertyMetadata(1.0f));
|
||||
[DataMember]
|
||||
[AggregateIniValueEntry]
|
||||
public float MaxItemSets
|
||||
{
|
||||
get { return (float)GetValue(MaxItemSetsProperty); }
|
||||
set { SetValue(MaxItemSetsProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty NumItemSetsPowerProperty = DependencyProperty.Register(nameof(NumItemSetsPower), typeof(float), typeof(SupplyCrateOverride), new PropertyMetadata(1.0f));
|
||||
[DataMember]
|
||||
[AggregateIniValueEntry]
|
||||
public float NumItemSetsPower
|
||||
{
|
||||
get { return (float)GetValue(NumItemSetsPowerProperty); }
|
||||
set { SetValue(NumItemSetsPowerProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty SetsRandomWithoutReplacementProperty = DependencyProperty.Register(nameof(SetsRandomWithoutReplacement), typeof(bool), typeof(SupplyCrateOverride), new PropertyMetadata(true));
|
||||
[DataMember]
|
||||
[AggregateIniValueEntry(Key = "bSetsRandomWithoutReplacement")]
|
||||
public bool SetsRandomWithoutReplacement
|
||||
{
|
||||
get { return (bool)GetValue(SetsRandomWithoutReplacementProperty); }
|
||||
set { SetValue(SetsRandomWithoutReplacementProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty AppendItemSetsProperty = DependencyProperty.Register(nameof(AppendItemSets), typeof(bool), typeof(SupplyCrateOverride), new PropertyMetadata(false));
|
||||
[DataMember]
|
||||
[AggregateIniValueEntry(Key = "bAppendItemSets", ExcludeIfFalse = true)]
|
||||
public bool AppendItemSets
|
||||
{
|
||||
get { return (bool)GetValue(AppendItemSetsProperty); }
|
||||
set { SetValue(AppendItemSetsProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty AppendPreventIncreasingMinMaxItemSetsProperty = DependencyProperty.Register(nameof(AppendPreventIncreasingMinMaxItemSets), typeof(bool), typeof(SupplyCrateOverride), new PropertyMetadata(false));
|
||||
[DataMember]
|
||||
[AggregateIniValueEntry(Key = "bAppendPreventIncreasingMinMaxItemSets", ExcludeIfFalse = true)]
|
||||
public bool AppendPreventIncreasingMinMaxItemSets
|
||||
{
|
||||
get { return (bool)GetValue(AppendPreventIncreasingMinMaxItemSetsProperty); }
|
||||
set { SetValue(AppendPreventIncreasingMinMaxItemSetsProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty ItemSetsProperty = DependencyProperty.Register(nameof(ItemSets), typeof(AggregateIniValueList<SupplyCrateItemSet>), typeof(SupplyCrateOverride), new PropertyMetadata(null));
|
||||
[DataMember]
|
||||
[AggregateIniValueEntry(ValueWithinBrackets = true, ListValueWithinBrackets = true, BracketsAroundValueDelimiter = 2)]
|
||||
public AggregateIniValueList<SupplyCrateItemSet> ItemSets
|
||||
{
|
||||
get { return (AggregateIniValueList<SupplyCrateItemSet>)GetValue(ItemSetsProperty); }
|
||||
set { SetValue(ItemSetsProperty, value); }
|
||||
}
|
||||
|
||||
public override string GetSortKey()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public override bool IsEquivalent(AggregateIniValue other)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public override void InitializeFromINIValue(string value)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(value))
|
||||
return;
|
||||
|
||||
var kvPair = value.Split(new[] { '=' }, 2);
|
||||
var kvValue = kvPair[1].Trim(' ');
|
||||
if (kvValue.StartsWith("("))
|
||||
kvValue = kvValue.Substring(1);
|
||||
if (kvValue.EndsWith(")"))
|
||||
kvValue = kvValue.Substring(0, kvValue.Length - 1);
|
||||
|
||||
base.FromComplexINIValue(kvValue);
|
||||
}
|
||||
|
||||
public override string ToINIValue()
|
||||
{
|
||||
return base.ToComplexINIValue(true);
|
||||
}
|
||||
|
||||
public string DisplayName => GameData.FriendlySupplyCrateNameForClass(SupplyCrateClassString);
|
||||
|
||||
public bool IsValid => !string.IsNullOrWhiteSpace(SupplyCrateClassString) && ItemSets.Count > 0;
|
||||
}
|
||||
|
||||
[DataContract]
|
||||
public class SupplyCrateItemSet : AggregateIniValue
|
||||
{
|
||||
public SupplyCrateItemSet()
|
||||
{
|
||||
ItemEntries = new AggregateIniValueList<SupplyCrateItemSetEntry>(null, null);
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty SetNameProperty = DependencyProperty.Register(nameof(SetName), typeof(string), typeof(SupplyCrateItemSet), new PropertyMetadata(string.Empty));
|
||||
[DataMember]
|
||||
[AggregateIniValueEntry(ExcludeIfEmpty = true)]
|
||||
public string SetName
|
||||
{
|
||||
get { return (string)GetValue(SetNameProperty); }
|
||||
set { SetValue(SetNameProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty MinNumItemsProperty = DependencyProperty.Register(nameof(MinNumItems), typeof(float), typeof(SupplyCrateItemSet), new PropertyMetadata(1.0f));
|
||||
[DataMember]
|
||||
[AggregateIniValueEntry]
|
||||
public float MinNumItems
|
||||
{
|
||||
get { return (float)GetValue(MinNumItemsProperty); }
|
||||
set { SetValue(MinNumItemsProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty MaxNumItemsProperty = DependencyProperty.Register(nameof(MaxNumItems), typeof(float), typeof(SupplyCrateItemSet), new PropertyMetadata(1.0f));
|
||||
[DataMember]
|
||||
[AggregateIniValueEntry]
|
||||
public float MaxNumItems
|
||||
{
|
||||
get { return (float)GetValue(MaxNumItemsProperty); }
|
||||
set { SetValue(MaxNumItemsProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty NumItemsPowerProperty = DependencyProperty.Register(nameof(NumItemsPower), typeof(float), typeof(SupplyCrateItemSet), new PropertyMetadata(1.0f));
|
||||
[DataMember]
|
||||
[AggregateIniValueEntry]
|
||||
public float NumItemsPower
|
||||
{
|
||||
get { return (float)GetValue(NumItemsPowerProperty); }
|
||||
set { SetValue(NumItemsPowerProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty SetWeightProperty = DependencyProperty.Register(nameof(SetWeight), typeof(float), typeof(SupplyCrateItemSet), new PropertyMetadata(1.0f));
|
||||
[DataMember]
|
||||
[AggregateIniValueEntry]
|
||||
public float SetWeight
|
||||
{
|
||||
get { return (float)GetValue(SetWeightProperty); }
|
||||
set { SetValue(SetWeightProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty ItemsRandomWithoutReplacementProperty = DependencyProperty.Register(nameof(ItemsRandomWithoutReplacement), typeof(bool), typeof(SupplyCrateItemSet), new PropertyMetadata(true));
|
||||
[DataMember]
|
||||
[AggregateIniValueEntry(Key = "bItemsRandomWithoutReplacement")]
|
||||
public bool ItemsRandomWithoutReplacement
|
||||
{
|
||||
get { return (bool)GetValue(ItemsRandomWithoutReplacementProperty); }
|
||||
set { SetValue(ItemsRandomWithoutReplacementProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty ItemEntriesProperty = DependencyProperty.Register(nameof(ItemEntries), typeof(AggregateIniValueList<SupplyCrateItemSetEntry>), typeof(SupplyCrateItemSet), new PropertyMetadata(null));
|
||||
[DataMember]
|
||||
[AggregateIniValueEntry(ValueWithinBrackets = true, ListValueWithinBrackets = true)]
|
||||
public AggregateIniValueList<SupplyCrateItemSetEntry> ItemEntries
|
||||
{
|
||||
get { return (AggregateIniValueList<SupplyCrateItemSetEntry>)GetValue(ItemEntriesProperty); }
|
||||
set { SetValue(ItemEntriesProperty, value); }
|
||||
}
|
||||
|
||||
public override string GetSortKey()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public override bool IsEquivalent(AggregateIniValue other)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public override void InitializeFromINIValue(string value)
|
||||
{
|
||||
base.FromComplexINIValue(value);
|
||||
}
|
||||
|
||||
public override string ToINIValue()
|
||||
{
|
||||
return base.ToComplexINIValue(false);
|
||||
}
|
||||
|
||||
public bool IsValid => ItemEntries.Count > 0;
|
||||
}
|
||||
|
||||
[DataContract]
|
||||
public class SupplyCrateItemSetEntry : AggregateIniValue
|
||||
{
|
||||
public SupplyCrateItemSetEntry()
|
||||
{
|
||||
ItemClassStrings = new StringIniValueList(null, null);
|
||||
ItemsWeights = new FloatIniValueList(null, null);
|
||||
|
||||
Items = new ObservableCollection<SupplyCrateItemEntrySettings>();
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty ItemEntryNameProperty = DependencyProperty.Register(nameof(ItemEntryName), typeof(string), typeof(SupplyCrateItemSetEntry), new PropertyMetadata(string.Empty));
|
||||
[DataMember]
|
||||
[AggregateIniValueEntry(ExcludeIfEmpty = true)]
|
||||
public string ItemEntryName
|
||||
{
|
||||
get { return (string)GetValue(ItemEntryNameProperty); }
|
||||
set { SetValue(ItemEntryNameProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty EntryWeightProperty = DependencyProperty.Register(nameof(EntryWeight), typeof(float), typeof(SupplyCrateItemSetEntry), new PropertyMetadata(1.0f));
|
||||
[DataMember]
|
||||
[AggregateIniValueEntry]
|
||||
public float EntryWeight
|
||||
{
|
||||
get { return (float)GetValue(EntryWeightProperty); }
|
||||
set { SetValue(EntryWeightProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty MinQuantityProperty = DependencyProperty.Register(nameof(MinQuantity), typeof(float), typeof(SupplyCrateItemSetEntry), new PropertyMetadata(1.0f));
|
||||
[DataMember]
|
||||
[AggregateIniValueEntry]
|
||||
public float MinQuantity
|
||||
{
|
||||
get { return (float)GetValue(MinQuantityProperty); }
|
||||
set { SetValue(MinQuantityProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty MaxQuantityProperty = DependencyProperty.Register(nameof(MaxQuantity), typeof(float), typeof(SupplyCrateItemSetEntry), new PropertyMetadata(1.0f));
|
||||
[DataMember]
|
||||
[AggregateIniValueEntry]
|
||||
public float MaxQuantity
|
||||
{
|
||||
get { return (float)GetValue(MaxQuantityProperty); }
|
||||
set { SetValue(MaxQuantityProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty MinQualityProperty = DependencyProperty.Register(nameof(MinQuality), typeof(float), typeof(SupplyCrateItemSetEntry), new PropertyMetadata(1.0f));
|
||||
[DataMember]
|
||||
[AggregateIniValueEntry]
|
||||
public float MinQuality
|
||||
{
|
||||
get { return (float)GetValue(MinQualityProperty); }
|
||||
set { SetValue(MinQualityProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty MaxQualityProperty = DependencyProperty.Register(nameof(MaxQuality), typeof(float), typeof(SupplyCrateItemSetEntry), new PropertyMetadata(1.0f));
|
||||
[DataMember]
|
||||
[AggregateIniValueEntry]
|
||||
public float MaxQuality
|
||||
{
|
||||
get { return (float)GetValue(MaxQualityProperty); }
|
||||
set { SetValue(MaxQualityProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty ForceBlueprintProperty = DependencyProperty.Register(nameof(ForceBlueprint), typeof(bool), typeof(SupplyCrateItemSetEntry), new PropertyMetadata(false));
|
||||
[DataMember]
|
||||
[AggregateIniValueEntry(Key = "bForceBlueprint")]
|
||||
public bool ForceBlueprint
|
||||
{
|
||||
get { return (bool)GetValue(ForceBlueprintProperty); }
|
||||
set { SetValue(ForceBlueprintProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty ChanceToBeBlueprintOverrideProperty = DependencyProperty.Register(nameof(ChanceToBeBlueprintOverride), typeof(float), typeof(SupplyCrateItemSetEntry), new PropertyMetadata(0.0f));
|
||||
[DataMember]
|
||||
[AggregateIniValueEntry]
|
||||
public float ChanceToBeBlueprintOverride
|
||||
{
|
||||
get { return (float)GetValue(ChanceToBeBlueprintOverrideProperty); }
|
||||
set { SetValue(ChanceToBeBlueprintOverrideProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty ItemClassStringsProperty = DependencyProperty.Register(nameof(ItemClassStrings), typeof(StringIniValueList), typeof(SupplyCrateItemSetEntry), new PropertyMetadata(null));
|
||||
[DataMember]
|
||||
[AggregateIniValueEntry(ValueWithinBrackets = true)]
|
||||
public StringIniValueList ItemClassStrings
|
||||
{
|
||||
get { return (StringIniValueList)GetValue(ItemClassStringsProperty); }
|
||||
set { SetValue(ItemClassStringsProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty ItemsWeightsProperty = DependencyProperty.Register(nameof(ItemsWeights), typeof(FloatIniValueList), typeof(SupplyCrateItemSetEntry), new PropertyMetadata(null));
|
||||
[DataMember]
|
||||
[AggregateIniValueEntry(ValueWithinBrackets = true)]
|
||||
public FloatIniValueList ItemsWeights
|
||||
{
|
||||
get { return (FloatIniValueList)GetValue(ItemsWeightsProperty); }
|
||||
set { SetValue(ItemsWeightsProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty ItemsProperty = DependencyProperty.Register(nameof(Items), typeof(ObservableCollection<SupplyCrateItemEntrySettings>), typeof(SupplyCrateItemSetEntry), new PropertyMetadata(null));
|
||||
public ObservableCollection<SupplyCrateItemEntrySettings> Items
|
||||
{
|
||||
get { return (ObservableCollection<SupplyCrateItemEntrySettings>)GetValue(ItemsProperty); }
|
||||
set { SetValue(ItemsProperty, value); }
|
||||
}
|
||||
|
||||
public override string GetSortKey()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public override bool IsEquivalent(AggregateIniValue other)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public override void InitializeFromINIValue(string value)
|
||||
{
|
||||
base.FromComplexINIValue(value);
|
||||
}
|
||||
|
||||
public override string ToINIValue()
|
||||
{
|
||||
return base.ToComplexINIValue(false);
|
||||
}
|
||||
|
||||
public bool IsModelValid => ItemClassStrings.Count > 0 && ItemClassStrings.Count == ItemsWeights.Count;
|
||||
|
||||
public bool IsViewValid => Items.Count > 0;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue