FindMissingAAs.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. using DCGO.CardEntities;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using Unity.EditorCoroutines.Editor;
  6. using UnityEditor;
  7. using UnityEngine;
  8. using UnityEngine.Networking;
  9. namespace DCGO.Tools
  10. {
  11. public class FindMissingAAs : MonoBehaviour
  12. {
  13. static FindMissingAAs instance;
  14. string baseURL = "https://raw.githubusercontent.com/TakaOtaku/Digimon-Card-App/main/src/";
  15. public List<CardData> _cardData;
  16. string debugText = "";
  17. int matchedCount = 0;
  18. [MenuItem("Window/DCGO/Find Missing AAs")]
  19. static void ErrataImages()
  20. {
  21. instance = new FindMissingAAs();
  22. EditorCoroutineUtility.StartCoroutine(instance.FindAAs(), instance);
  23. }
  24. IEnumerator FindAAs()
  25. {
  26. yield return EditorCoroutineUtility.StartCoroutine(instance.GetJsonData(), instance);
  27. List<CardData> aaCards = _cardData.Filter(x => x.AAs.Count > 0);
  28. foreach (CardData card in aaCards)
  29. {
  30. foreach(AlternateArt AA in card.AAs)
  31. {
  32. FindFile(AA.id.Replace("-Errata",""), card);
  33. }
  34. }
  35. Debug.Log(debugText);
  36. Debug.Log($"COMPLETED: {matchedCount}");
  37. }
  38. void FindFile(string ID, CardData data)
  39. {
  40. string fileName = $"{FixCharactersInClassName($"{ID}")}.asset";
  41. string folderName_SetID = $"{GetParseByHyphen(data.id)[0]}";
  42. string folderName_CardColor = $"{DataBase.CardColorNameDictionary[GetCardColors(data.color)[0]]}";
  43. folderName_CardColor = char.ToUpper(folderName_CardColor[0]) + folderName_CardColor.Substring(1);
  44. string folderName_CardKind = $"{DataBase.CardKindENNameDictionary[DictionaryUtility.GetCardKind(data.cardType.Replace("-", ""), DataBase.CardKindENNameDictionary)]}";
  45. string folderPath = $"Assets/CardBaseEntity/{folderName_SetID}/{folderName_CardColor}/{folderName_CardKind}";
  46. if (!Directory.Exists(folderPath))
  47. return;
  48. string filePath = $"{folderPath}/{fileName}".Trim().Replace("\t", "").Replace("\n", "").Replace("\r", "").Replace(" ", "");
  49. CEntity_Base card = GetAsset.Load<CEntity_Base>(filePath);
  50. if (card == null)
  51. {
  52. Debug.Log($"NO ASSET FOUND: {filePath}");
  53. debugText += $"{ID}\n";
  54. matchedCount++;
  55. return;
  56. }
  57. }
  58. IEnumerator GetJsonData()
  59. {
  60. string url = baseURL + "assets/cardlists/DigimonCards.json";
  61. UnityWebRequest jsonWebRequest = UnityWebRequest.Get(url);
  62. yield return jsonWebRequest.SendWebRequest();
  63. if (jsonWebRequest.result != UnityWebRequest.Result.Success)
  64. {
  65. Debug.Log(jsonWebRequest.error);
  66. }
  67. else
  68. {
  69. RootObject root = JsonUtility.FromJson<RootObject>("{\"cards\":" + jsonWebRequest.downloadHandler.text + "}");
  70. _cardData = root.cards;
  71. }
  72. yield return null;
  73. }
  74. //Parse ScriptableObject Name
  75. string FixCharactersInName(string str)
  76. {
  77. string name = str;
  78. name = name
  79. .Replace(" ", "_")
  80. .Replace(":", "")
  81. .Replace("?", "")
  82. .Replace("!", "")
  83. .Replace("<", "")
  84. .Replace(">", "");
  85. return name;
  86. }
  87. //Parse ScriptableObject Class Name
  88. public string FixCharactersInClassName(string str)
  89. {
  90. string name = str;
  91. name = FixCharactersInName(name);
  92. name = name
  93. .Replace("-", "_")
  94. .Replace(".", "")
  95. .Replace("'", "")
  96. .Replace("&", "And")
  97. .Replace("(", "")
  98. .Replace(")", "");
  99. return name;
  100. }
  101. public static string[] GetParseByHyphen(string CardImageName)
  102. {
  103. string[] parseByHyphen = new string[] { CardImageName };
  104. if (CardImageName.Contains('-'))
  105. {
  106. parseByHyphen = CardImageName.Split('-');
  107. }
  108. return parseByHyphen;
  109. }
  110. //Parse card colors to list
  111. List<CardColor> GetCardColors(string colors)
  112. {
  113. List<CardColor> cardColors = new List<CardColor>();
  114. foreach (string cardColorName in colors.Split("/"))
  115. {
  116. foreach (string cardColorNameValues in DataBase.CardColorNameDictionary.Values)
  117. {
  118. if (cardColorName.ToLower().Trim() == cardColorNameValues)
  119. {
  120. cardColors.Add(DictionaryUtility.GetCardColor(cardColorName.ToLower().Trim(), DataBase.CardColorNameDictionary));
  121. }
  122. }
  123. }
  124. return cardColors;
  125. }
  126. }
  127. }