Grid Changes

- added good, warning and bad icons to the map spawner and prevent transfer grids.
This commit is contained in:
Brett Hewitson 2022-06-15 23:18:42 +10:00
parent 9df02ec05e
commit ca9c053f08
8 changed files with 172 additions and 17 deletions

View file

@ -183,6 +183,8 @@ namespace ServerManagerTool.Lib
public static IEnumerable<NPCReplacement> GetNPCReplacements() => dinoSpawns.Select(d => new NPCReplacement() { FromClassName = d.ClassName, ToClassName = d.ClassName });
public static bool HasCreatureForClass(string className) => !string.IsNullOrWhiteSpace(className) && dinoSpawns.Any(e => e.ClassName.Equals(className));
public static bool IsSpawnableForClass(string className) => gameData?.Creatures?.FirstOrDefault(c => c.ClassName.Equals(className))?.IsSpawnable ?? true;
public static DinoTamable IsTameableForClass(string className) => gameData?.Creatures?.FirstOrDefault(c => c.ClassName.Equals(className))?.IsTameable ?? DinoTamable.True;

View file

@ -17,11 +17,9 @@ namespace ServerManagerTool.Lib
public IEnumerable<string> RenderToView()
{
List<string> errors = new List<string>();
Update();
return errors;
return new List<string>();
}
public void RenderToModel()

View file

@ -16,6 +16,8 @@ namespace ServerManagerTool.Lib
public IEnumerable<string> RenderToView()
{
Update();
return new List<string>();
}
@ -26,6 +28,14 @@ namespace ServerManagerTool.Lib
public void UpdateForLocalization()
{
}
public void Update()
{
IsEnabled = this.Count > 0;
foreach (var preventTransfer in this)
preventTransfer.Update();
}
}
[DataContract]
@ -53,7 +63,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(' ');
@ -74,5 +87,18 @@ namespace ServerManagerTool.Lib
{
return IsValid;
}
public static readonly DependencyProperty ValidStatusProperty = DependencyProperty.Register(nameof(ValidStatus), typeof(string), typeof(PreventTransferOverride), new PropertyMetadata("N"));
public string ValidStatus
{
get { return (string)GetValue(ValidStatusProperty); }
set { SetValue(ValidStatusProperty, value); }
}
public void Update()
{
ValidStatus = IsValid ? (GameData.HasCreatureForClass(DinoClassString) ? "Y" : "W") : "N";
}
}
}

View file

@ -20,7 +20,8 @@ namespace ServerManagerTool.Lib.ViewModel
Reset();
}
public NPCSpawnSettingsList(NPCSpawnContainerList<NPCSpawnContainer> configAddNPCSpawnEntriesContainer,
public NPCSpawnSettingsList(
NPCSpawnContainerList<NPCSpawnContainer> configAddNPCSpawnEntriesContainer,
NPCSpawnContainerList<NPCSpawnContainer> configSubtractNPCSpawnEntriesContainer,
NPCSpawnContainerList<NPCSpawnContainer> configOverrideNPCSpawnEntriesContainer)
{
@ -138,6 +139,8 @@ namespace ServerManagerTool.Lib.ViewModel
this.Add(spawnSettings);
}
Update();
}
public void RenderToModel()
@ -195,6 +198,12 @@ namespace ServerManagerTool.Lib.ViewModel
public void UpdateForLocalization()
{
}
public void Update(bool recursive = true)
{
foreach (var npcSpawn in this)
npcSpawn.Update(recursive);
}
}
public class NPCSpawnSettings : DependencyObject, IEnumerable<NPCSpawnEntrySettings>
@ -280,6 +289,26 @@ namespace ServerManagerTool.Lib.ViewModel
{
return NPCSpawnEntrySettings.GetEnumerator();
}
public bool IsViewValid => !string.IsNullOrWhiteSpace(NPCSpawnEntriesContainerClassString) && (NPCSpawnEntrySettings?.Count ?? 0) > 0;
public static readonly DependencyProperty ValidStatusProperty = DependencyProperty.Register(nameof(ValidStatus), typeof(string), typeof(NPCSpawnSettings), new PropertyMetadata("N"));
public string ValidStatus
{
get { return (string)GetValue(ValidStatusProperty); }
set { SetValue(ValidStatusProperty, value); }
}
public void Update(bool recursive = true)
{
if (recursive && NPCSpawnEntrySettings != null)
{
foreach (var itemSet in NPCSpawnEntrySettings)
itemSet.Update();
}
ValidStatus = IsViewValid ? (NPCSpawnEntrySettings.Any(i => i.ValidStatus == "N") ? "N" : (NPCSpawnEntrySettings.Any(i => i.ValidStatus == "W") ? "W" : "Y")) : "N";
}
}
public class NPCSpawnEntrySettings : DependencyObject
@ -315,5 +344,17 @@ namespace ServerManagerTool.Lib.ViewModel
public string DisplayName => GameData.FriendlyCreatureNameForClass(NPCClassString);
public bool IsValid => !string.IsNullOrWhiteSpace(NPCClassString);
public static readonly DependencyProperty ValidStatusProperty = DependencyProperty.Register(nameof(ValidStatus), typeof(string), typeof(NPCSpawnEntrySettings), new PropertyMetadata("N"));
public string ValidStatus
{
get { return (string)GetValue(ValidStatusProperty); }
set { SetValue(ValidStatusProperty, value); }
}
public void Update()
{
ValidStatus = IsValid ? (GameData.HasCreatureForClass(NPCClassString) ? "Y" : "W") : "N";
}
}
}