diff --git a/SabreTools.DatFiles/DatFile.cs b/SabreTools.DatFiles/DatFile.cs index c181a17f..3be6578d 100644 --- a/SabreTools.DatFiles/DatFile.cs +++ b/SabreTools.DatFiles/DatFile.cs @@ -513,6 +513,7 @@ namespace SabreTools.DatFiles /// True if the item has all required fields, false otherwise /// /// TODO: Implement this in all relevant DatFile types + /// TODO: Return list of missing fields? /// protected virtual bool HasRequiredFields(DatItem datItem) => true; @@ -545,15 +546,21 @@ namespace SabreTools.DatFiles /// True if the item should be skipped on write, false otherwise protected bool ShouldIgnore(DatItem datItem, bool ignoreBlanks) { - // TODO: Add non-error, non-warning logging to this method to capture ignore reasons - // If the item is supposed to be removed, we ignore if (datItem.Remove) + { + string itemString = JsonConvert.SerializeObject(datItem, Formatting.None); + logger?.Verbose($"Item '{itemString}' was skipped because it was marked for removal"); return true; + } // If we have the Blank dat item, we ignore if (datItem.ItemType == ItemType.Blank) + { + string itemString = JsonConvert.SerializeObject(datItem, Formatting.None); + logger?.Verbose($"Item '{itemString}' was skipped because it was of type 'Blank'"); return true; + } // If we're ignoring blanks and we have a Rom if (ignoreBlanks && datItem.ItemType == ItemType.Rom) @@ -562,16 +569,28 @@ namespace SabreTools.DatFiles // If we have a 0-size or blank rom, then we ignore if (rom.Size == 0 || rom.Size == null) + { + string itemString = JsonConvert.SerializeObject(datItem, Formatting.None); + logger?.Verbose($"Item '{itemString}' was skipped because it had an invalid size"); return true; + } } // If we have an item type not in the list of supported values if (!GetSupportedTypes().Contains(datItem.ItemType)) + { + string itemString = JsonConvert.SerializeObject(datItem, Formatting.None); + logger?.Verbose($"Item '{itemString}' was skipped because it was not supported in {Header?.DatFormat}"); return true; + } // If we have an item with missing required fields if (!HasRequiredFields(datItem)) + { + string itemString = JsonConvert.SerializeObject(datItem, Formatting.None); + logger?.Verbose($"Item '{itemString}' was skipped because it was missing required fields for {Header?.DatFormat}"); return true; + } return false; }