MatchClassNames.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using UnityEditor;
  5. using UnityEditor.VersionControl;
  6. using UnityEngine;
  7. using UnityEngine.Analytics;
  8. using WebSocketSharp;
  9. namespace DCGO.Tools.Repair
  10. {
  11. public class MatchClassNames : MonoBehaviour
  12. {
  13. [MenuItem("Window/DCGO/Repair/MatchClassNames")]
  14. static void FixEntityCardIndex()
  15. {
  16. Dictionary<string,string> classNameDictionary = new Dictionary<string,string>();
  17. string path = "Assets/CardBaseEntity/";
  18. if (Selection.assetGUIDs.Length != 0)
  19. path = AssetDatabase.GUIDToAssetPath(Selection.assetGUIDs[0]);
  20. List<CEntity_Base> List = GetAsset.LoadAll<CEntity_Base>(path).ToList();
  21. List<CEntity_Base> normalArts = List.Filter(x => !x.name.Contains("_P"));
  22. List<CEntity_Base> alternateArts = List.Filter(x => x.name.Contains("_P"));
  23. string assetName = "";
  24. int mismatchCount = 0;
  25. //Locate All mismatched classNames
  26. foreach (CEntity_Base card in normalArts)
  27. {
  28. assetName = card.CardEffectClassName;
  29. List<CEntity_Base> matchingCards = alternateArts.Filter(x => x.CardID == card.CardID);
  30. foreach(CEntity_Base matchingCard in matchingCards)
  31. {
  32. if(matchingCard.CardEffectClassName != assetName)
  33. {
  34. Debug.Log($"Mismatch Found: {matchingCard.name}");
  35. mismatchCount++;
  36. matchingCard.CardEffectClassName = assetName;
  37. EditorUtility.SetDirty(matchingCard);
  38. }
  39. }
  40. }
  41. Debug.Log($"DONE: mismatches found: {mismatchCount}");
  42. return;
  43. }
  44. }
  45. }