MatchClassNames.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using UnityEditor;
  5. using UnityEngine;
  6. using UnityEngine.Analytics;
  7. namespace DCGO.Tools.Repair
  8. {
  9. public class MatchClassNames : MonoBehaviour
  10. {
  11. [MenuItem("Window/DCGO/Repair/MatchClassNames")]
  12. static void FixEntityCardIndex()
  13. {
  14. Dictionary<string,string> classNameDictionary = new Dictionary<string,string>();
  15. string path = "Assets/CardBaseEntity/";
  16. if (Selection.assetGUIDs.Length != 0)
  17. path = AssetDatabase.GUIDToAssetPath(Selection.assetGUIDs[0]);
  18. Debug.Log($"ASSET PATH: {path}");
  19. List<CEntity_Base> List = GetAsset.LoadAll<CEntity_Base>(path)
  20. .OrderBy(x => x.name.Substring(x.name.LastIndexOf("-")+1, 2)).ToList();
  21. string className = "";
  22. string editList = "Asset Name - Original Class - New Class \n";
  23. int foundCount = 0;
  24. //Locate All mismatched classNames
  25. foreach (CEntity_Base card in List)
  26. {
  27. className = "";
  28. if (String.IsNullOrEmpty(card.CardEffectClassName))
  29. {
  30. Debug.Log($"Class Name Empty: {card.name}");
  31. continue;
  32. }
  33. if (!card.CardEffectClassName.Contains(card.CardID.Replace("-", "_")))
  34. {
  35. Debug.Log($"Using Alternate Card: {card.name}");
  36. continue;
  37. }
  38. className = FixCharactersInClassName($"{card.CardID}");
  39. if (className == card.CardEffectClassName)
  40. {
  41. Debug.Log($"Matches already: {card.name}");
  42. continue;
  43. }
  44. editList += $"{card.name} - {card.CardEffectClassName} - {className}\n";
  45. if (!classNameDictionary.ContainsKey(className))
  46. classNameDictionary.Add(className, card.CardEffectClassName);
  47. /*if (!card.name.Contains("_P"))
  48. {
  49. if (String.IsNullOrEmpty(card.CardEffectClassName))
  50. continue;
  51. if (!card.CardEffectClassName.Contains(card.CardID.Replace("-", "_")))
  52. continue;
  53. className = card.CardEffectClassName;
  54. continue;
  55. }
  56. if (!card.CardEffectClassName.Equals(className))
  57. {
  58. if (!classNameDictionary.ContainsKey(className))
  59. classNameDictionary.Add(className, card.CardEffectClassName);
  60. //Debug.Log($"{card.name}: {card.CardIndex} - {card.CardEffectClassName} != {className}");
  61. }*/
  62. //card.CardEffectClassName = className;
  63. }
  64. /*foreach (string key in classNameDictionary.Keys)
  65. {
  66. List<CEntity_Base> filtered = List.Filter(x => x.CardEffectClassName == key).ToList();
  67. foreach (CEntity_Base card in filtered)
  68. {
  69. //card.CardEffectClassName = classNameDictionary[key];
  70. //EditorUtility.SetDirty(card);
  71. }
  72. Debug.Log($"Filtered Count: {filtered.Count}");
  73. }*/
  74. //Debug.Log($"{key} - {classNameDictionary[key]}");
  75. Debug.Log(editList);
  76. Debug.Log($"DONE: found {classNameDictionary.Keys.Count}");
  77. return;
  78. string FixCharactersInClassName(string str)
  79. {
  80. string name = str;
  81. name = FixCharactersInName(name);
  82. name = name
  83. .Replace("-", "_")
  84. .Replace(".", "")
  85. .Replace("'", "")
  86. .Replace(",","")
  87. .Replace("&", "And")
  88. .Replace("(", "")
  89. .Replace(")", "");
  90. return name;
  91. }
  92. //Parse ScriptableObject Name
  93. string FixCharactersInName(string str)
  94. {
  95. string name = str;
  96. name = name
  97. .Replace(" ", "")
  98. .Replace(":", "")
  99. .Replace("?", "")
  100. .Replace("!", "")
  101. .Replace("<", "")
  102. .Replace(">", "");
  103. return name;
  104. }
  105. }
  106. }
  107. }