From 78e772dad920ce097acd18d96eff4f1d9532ea45 Mon Sep 17 00:00:00 2001 From: Ottermandias Date: Mon, 5 Jun 2023 18:24:58 +0200 Subject: [PATCH] Fix unknown animations not counting for changed items. --- .../Data/ObjectIdentification.cs | 52 +++++++++---------- 1 file changed, 24 insertions(+), 28 deletions(-) diff --git a/Penumbra.GameData/Data/ObjectIdentification.cs b/Penumbra.GameData/Data/ObjectIdentification.cs index 111a652d..e992ce43 100644 --- a/Penumbra.GameData/Data/ObjectIdentification.cs +++ b/Penumbra.GameData/Data/ObjectIdentification.cs @@ -50,13 +50,12 @@ internal sealed class ObjectIdentification : DataSharer, IObjectIdentifier { if (path.EndsWith(".pap", StringComparison.OrdinalIgnoreCase) || path.EndsWith(".tmb", StringComparison.OrdinalIgnoreCase)) { - IdentifyVfx(set, path); - } - else - { - var info = GamePathParser.GetFileInfo(path); - IdentifyParsed(set, info); - } + if (IdentifyVfx(set, path)) + return; + } + + var info = GamePathParser.GetFileInfo(path); + IdentifyParsed(set, info); } public Dictionary Identify(string path) @@ -161,24 +160,22 @@ internal sealed class ObjectIdentification : DataSharer, IObjectIdentifier private void IdentifyParsed(IDictionary set, GameObjectInfo info) { - switch (info.ObjectType) + switch (info.FileType) { - case ObjectType.Unknown: - switch (info.FileType) - { - case FileType.Sound: - AddCounterString(set, FileType.Sound.ToString()); - break; - case FileType.Animation: - case FileType.Pap: - AddCounterString(set, FileType.Animation.ToString()); - break; - case FileType.Shader: - AddCounterString(set, FileType.Shader.ToString()); - break; - } + case FileType.Sound: + AddCounterString(set, FileType.Sound.ToString()); + return; + case FileType.Animation: + case FileType.Pap: + AddCounterString(set, FileType.Animation.ToString()); + return; + case FileType.Shader: + AddCounterString(set, FileType.Shader.ToString()); + return; + } - break; + switch (info.ObjectType) + { case ObjectType.LoadingScreen: case ObjectType.Map: case ObjectType.Interface: @@ -235,19 +232,18 @@ internal sealed class ObjectIdentification : DataSharer, IObjectIdentifier } break; - - default: throw new InvalidEnumArgumentException(); } } - private void IdentifyVfx(IDictionary set, string path) + private bool IdentifyVfx(IDictionary set, string path) { var key = GamePathParser.VfxToKey(path); - if (key.Length == 0 || !Actions.TryGetValue(key, out var actions)) - return; + if (key.Length == 0 || !Actions.TryGetValue(key, out var actions) || actions.Count == 0) + return false; foreach (var action in actions) set[$"Action: {action.Name}"] = action; + return true; } private IReadOnlyList> CreateModelObjects(ActorManager.ActorManagerData actors,