GetListOfInvalidClassNames.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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(InvalidClassNames.Contains(card.CardEffectClassName))
  27. continue;
  28. InvalidClassNames.Add(card.CardEffectClassName);
  29. Debug.LogError($"Invalid Class Name: {card.CardEffectClassName}");
  30. }
  31. Debug.Log($"Total Invalid Class Names: {InvalidClassNames.Count}");
  32. bool CanAttachEffectComponent(string ID, string ClassName)
  33. {
  34. if (string.IsNullOrEmpty(ClassName))
  35. return false;
  36. if (Type.GetType(ClassName + ",Assembly-CSharp") == null)
  37. {
  38. if (!ClassName.Contains("token"))
  39. {
  40. if (Type.GetType($"DCGO.CardEffects.{ID}.{ClassName},Assembly-CSharp") == null)
  41. return false;
  42. }
  43. else
  44. {
  45. if (Type.GetType($"DCGO.CardEffects.Tokens.{ClassName},Assembly-CSharp") == null)
  46. return false;
  47. }
  48. }
  49. return true;
  50. }
  51. }
  52. }
  53. }