From 9df02ec05e6d9702abd7a9a29ed92b908355ff62 Mon Sep 17 00:00:00 2001
From: Brett Hewitson
Date: Wed, 15 Jun 2022 22:33:59 +1000
Subject: [PATCH] Crafting Override Changes
- added good, warning and bad icons to crafting override grids.
---
.../Lib/Model/CraftingOverride.cs | 71 +++++++++++++++++++
src/ARKServerManager/Lib/ServerProfile.cs | 23 ++++--
.../UserControls/ServerSettingsControl.xaml | 56 +++++++++++++--
.../ServerSettingsControl.xaml.cs | 22 +++++-
src/ARKServerManager/VersionFeed.xml | 5 +-
src/ARKServerManager/VersionFeedBeta.xml | 23 ++++++
6 files changed, 184 insertions(+), 16 deletions(-)
diff --git a/src/ARKServerManager/Lib/Model/CraftingOverride.cs b/src/ARKServerManager/Lib/Model/CraftingOverride.cs
index fb86af30..3c093888 100644
--- a/src/ARKServerManager/Lib/Model/CraftingOverride.cs
+++ b/src/ARKServerManager/Lib/Model/CraftingOverride.cs
@@ -1,10 +1,46 @@
using ServerManagerTool.Common.Attibutes;
using ServerManagerTool.Common.Model;
+using System.Collections.Generic;
+using System.Linq;
using System.Runtime.Serialization;
using System.Windows;
namespace ServerManagerTool.Lib
{
+ [DataContract]
+ public class CraftingOverrideList : AggregateIniValueList
+ {
+ public CraftingOverrideList(string aggregateValueName)
+ : base(aggregateValueName, null)
+ {
+ }
+
+ public IEnumerable RenderToView()
+ {
+ List errors = new List();
+
+ Update();
+
+ return errors;
+ }
+
+ public void RenderToModel()
+ {
+ }
+
+ public void UpdateForLocalization()
+ {
+ }
+
+ public void Update(bool recursive = true)
+ {
+ IsEnabled = this.Count > 0;
+
+ foreach (var craftingOverride in this)
+ craftingOverride.Update(recursive);
+ }
+ }
+
[DataContract]
public class CraftingOverride : AggregateIniValue
{
@@ -44,7 +80,10 @@ namespace ServerManagerTool.Lib
public override void InitializeFromINIValue(string value)
{
if (string.IsNullOrWhiteSpace(value))
+ {
+ Update();
return;
+ }
var kvPair = value.Split(new[] { '=' }, 2);
var kvValue = kvPair[1].Trim(' ');
@@ -64,6 +103,25 @@ namespace ServerManagerTool.Lib
public string DisplayName => GameData.FriendlyItemNameForClass(ItemClassString);
public bool IsValid => !string.IsNullOrWhiteSpace(ItemClassString) && BaseCraftingResourceRequirements.Count > 0;
+
+ public static readonly DependencyProperty ValidStatusProperty = DependencyProperty.Register(nameof(ValidStatus), typeof(string), typeof(CraftingOverride), new PropertyMetadata("N"));
+
+ public string ValidStatus
+ {
+ get { return (string)GetValue(ValidStatusProperty); }
+ set { SetValue(ValidStatusProperty, value); }
+ }
+
+ public void Update(bool recursive = true)
+ {
+ if (recursive && BaseCraftingResourceRequirements != null)
+ {
+ foreach (var resource in BaseCraftingResourceRequirements)
+ resource.Update();
+ }
+
+ ValidStatus = IsValid ? (BaseCraftingResourceRequirements.Any(i => i.ValidStatus == "N") ? "N" : (BaseCraftingResourceRequirements.Any(i => i.ValidStatus == "W") ? "W" : "Y")) : "N";
+ }
}
[DataContract]
@@ -119,5 +177,18 @@ namespace ServerManagerTool.Lib
public string DisplayName => GameData.FriendlyItemNameForClass(ResourceItemTypeString);
public bool IsValid => !string.IsNullOrWhiteSpace(ResourceItemTypeString);
+
+ public static readonly DependencyProperty ValidStatusProperty = DependencyProperty.Register(nameof(ValidStatus), typeof(string), typeof(CraftingResourceRequirement), new PropertyMetadata("N"));
+
+ public string ValidStatus
+ {
+ get { return (string)GetValue(ValidStatusProperty); }
+ set { SetValue(ValidStatusProperty, value); }
+ }
+
+ public void Update()
+ {
+ ValidStatus = IsValid ? (GameData.HasItemForClass(ResourceItemTypeString) ? "Y" : "W") : "N";
+ }
}
}
diff --git a/src/ARKServerManager/Lib/ServerProfile.cs b/src/ARKServerManager/Lib/ServerProfile.cs
index d4ce105c..60af1fc2 100644
--- a/src/ARKServerManager/Lib/ServerProfile.cs
+++ b/src/ARKServerManager/Lib/ServerProfile.cs
@@ -93,7 +93,7 @@ namespace ServerManagerTool.Lib
this.EngramEntryAutoUnlocks = new EngramAutoUnlockList(nameof(EngramEntryAutoUnlocks));
this.EngramSettings = new EngramSettingsList(this.OverrideNamedEngramEntries, this.EngramEntryAutoUnlocks);
- this.ConfigOverrideItemCraftingCosts = new AggregateIniValueList(nameof(ConfigOverrideItemCraftingCosts), null);
+ this.ConfigOverrideItemCraftingCosts = new CraftingOverrideList(nameof(ConfigOverrideItemCraftingCosts));
this.ConfigOverrideItemMaxQuantity = new StackSizeOverrideList(nameof(ConfigOverrideItemMaxQuantity));
this.ConfigOverrideSupplyCrateItems = new SupplyCrateOverrideList(nameof(ConfigOverrideSupplyCrateItems));
this.PreventTransferForClassNames = new PreventTransferOverrideList(nameof(PreventTransferForClassNames));
@@ -3128,11 +3128,11 @@ namespace ServerManagerTool.Lib
#endregion
#region Crafting Overrides
- public static readonly DependencyProperty ConfigOverrideItemCraftingCostsProperty = DependencyProperty.Register(nameof(ConfigOverrideItemCraftingCosts), typeof(AggregateIniValueList), typeof(ServerProfile), new PropertyMetadata(null));
+ public static readonly DependencyProperty ConfigOverrideItemCraftingCostsProperty = DependencyProperty.Register(nameof(ConfigOverrideItemCraftingCosts), typeof(CraftingOverrideList), typeof(ServerProfile), new PropertyMetadata(null));
[IniFileEntry(IniFiles.Game, IniSections.Game_ShooterGameMode, ServerProfileCategory.CraftingOverrides)]
- public AggregateIniValueList ConfigOverrideItemCraftingCosts
+ public CraftingOverrideList ConfigOverrideItemCraftingCosts
{
- get { return (AggregateIniValueList)GetValue(ConfigOverrideItemCraftingCostsProperty); }
+ get { return (CraftingOverrideList)GetValue(ConfigOverrideItemCraftingCostsProperty); }
set { SetValue(ConfigOverrideItemCraftingCostsProperty, value); }
}
#endregion
@@ -4057,6 +4057,8 @@ namespace ServerManagerTool.Lib
profile.NPCSpawnSettings.RenderToView();
if (Config.Default.SectionSupplyCrateOverridesEnabled)
profile.ConfigOverrideSupplyCrateItems.RenderToView();
+ if (Config.Default.SectionCraftingOverridesEnabled)
+ profile.ConfigOverrideItemCraftingCosts.RenderToView();
if (Config.Default.SectionStackSizeOverridesEnabled)
profile.ConfigOverrideItemMaxQuantity.RenderToView();
if (Config.Default.SectionPreventTransferOverridesEnabled)
@@ -4135,6 +4137,8 @@ namespace ServerManagerTool.Lib
profile.NPCSpawnSettings.RenderToView();
if (Config.Default.SectionSupplyCrateOverridesEnabled)
profile.ConfigOverrideSupplyCrateItems.RenderToView();
+ if (Config.Default.SectionCraftingOverridesEnabled)
+ profile.ConfigOverrideItemCraftingCosts.RenderToView();
if (Config.Default.SectionStackSizeOverridesEnabled)
profile.ConfigOverrideItemMaxQuantity.RenderToView();
if (Config.Default.SectionPreventTransferOverridesEnabled)
@@ -4274,6 +4278,12 @@ namespace ServerManagerTool.Lib
this.ConfigOverrideSupplyCrateItems.RenderToModel();
}
+ if (Config.Default.SectionCraftingOverridesEnabled)
+ {
+ progressCallback?.Invoke(0, _globalizer.GetResourceString("ProfileSave_ConstructingCraftingOverridesInformation"));
+ this.ConfigOverrideItemCraftingCosts.RenderToModel();
+ }
+
if (Config.Default.SectionStackSizeOverridesEnabled)
{
progressCallback?.Invoke(0, _globalizer.GetResourceString("ProfileSave_ConstructingStackSizeInformation"));
@@ -5312,7 +5322,7 @@ namespace ServerManagerTool.Lib
public void ResetCraftingOverridesSection()
{
- this.ConfigOverrideItemCraftingCosts = new AggregateIniValueList(nameof(ConfigOverrideItemCraftingCosts), null);
+ this.ConfigOverrideItemCraftingCosts = new CraftingOverrideList(nameof(ConfigOverrideItemCraftingCosts));
this.ConfigOverrideItemCraftingCosts.Reset();
}
@@ -5939,9 +5949,12 @@ namespace ServerManagerTool.Lib
private void SyncCraftingOverridesSection(ServerProfile sourceProfile)
{
+ sourceProfile.ConfigOverrideItemCraftingCosts.RenderToModel();
+
this.ConfigOverrideItemCraftingCosts.Clear();
this.ConfigOverrideItemCraftingCosts.FromIniValues(sourceProfile.ConfigOverrideItemCraftingCosts.ToIniValues());
this.ConfigOverrideItemCraftingCosts.IsEnabled = this.ConfigOverrideItemCraftingCosts.Count > 0;
+ this.ConfigOverrideItemCraftingCosts.RenderToView();
}
private void SyncCustomEngineSettingsSection(ServerProfile sourceProfile)
diff --git a/src/ARKServerManager/UserControls/ServerSettingsControl.xaml b/src/ARKServerManager/UserControls/ServerSettingsControl.xaml
index f06d4737..9aebe110 100644
--- a/src/ARKServerManager/UserControls/ServerSettingsControl.xaml
+++ b/src/ARKServerManager/UserControls/ServerSettingsControl.xaml
@@ -4836,7 +4836,7 @@
-
+
+
+
+
+
+
@@ -4860,7 +4882,7 @@
-
+
@@ -4901,7 +4923,7 @@
-
+
+
+
+
+
+
@@ -4925,12 +4969,12 @@
-
+
-
-
+
+
diff --git a/src/ARKServerManager/UserControls/ServerSettingsControl.xaml.cs b/src/ARKServerManager/UserControls/ServerSettingsControl.xaml.cs
index ab66689c..c8331182 100644
--- a/src/ARKServerManager/UserControls/ServerSettingsControl.xaml.cs
+++ b/src/ARKServerManager/UserControls/ServerSettingsControl.xaml.cs
@@ -1314,6 +1314,11 @@ namespace ServerManagerTool
Settings.ConfigOverrideSupplyCrateItems.Update();
}
+ private void CraftingOverrideGrids_SourceUpdated(object sender, DataTransferEventArgs e)
+ {
+ Settings.ConfigOverrideItemCraftingCosts.Update();
+ }
+
#region Dinos
private void DinoCustomization_Reset(object sender, RoutedEventArgs e)
{
@@ -1749,7 +1754,7 @@ namespace ServerManagerTool
private void AddCraftingOverride_Click(object sender, RoutedEventArgs e)
{
Settings.ConfigOverrideItemCraftingCosts.Add(new CraftingOverride());
- Settings.ConfigOverrideItemCraftingCosts.IsEnabled = true;
+ Settings.ConfigOverrideItemCraftingCosts.Update();
}
private void AddCraftingOverrideResource_Click(object sender, RoutedEventArgs e)
@@ -1761,6 +1766,7 @@ namespace ServerManagerTool
}
SelectedCraftingOverride.BaseCraftingResourceRequirements.Add(new CraftingResourceRequirement());
+ Settings.ConfigOverrideItemCraftingCosts.Update();
}
private void ClearCraftingOverrides_Click(object sender, RoutedEventArgs e)
@@ -1770,7 +1776,7 @@ namespace ServerManagerTool
SelectedCraftingOverride = null;
Settings.ConfigOverrideItemCraftingCosts.Clear();
- Settings.ConfigOverrideItemCraftingCosts.IsEnabled = false;
+ Settings.ConfigOverrideItemCraftingCosts.Update();
}
private void ClearCraftingOverrideResources_Click(object sender, RoutedEventArgs e)
@@ -1779,6 +1785,7 @@ namespace ServerManagerTool
return;
SelectedCraftingOverride?.BaseCraftingResourceRequirements.Clear();
+ Settings.ConfigOverrideItemCraftingCosts.Update();
}
private void PasteCraftingOverride_Click(object sender, RoutedEventArgs e)
@@ -1794,6 +1801,8 @@ namespace ServerManagerTool
// read the pasted data into an ini file.
var iniFile = IniFileUtils.ReadString(window.ConfigData.Replace(" ", ""));
+ Server.Profile.ConfigOverrideItemCraftingCosts.RenderToModel();
+
// cycle through the sections, adding them to the engrams list. Will bypass any sections that are named as per the ARK default sections.
foreach (var section in iniFile.Sections.Where(s => s.SectionName != null && !SystemIniFile.IniSectionNames.ContainsValue(s.SectionName)))
{
@@ -1803,6 +1812,8 @@ namespace ServerManagerTool
Server.Profile.ConfigOverrideItemCraftingCosts.IsEnabled |= configOverrideItemCraftingCosts.IsEnabled;
}
+ var errors = Server.Profile.ConfigOverrideItemCraftingCosts.RenderToView();
+
RefreshBasePrimalItemList();
}
@@ -1813,7 +1824,7 @@ namespace ServerManagerTool
var item = ((CraftingOverride)((Button)e.Source).DataContext);
Settings.ConfigOverrideItemCraftingCosts.Remove(item);
- Settings.ConfigOverrideItemCraftingCosts.IsEnabled = Settings.ConfigOverrideItemCraftingCosts.Count > 0;
+ Settings.ConfigOverrideItemCraftingCosts.Update();
}
private void RemoveCraftingOverrideResource_Click(object sender, RoutedEventArgs e)
@@ -1826,10 +1837,13 @@ namespace ServerManagerTool
var item = ((CraftingResourceRequirement)((Button)e.Source).DataContext);
SelectedCraftingOverride.BaseCraftingResourceRequirements.Remove(item);
+ Settings.ConfigOverrideItemCraftingCosts.Update();
}
private void SaveCraftingOverride_Click(object sender, RoutedEventArgs e)
{
+ Settings.ConfigOverrideItemCraftingCosts.RenderToModel();
+
var iniValues = new List();
iniValues.AddRange(Settings.ConfigOverrideItemCraftingCosts.ToIniValues());
var iniValue = string.Join("\r\n", iniValues);
@@ -1848,6 +1862,8 @@ namespace ServerManagerTool
if (item == null)
return;
+ Settings.ConfigOverrideItemCraftingCosts.RenderToModel();
+
var iniName = Settings.ConfigOverrideItemCraftingCosts.IniCollectionKey;
var iniValue = $"{iniName}={item.ToINIValue()}";
diff --git a/src/ARKServerManager/VersionFeed.xml b/src/ARKServerManager/VersionFeed.xml
index 7dd2f5cf..29c6971a 100644
--- a/src/ARKServerManager/VersionFeed.xml
+++ b/src/ARKServerManager/VersionFeed.xml
@@ -9,8 +9,8 @@
urn:uuid:93A04A12-C632-4C2B-AC76-42D9E476431C
- 1.1.432 (1.1.432.1)
- 1.1.432.1
+ 1.1.432 (1.1.432.3)
+ 1.1.432.32022-06-13T00:00:00Z
@@ -25,6 +25,7 @@
Gamedata Files - changed the Fjordur official mod to the correct mod id.
+
Crafting Override Grids - Added new icons to show Good (green), Warning (orange) or Bad (red). Warnings will show for resources not familiar with (raw class names, not loaded via gamedata files), Errors will show for empty resources.
Crafting Override Grids - Added new icons to show Good (green), Warning (orange) or Bad (red). Warnings will show for resources not familiar with (raw class names, not loaded via gamedata files), Errors will show for empty resources.