GetListOfInvalidClassNames.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using UnityEditor.SceneManagement;
  5. using UnityEditor;
  6. using UnityEngine;
  7. using UnityEngine.SceneManagement;
  8. using DCGO.CardEntities;
  9. namespace DCGO.Tools.Repair
  10. {
  11. public class GetListOfInvalidClassNames : MonoBehaviour
  12. {
  13. [MenuItem("Window/DCGO/Repair/Get List of Invalid Class Names")]
  14. static void FixEntityClassNames()
  15. {
  16. List<CEntity_Base> Entities = GetAsset.LoadAll<CEntity_Base>("Assets/CardBaseEntity/");
  17. List<string> InvalidClassNames = new List<string>();
  18. foreach (CEntity_Base card in Entities)
  19. {
  20. if (CanAttachEffectComponent(card.SetID, card.CardEffectClassName))
  21. continue;
  22. if (card.EffectDiscription_ENG.Equals("")
  23. && card.InheritedEffectDiscription_ENG.Equals("")
  24. && card.SecurityEffectDiscription_ENG.Equals(""))
  25. continue;
  26. if (card.EffectDiscription_ENG.Equals("-")
  27. && card.InheritedEffectDiscription_ENG.Equals("-")
  28. && card.SecurityEffectDiscription_ENG.Equals("-"))
  29. continue;
  30. if(InvalidClassNames.Contains(card.CardEffectClassName))
  31. continue;
  32. InvalidClassNames.Add(card.CardEffectClassName);
  33. Debug.LogError($"Invalid Class Name: {card.name} - {card.CardEffectClassName}");
  34. }
  35. Debug.Log($"Total Invalid Class Names: {InvalidClassNames.Count}");
  36. bool CanAttachEffectComponent(string ID, string ClassName)
  37. {
  38. if (string.IsNullOrEmpty(ClassName))
  39. return false;
  40. if (Type.GetType(ClassName + ",Assembly-CSharp") == null)
  41. {
  42. if (!ClassName.Contains("token"))
  43. {
  44. if (Type.GetType($"DCGO.CardEffects.{ID}.{ClassName},Assembly-CSharp") == null)
  45. return false;
  46. }
  47. else
  48. {
  49. if (Type.GetType($"DCGO.CardEffects.Tokens.{ClassName},Assembly-CSharp") == null)
  50. return false;
  51. }
  52. }
  53. return true;
  54. }
  55. }
  56. }
  57. }