EditDeck.cs 43 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350
  1. using DG.Tweening;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using UnityEngine;
  6. using UnityEngine.Events;
  7. using UnityEngine.EventSystems;
  8. using UnityEngine.UI;
  9. public class EditDeck : MonoBehaviour
  10. {
  11. [Header("Deck creation object")]
  12. public GameObject CreateDeckObject;
  13. [Header("card prefab")]
  14. public CardPrefab_CreateDeck cardPrefab_CreateDeck;
  15. [Header("card pool scroll rect")]
  16. public ScrollRect CardPoolScroll;
  17. [Header("Deck card scroll rect")]
  18. public ScrollRect DeckScroll;
  19. [Header("Deck card number display text")]
  20. public Text DeckCountText;
  21. [Header("loading object")]
  22. public LoadingObject LoadingObjec;
  23. [Header("Card details display")]
  24. public DetailCard_DeckEditor DetailCard;
  25. [Header("filter")]
  26. public FilterCardList filterCardList;
  27. /*
  28. [Header("フィルターパネル")]
  29. public FilterPanel filterPanel;
  30. */
  31. [Header("Deck name input field")]
  32. public InputField DeckNameInputField;
  33. //Deck data being edited
  34. public DeckData EdittingDeckData { get; set; }
  35. bool _isFromSelectDeck = false;
  36. public UnityAction EndEditAction;
  37. public int DisplayPageIndex = 0;
  38. public Button UpDisplayPageIndexButton;
  39. public Button DownDisplayPageIndexButton;
  40. public Text ShowDisplayPageIndexText;
  41. public LoadingObject isSearchingObject;
  42. [Header("Page switching SE")]
  43. public AudioClip SwitchPageSE;
  44. [Header("Card classification display")]
  45. [SerializeField] CardDistribution cardDistribution;
  46. int _maxDisplayPageIndex;
  47. string _oldDeckName = "";
  48. List<CEntity_Base> _oldDeckCards = new List<CEntity_Base>();
  49. List<CEntity_Base> _oldDigitamaDeckCards = new List<CEntity_Base>();
  50. int _oldKeyCardId = -1;
  51. bool _isFromClipboard = false;
  52. private void Start()
  53. {
  54. #if !UNITY_EDITOR && UNITY_ANDROID
  55. CardPoolScroll.content.GetComponent<GridLayoutGroup>().constraintCount = 5;
  56. #endif
  57. }
  58. void CheckButtonEnabled()
  59. {
  60. UpDisplayPageIndexButton.interactable = DisplayPageIndex < _maxDisplayPageIndex;
  61. UpDisplayPageIndexButton.transform.GetChild(0).gameObject.SetActive(DisplayPageIndex < _maxDisplayPageIndex);
  62. DownDisplayPageIndexButton.interactable = DisplayPageIndex > 0;
  63. DownDisplayPageIndexButton.transform.GetChild(0).gameObject.SetActive(DisplayPageIndex > 0);
  64. ShowDisplayPageIndexText.text = $"{DisplayPageIndex + 1}/{_maxDisplayPageIndex + 1}";
  65. CardPoolScroll.verticalNormalizedPosition = 1;
  66. }
  67. public void UpDisplayPageIndex()
  68. {
  69. ContinuousController.instance.PlaySE(SwitchPageSE);
  70. DisplayPageIndex++;
  71. if (DisplayPageIndex > _maxDisplayPageIndex)
  72. {
  73. DisplayPageIndex = _maxDisplayPageIndex;
  74. }
  75. SetCardData();
  76. CheckButtonEnabled();
  77. ReflectDeckData();
  78. }
  79. public void DownDisplayPageIndex()
  80. {
  81. ContinuousController.instance.PlaySE(SwitchPageSE);
  82. DisplayPageIndex--;
  83. if (DisplayPageIndex < 0)
  84. {
  85. DisplayPageIndex = 0;
  86. }
  87. SetCardData();
  88. CheckButtonEnabled();
  89. ReflectDeckData();
  90. }
  91. List<List<CEntity_Base>> SprittedCardLists = new List<List<CEntity_Base>>();
  92. //List<CEntity_Base> ActiveCardList = new List<CEntity_Base>();
  93. IEnumerator SetSprittedCardLists()
  94. {
  95. SprittedCardLists = new List<List<CEntity_Base>>();
  96. for (int i = 0; i < _maxDisplayPageIndex + 1; i++)
  97. {
  98. SprittedCardLists.Add(new List<CEntity_Base>());
  99. }
  100. List<CEntity_Base> cEntity_Bases = new List<CEntity_Base>();
  101. foreach (CEntity_Base cEntity_Base in ContinuousController.instance.CardList)
  102. {
  103. if (MatchCondition(cEntity_Base))
  104. {
  105. cEntity_Bases.Add(cEntity_Base);
  106. }
  107. }
  108. for (int i = 0; i < cEntity_Bases.Count; i++)
  109. {
  110. CEntity_Base cEntity_Base = cEntity_Bases[i];
  111. int Quotient = i / _cardPoolPrefabs.Count;
  112. if (0 <= Quotient && Quotient < SprittedCardLists.Count)
  113. {
  114. SprittedCardLists[Quotient].Add(cEntity_Base);
  115. }
  116. }
  117. yield return null;
  118. }
  119. void SetCardData()
  120. {
  121. for (int i = 0; i < _cardPoolPrefabs.Count; i++)
  122. {
  123. if (i < SprittedCardLists[DisplayPageIndex].Count)
  124. {
  125. _cardPoolPrefabs[i].isActive = true;
  126. _cardPoolPrefabs[i].SetUpCardPrefab_CreateDeck(SprittedCardLists[DisplayPageIndex][i]);
  127. }
  128. else
  129. {
  130. _cardPoolPrefabs[i].isActive = false;
  131. }
  132. }
  133. }
  134. #region Card details display
  135. public void OffDetailCard()
  136. {
  137. DetailCard.OffDetailCard();
  138. }
  139. public void OnDetailCard(CEntity_Base cEntity_Base)
  140. {
  141. if (isDragging)
  142. {
  143. return;
  144. }
  145. DetailCard.SetUpDetailCard(cEntity_Base);
  146. }
  147. #endregion
  148. int _frameCount = 0;
  149. int _updateFrame = 3;
  150. private void Update()
  151. {
  152. #region Updates only once every few frames
  153. _frameCount++;
  154. if (_frameCount < _updateFrame)
  155. {
  156. return;
  157. }
  158. else
  159. {
  160. _frameCount = 0;
  161. }
  162. #endregion
  163. ShowOnlyVisibleObjects();
  164. if (EdittingDeckData != null)
  165. {
  166. TrialDrawButton.gameObject.SetActive(EdittingDeckData.DeckCards().Count >= 1);
  167. ClearDeckButton.gameObject.SetActive(EdittingDeckData.AllDeckCards().Count >= 1);
  168. }
  169. }
  170. #region Show only visible cards
  171. public void ShowOnlyVisibleObjects()
  172. {
  173. if (DoneSetUp)
  174. {
  175. foreach (CardPrefab_CreateDeck cardPrefab_CreateDeck in _cardPoolPrefabs)
  176. {
  177. if (!cardPrefab_CreateDeck.isActive)
  178. {
  179. cardPrefab_CreateDeck.gameObject.SetActive(false);
  180. }
  181. else
  182. {
  183. cardPrefab_CreateDeck.gameObject.SetActive(true);
  184. if (!((RectTransform)cardPrefab_CreateDeck.transform).IsVisibleFrom(Opening.instance.MainCamera))
  185. {
  186. cardPrefab_CreateDeck.CardImage.transform.parent.gameObject.SetActive(false);
  187. }
  188. else
  189. {
  190. cardPrefab_CreateDeck.CardImage.transform.parent.gameObject.SetActive(true);
  191. if (cardPrefab_CreateDeck.cEntity_Base != null)
  192. {
  193. //if (cardPrefab_CreateDeck.cEntity_Base.CardSprite != null)
  194. {
  195. cardPrefab_CreateDeck.ShowCardImage();
  196. }
  197. }
  198. }
  199. }
  200. }
  201. }
  202. }
  203. #endregion
  204. public bool isEditting { get; set; } = false;
  205. #region Close deck editing screen
  206. public void OnClickCompleteEditButton()
  207. {
  208. ContinuousController.instance.PlaySE(Opening.instance.DecisionSE);
  209. ContinuousController.instance.StartCoroutine(CloseCreateDeckCoroutine(false));
  210. }
  211. public void OnClickCancelEditButton()
  212. {
  213. ContinuousController.instance.PlaySE(Opening.instance.CancelSE);
  214. ContinuousController.instance.StartCoroutine(CloseCreateDeckCoroutine(true));
  215. }
  216. public IEnumerator CloseCreateDeckCoroutine(bool Canceled)
  217. {
  218. isEditting = false;
  219. yield return ContinuousController.instance.StartCoroutine(LoadingObjec.StartLoading("Now Loading"));
  220. Opening.instance.OffYesNoObjects();
  221. Opening.instance.deck.trialDraw.Close();
  222. Opening.instance.deck.deckListPanel.Close();
  223. for (int i = 0; i < Opening.instance.deck.selectDeck.deckInfoPrefabParentScroll.content.childCount; i++)
  224. {
  225. CreateNewDeckButton createNewDeckButton = Opening.instance.deck.selectDeck.deckInfoPrefabParentScroll.content.GetChild(i).GetComponent<CreateNewDeckButton>();
  226. if (createNewDeckButton != null)
  227. {
  228. createNewDeckButton.CreateNewDeckWayObject.Close_(false);
  229. break;
  230. }
  231. }
  232. if (Canceled)
  233. {
  234. EdittingDeckData.DeckCardIDs = DeckData.GetDeckCardCodes(DeckData.SortedDeckCardsList(_oldDeckCards));
  235. EdittingDeckData.DigitamaDeckCardIDs = DeckData.GetDeckCardCodes(DeckData.SortedDeckCardsList(_oldDigitamaDeckCards));
  236. EdittingDeckData.DeckName = _oldDeckName;
  237. EdittingDeckData.KeyCardId = _oldKeyCardId;
  238. }
  239. if (!EdittingDeckData.AllDeckCards().Contains(EdittingDeckData.KeyCard))
  240. {
  241. EdittingDeckData.KeyCardId = -1;
  242. }
  243. #region not save if deck is empty or canceled when importing from clipboard
  244. if (EdittingDeckData != null && (EdittingDeckData.DeckCards().Count == 0 && EdittingDeckData.DigitamaDeckCards().Count == 0 || (Canceled && _isFromClipboard)))
  245. {
  246. ContinuousController.instance.DeckDatas.Remove(EdittingDeckData);
  247. }
  248. #endregion
  249. ContinuousController.instance.SaveDeckDatas();
  250. ContinuousController.instance.SaveDeckData(EdittingDeckData);
  251. for (int i = 0; i < DeckScroll.content.childCount; i++)
  252. {
  253. Destroy(DeckScroll.content.GetChild(i).gameObject);
  254. }
  255. if (!Canceled)
  256. {
  257. EdittingDeckData.DeckCardIDs = DeckData.GetDeckCardCodes(DeckData.SortedDeckCardsList(EdittingDeckData.DeckCards()));
  258. EdittingDeckData.DigitamaDeckCardIDs = DeckData.GetDeckCardCodes(DeckData.SortedDeckCardsList(EdittingDeckData.DigitamaDeckCards()));
  259. }
  260. foreach (CardPrefab_CreateDeck cardPrefab_CreateDeck in _cardPoolPrefabs)
  261. {
  262. if (cardPrefab_CreateDeck._OnEnterCoroutine != null)
  263. {
  264. cardPrefab_CreateDeck.StopCoroutine(cardPrefab_CreateDeck._OnEnterCoroutine);
  265. cardPrefab_CreateDeck._OnEnterCoroutine = null;
  266. }
  267. cardPrefab_CreateDeck.StopAllCoroutines();
  268. cardPrefab_CreateDeck.gameObject.SetActive(false);
  269. }
  270. yield return new WaitUntil(() => DeckScroll.content.childCount == 0);
  271. yield return new WaitForSeconds(0.1f);
  272. CreateDeckObject.SetActive(false);
  273. #region Set up previous screen
  274. if (_isFromSelectDeck)
  275. {
  276. Opening.instance.deck.selectDeck.ResetDeckInfoPanel();
  277. yield return ContinuousController.instance.StartCoroutine(Opening.instance.deck.selectDeck.SetDeckList(false));
  278. for (int i = 0; i < Opening.instance.deck.selectDeck.deckInfoPrefabParentScroll.content.childCount; i++)
  279. {
  280. if (Opening.instance.deck.selectDeck.deckInfoPrefabParentScroll.content.GetChild(i).GetComponent<DeckInfoPrefab>() != null)
  281. {
  282. if (Opening.instance.deck.selectDeck.deckInfoPrefabParentScroll.content.GetChild(i).GetComponent<DeckInfoPrefab>().thisDeckData == EdittingDeckData)
  283. {
  284. if (Opening.instance.deck.selectDeck.deckInfoPrefabParentScroll.content.GetChild(i).GetComponent<DeckInfoPrefab>().thisDeckData != null)
  285. {
  286. if (Opening.instance.deck.selectDeck.deckInfoPrefabParentScroll.content.GetChild(i).GetComponent<DeckInfoPrefab>().thisDeckData.DeckCards().Count > 0)
  287. {
  288. Opening.instance.deck.selectDeck.deckInfoPrefabParentScroll.content.GetChild(i).GetComponent<DeckInfoPrefab>().OnClick_DeckInfoPrefab(false);
  289. }
  290. }
  291. }
  292. }
  293. }
  294. if (EdittingDeckData != null)
  295. {
  296. ContinuousController.instance.BattleDeckData = EdittingDeckData;
  297. }
  298. }
  299. else
  300. {
  301. Opening.instance.battle.selectBattleDeck.ResetDeckInfoPanel();
  302. yield return ContinuousController.instance.StartCoroutine(Opening.instance.battle.selectBattleDeck.SetDeckList(false));
  303. for (int i = 0; i < Opening.instance.battle.selectBattleDeck.deckInfoPrefabParentScroll.content.childCount; i++)
  304. {
  305. if (Opening.instance.battle.selectBattleDeck.deckInfoPrefabParentScroll.content.GetChild(i).GetComponent<DeckInfoPrefab>() != null)
  306. {
  307. if (Opening.instance.battle.selectBattleDeck.deckInfoPrefabParentScroll.content.GetChild(i).GetComponent<DeckInfoPrefab>().thisDeckData == EdittingDeckData)
  308. {
  309. Opening.instance.battle.selectBattleDeck.deckInfoPrefabParentScroll.content.GetChild(i).GetComponent<DeckInfoPrefab>().OnClick_DeckInfoPrefab(false);
  310. }
  311. }
  312. }
  313. }
  314. #endregion
  315. EndEditAction?.Invoke();
  316. EndEditAction = null;
  317. yield return ContinuousController.instance.StartCoroutine(LoadingObjec.EndLoading());
  318. }
  319. #endregion
  320. #region Open deck editing screen
  321. public void SetUpCreateDeck(DeckData deckData, bool isFromSelectDeck, bool isFromClipboard = false)
  322. {
  323. if (deckData == null)
  324. {
  325. return;
  326. }
  327. _isFromClipboard = isFromClipboard;
  328. Opening.instance.OffYesNoObjects();
  329. Opening.instance.deck.trialDraw.Close();
  330. Opening.instance.deck.deckListPanel.Close();
  331. _oldDeckName = deckData.DeckName;
  332. _oldDeckCards = new List<CEntity_Base>();
  333. foreach (CEntity_Base cEntity_Base in deckData.DeckCards())
  334. {
  335. _oldDeckCards.Add(cEntity_Base);
  336. }
  337. _oldDigitamaDeckCards = new List<CEntity_Base>();
  338. foreach (CEntity_Base cEntity_Base in deckData.DigitamaDeckCards())
  339. {
  340. _oldDigitamaDeckCards.Add(cEntity_Base);
  341. }
  342. _oldKeyCardId = deckData.KeyCardId;
  343. _checkCoverCoroutine = null;
  344. this._isFromSelectDeck = isFromSelectDeck;
  345. DisplayPageIndex = 0;
  346. SetCardData();
  347. CheckButtonEnabled();
  348. isSearchingObject.Off();
  349. ContinuousController.instance.StartCoroutine(SetUpCreateDeckCoroutine(deckData));
  350. }
  351. public IEnumerator SetUpCreateDeckCoroutine(DeckData deckData)
  352. {
  353. yield return ContinuousController.instance.StartCoroutine(LoadingObjec.StartLoading("Now Loading"));
  354. yield return new WaitForSeconds(0.1f);
  355. for (int i = 0; i < draggable_CardParent.childCount; i++)
  356. {
  357. Destroy(draggable_CardParent.GetChild(i).gameObject);
  358. }
  359. DraggingCover.SetActive(false);
  360. CardPoolScroll.verticalNormalizedPosition = 1;
  361. DeckScroll.verticalNormalizedPosition = 1;
  362. deckData.DeckCardIDs = DeckData.GetDeckCardCodes(DeckData.SortedDeckCardsList(deckData.DeckCards()));
  363. deckData.DigitamaDeckCardIDs = DeckData.GetDeckCardCodes(DeckData.SortedDeckCardsList(deckData.DigitamaDeckCards()));
  364. EdittingDeckData = deckData;
  365. ContinuousController.instance.SaveDeckDatas();
  366. //ContinuousController.instance.SaveDeckData(EdittingDeckData);
  367. OffDetailCard();
  368. for (int i = 0; i < DeckScroll.content.childCount; i++)
  369. {
  370. Destroy(DeckScroll.content.GetChild(i).gameObject);
  371. }
  372. yield return new WaitUntil(() => DeckScroll.content.childCount == 0);
  373. for (int i = 0; i < DeckScroll.viewport.childCount; i++)
  374. {
  375. if (i != 0)
  376. {
  377. Destroy(DeckScroll.viewport.GetChild(i).gameObject);
  378. }
  379. }
  380. yield return new WaitUntil(() => DeckScroll.viewport.childCount == 1);
  381. _maxDisplayPageIndex = (ContinuousController.instance.CardList.Length - 1) / _cardPoolPrefabs.Count;
  382. if (deckData != null)
  383. {
  384. List<CEntity_Base> DeckCards = new List<CEntity_Base>();
  385. foreach (CEntity_Base cEntity_Base in deckData.AllDeckCards())
  386. {
  387. DeckCards.Add(cEntity_Base);
  388. }
  389. foreach (CEntity_Base cEntity_Base in DeckCards)
  390. {
  391. CreateDeckCard(cEntity_Base);
  392. }
  393. }
  394. CreateDeckObject.SetActive(true);
  395. foreach (CardPrefab_CreateDeck _CardPrefab_CreateDeck in _cardPoolPrefabs)
  396. {
  397. _CardPrefab_CreateDeck.isActive = true;
  398. if (_CardPrefab_CreateDeck._OnEnterCoroutine != null)
  399. {
  400. _CardPrefab_CreateDeck.StopCoroutine(_CardPrefab_CreateDeck._OnEnterCoroutine);
  401. _CardPrefab_CreateDeck._OnEnterCoroutine = null;
  402. }
  403. }
  404. filterCardList.Init(() => ContinuousController.instance.StartCoroutine(ShowPoolCard_MatchCondition()));
  405. DeckNameInputField.onEndEdit.RemoveAllListeners();
  406. DeckNameInputField.text = EdittingDeckData.DeckName;
  407. DeckNameInputField.onEndEdit.AddListener(OnEndEdit);
  408. yield return ContinuousController.instance.StartCoroutine(SetSprittedCardLists());
  409. SetCardData();
  410. CheckButtonEnabled();
  411. ReflectDeckData();
  412. cardDistribution.SetCardDistribution(EdittingDeckData);
  413. yield return new WaitForSeconds(0.1f);
  414. for (int i = 0; i < DeckScroll.content.childCount; i++)
  415. {
  416. DeckScroll.content.GetChild(i).GetComponent<CardPrefab_CreateDeck>().ShowCardImage();
  417. }
  418. yield return StartCoroutine(LoadingObjec.EndLoading());
  419. isEditting = true;
  420. }
  421. public void OnEndEdit(string text)
  422. {
  423. string deckName = text;
  424. deckName = DeckData.ValidateDeckName(deckName);
  425. ContinuousController.instance.RenameDeck(EdittingDeckData, text);
  426. DeckNameInputField.onEndEdit.RemoveAllListeners();
  427. DeckNameInputField.text = deckName;
  428. DeckNameInputField.onEndEdit.AddListener(OnEndEdit);
  429. }
  430. #endregion
  431. public List<CardPrefab_CreateDeck> CardPoolCardPrefabs_CreateDeck = new List<CardPrefab_CreateDeck>();
  432. #region Initialize the deck editing screen at the start of the game
  433. public List<CardPrefab_CreateDeck> cardPoolPrefabs_all = new List<CardPrefab_CreateDeck>();
  434. List<CardPrefab_CreateDeck> _cardPoolPrefabs = new List<CardPrefab_CreateDeck>();
  435. bool DoneSetUp { get; set; } = false;
  436. public IEnumerator InitEditDeck()
  437. {
  438. cardDistribution.Init();
  439. for (int i = 0; i < CardPoolScroll.content.childCount; i++)
  440. {
  441. CardPrefab_CreateDeck cardPrefab_CreateDeck = CardPoolScroll.content.GetChild(i).GetComponent<CardPrefab_CreateDeck>();
  442. if (cardPrefab_CreateDeck != null)
  443. {
  444. CardPoolCardPrefabs_CreateDeck.Add(cardPrefab_CreateDeck);
  445. }
  446. }
  447. for (int i = 0; i < DeckScroll.content.childCount; i++)
  448. {
  449. Destroy(DeckScroll.content.GetChild(i).gameObject);
  450. }
  451. foreach (CardPrefab_CreateDeck cardPrefab_CreateDeck in cardPoolPrefabs_all)
  452. {
  453. if (cardPrefab_CreateDeck.gameObject.activeSelf)
  454. {
  455. cardPrefab_CreateDeck.gameObject.SetActive(false);
  456. }
  457. }
  458. for (int i = 0; i < cardPoolPrefabs_all.Count; i++)
  459. {
  460. if (i < ContinuousController.instance.CardList.Length)
  461. {
  462. CardPrefab_CreateDeck _cardPrefab_CreateDeck = cardPoolPrefabs_all[i];
  463. _cardPoolPrefabs.Add(_cardPrefab_CreateDeck);
  464. CEntity_Base cEntity_Base = ContinuousController.instance.CardList[i];
  465. foreach (ScrollRect _scroll in _cardPrefab_CreateDeck.scroll)
  466. {
  467. _scroll.content = CardPoolScroll.content;
  468. _scroll.viewport = CardPoolScroll.viewport;
  469. _scroll.enabled = false;
  470. }
  471. _cardPrefab_CreateDeck.OnClickAction = () =>
  472. {
  473. StartCoroutine(AddDeckCardCoroutine_OnClick(_cardPrefab_CreateDeck));
  474. };
  475. _cardPrefab_CreateDeck.OnBeginDragAction = (cardPrefab_CreateDeck) => { StartCoroutine(OnBeginDrag(cardPrefab_CreateDeck)); };
  476. _cardPrefab_CreateDeck.OnEnterAction = (cardPrefab) =>
  477. {
  478. OnDetailCard(_cardPrefab_CreateDeck.cEntity_Base);
  479. };
  480. }
  481. }
  482. yield return ContinuousController.instance.StartCoroutine(SetSprittedCardLists());
  483. yield return new WaitForSeconds(0.1f);
  484. DoneSetUp = true;
  485. }
  486. #endregion
  487. #region Changed deck content changes to UI
  488. public void ReflectDeckData()
  489. {
  490. if (EdittingDeckData != null)
  491. {
  492. //Turn on covers for cards that cannot be included in the deck
  493. if (_checkCoverCoroutine != null)
  494. {
  495. StopCoroutine(_checkCoverCoroutine);
  496. }
  497. _checkCoverCoroutine = StartCoroutine(CheckCoverIEnumerator());
  498. SetDeckCountText();
  499. }
  500. }
  501. Coroutine _checkCoverCoroutine = null;
  502. IEnumerator CheckCoverIEnumerator()
  503. {
  504. foreach (CardPrefab_CreateDeck cardPrefab_CreateDeck in _cardPoolPrefabs)
  505. {
  506. yield return null;
  507. cardPrefab_CreateDeck.CheckCover(EdittingDeckData);
  508. }
  509. }
  510. #endregion
  511. #region Show deck number text
  512. public void SetDeckCountText()
  513. {
  514. DeckCountText.text = $"{EdittingDeckData.DeckCards().Count}+{EdittingDeckData.DigitamaDeckCards().Count}/50+5";
  515. if (EdittingDeckData.IsValidDeckData())
  516. {
  517. DeckCountText.color = new Color32(69, 255, 69, 255);
  518. }
  519. else
  520. {
  521. DeckCountText.color = new Color32(255, 64, 64, 255);
  522. }
  523. }
  524. #endregion
  525. #region Generate cards for deck
  526. public CardPrefab_CreateDeck CreateDeckCard(CEntity_Base cEntity_Base)
  527. {
  528. CardPrefab_CreateDeck _cardPrefab_CreateDeck = Instantiate(cardPrefab_CreateDeck, DeckScroll.content);
  529. SetUpDeckCard(_cardPrefab_CreateDeck, cEntity_Base);
  530. return _cardPrefab_CreateDeck;
  531. }
  532. public void SetUpDeckCard(CardPrefab_CreateDeck _cardPrefab_CreateDeck, CEntity_Base cEntity_Base)
  533. {
  534. foreach (ScrollRect _scroll in _cardPrefab_CreateDeck.scroll)
  535. {
  536. _scroll.content = DeckScroll.content;
  537. _scroll.viewport = DeckScroll.viewport;
  538. }
  539. _cardPrefab_CreateDeck.SetUpCardPrefab_CreateDeck(cEntity_Base);
  540. _cardPrefab_CreateDeck.ShowCardImage();
  541. _cardPrefab_CreateDeck.OnClickAction = () =>
  542. {
  543. StartCoroutine(RemoveDeckCardCoroutine_OnClick(_cardPrefab_CreateDeck));
  544. };
  545. _cardPrefab_CreateDeck.OnBeginDragAction = (cardPrefab_CreateDeck) => { StartCoroutine(OnBeginDrag(cardPrefab_CreateDeck)); };
  546. _cardPrefab_CreateDeck.OnEnterAction = (cardPrefab) =>
  547. {
  548. OnDetailCard(cEntity_Base);
  549. cardPrefab.SetupAddRemoveButton(EdittingDeckData);
  550. };
  551. _cardPrefab_CreateDeck.OnExitAction = (cardPrefab) =>
  552. {
  553. cardPrefab.OffAddRemoveButton();
  554. };
  555. _cardPrefab_CreateDeck.Parent.localScale = new Vector3(0.76f, 0.76f, 0.76f);
  556. _cardPrefab_CreateDeck.OnClickAddButtonAction = (cardPrefab) => StartCoroutine(AddDeckCardCoroutine_OnClick(cardPrefab));
  557. _cardPrefab_CreateDeck.OnClickRemoveButtonAction = (cardPrefab) => StartCoroutine(RemoveDeckCardCoroutine_OnClick(cardPrefab));
  558. }
  559. #endregion
  560. #region Display only cards that meet search/filter conditions
  561. bool MatchCondition(CEntity_Base cEntity_Base)
  562. {
  563. if (!filterCardList.OnlyContainsName()(cEntity_Base))
  564. {
  565. return false;
  566. }
  567. if (!filterCardList.OnlyContainsColor()(cEntity_Base))
  568. {
  569. return false;
  570. }
  571. if (!filterCardList.OnlyMatchRarity()(cEntity_Base))
  572. {
  573. return false;
  574. }
  575. if (!filterCardList.OnlyMatchCardKind()(cEntity_Base))
  576. {
  577. return false;
  578. }
  579. if (!filterCardList.OnlyMatchCardSet()(cEntity_Base))
  580. {
  581. return false;
  582. }
  583. if (!filterCardList.OnlyMatchPlayCost()(cEntity_Base))
  584. {
  585. return false;
  586. }
  587. if (!filterCardList.OnlyMatchLevel()(cEntity_Base))
  588. {
  589. return false;
  590. }
  591. if (!filterCardList.OnlyMatchSpecialCardKind()(cEntity_Base))
  592. {
  593. return false;
  594. }
  595. if (!filterCardList.OnlyMatchParallelCondition()(cEntity_Base))
  596. {
  597. return false;
  598. }
  599. return true;
  600. }
  601. public IEnumerator ShowPoolCard_MatchCondition()
  602. {
  603. DraggingCover.SetActive(true);
  604. DisplayPageIndex = 0;
  605. _maxDisplayPageIndex = (ContinuousController.instance.CardList.Count((cEntity_Base) => MatchCondition(cEntity_Base)) - 1) / _cardPoolPrefabs.Count;
  606. yield return ContinuousController.instance.StartCoroutine(SetSprittedCardLists());
  607. SetCardData();
  608. CheckButtonEnabled();
  609. ReflectDeckData();
  610. DraggingCover.SetActive(false);
  611. for (int i = 0; i < CardPoolCardPrefabs_CreateDeck.Count; i++)
  612. {
  613. CardPrefab_CreateDeck cardPrefab_CreateDeck = CardPoolCardPrefabs_CreateDeck[i];
  614. if (cardPrefab_CreateDeck != null)
  615. {
  616. cardPrefab_CreateDeck.uIShiny.enabled = false;
  617. if (cardPrefab_CreateDeck._OnEnterCoroutine != null)
  618. {
  619. cardPrefab_CreateDeck.StopCoroutine(cardPrefab_CreateDeck._OnEnterCoroutine);
  620. cardPrefab_CreateDeck._OnEnterCoroutine = null;
  621. }
  622. cardPrefab_CreateDeck.StopAllCoroutines();
  623. }
  624. }
  625. }
  626. #endregion
  627. #region Manipulating card objects
  628. [Header("draggable card object")]
  629. public Draggable_Card draggable_CardPrefab;
  630. [Header("draggable card object parent")]
  631. public Transform draggable_CardParent;
  632. [Header("Deck card dropArea")]
  633. public DropArea DeckCardsDropArea;
  634. [Header("card pool dropArea")]
  635. public DropArea CardPoolDropArea;
  636. [Header("Cover while dragging")]
  637. public GameObject DraggingCover;
  638. [Header("Coordinates of the disappearing deck card")]
  639. public Transform DisappearDeckCardTransform;
  640. //Is it draggable?
  641. public bool CanDrag { get; set; } = true;
  642. //Whether you are dragging
  643. public bool isDragging { get; set; } = false;
  644. #region Generate draggable objects
  645. public Draggable_Card CreateDraggable_Card()
  646. {
  647. Draggable_Card draggable_Card = Instantiate(draggable_CardPrefab, draggable_CardParent);
  648. draggable_Card.DefaultParent = draggable_CardParent;
  649. draggable_Card.transform.localScale = new Vector3(1, 1, 1);
  650. draggable_Card.CardImage.color = new Color(1, 1, 1, 1);
  651. return draggable_Card;
  652. }
  653. #endregion
  654. #region At the start of drag
  655. public IEnumerator OnBeginDrag(CardPrefab_CreateDeck _cardPrefab_CreateDeck)
  656. {
  657. if (_cardPrefab_CreateDeck.transform.parent == CardPoolScroll.content)
  658. {
  659. if (!DeckBuildingRule.CanAddCard(_cardPrefab_CreateDeck.cEntity_Base, EdittingDeckData))
  660. {
  661. yield break;
  662. }
  663. }
  664. if (Input.GetMouseButton(1))
  665. {
  666. yield break;
  667. }
  668. if (!isDragging && CanDrag)
  669. {
  670. Draggable_Card draggable_Card = CreateDraggable_Card();
  671. SetStartDrag(_cardPrefab_CreateDeck, draggable_Card);
  672. draggable_Card.OnDropAction = (dropAreas) => { OnEndDrag(dropAreas, _cardPrefab_CreateDeck, draggable_Card); };
  673. draggable_Card.OnDragAction = (dropAreas) =>
  674. {
  675. DeckCardsDropArea.OnPointerExit();
  676. CardPoolDropArea.OnPointerExit();
  677. if (_cardPrefab_CreateDeck.transform.parent == DeckScroll.content)
  678. {
  679. if (dropAreas.Count((dropArea) => dropArea == CardPoolDropArea) > 0)
  680. {
  681. CardPoolDropArea.OnPointerEnter();
  682. }
  683. }
  684. else if (_cardPrefab_CreateDeck.transform.parent == CardPoolScroll.content)
  685. {
  686. if (dropAreas.Count((dropArea) => dropArea == DeckCardsDropArea) > 0)
  687. {
  688. DeckCardsDropArea.OnPointerEnter();
  689. }
  690. }
  691. };
  692. if (_cardPrefab_CreateDeck.transform.parent == DeckScroll.content)
  693. {
  694. DeckCardsDropArea.OffDropPanel();
  695. CardPoolDropArea.OnDropPanel();
  696. _cardPrefab_CreateDeck.HideDeckCardTab();
  697. _cardPrefab_CreateDeck.OffAddRemoveButton();
  698. }
  699. else if (_cardPrefab_CreateDeck.transform.parent == CardPoolScroll.content)
  700. {
  701. DeckCardsDropArea.OnDropPanel();
  702. CardPoolDropArea.OffDropPanel();
  703. }
  704. DeckScroll.enabled = false;
  705. for (int i = 0; i < DeckScroll.content.childCount; i++)
  706. {
  707. foreach (ScrollRect scroll in DeckScroll.content.GetChild(i).GetComponent<CardPrefab_CreateDeck>().scroll)
  708. {
  709. scroll.enabled = false;
  710. }
  711. }
  712. CardPoolScroll.enabled = false;
  713. for (int i = 0; i < _cardPoolPrefabs.Count; i++)
  714. {
  715. foreach (ScrollRect scroll in _cardPoolPrefabs[i].scroll)
  716. {
  717. scroll.enabled = false;
  718. }
  719. }
  720. }
  721. }
  722. public void SetStartDrag(CardPrefab_CreateDeck _cardPrefab_CreateDeck, Draggable_Card draggable_Card)
  723. {
  724. isDragging = true;
  725. CanDrag = false;
  726. DraggingCover.SetActive(true);
  727. draggable_Card.SetUpDraggable_Card(_cardPrefab_CreateDeck.cEntity_Base, _cardPrefab_CreateDeck.transform.position);
  728. }
  729. #endregion
  730. #region At the end of dragging
  731. public void OnEndDrag(List<DropArea> dropAreas, CardPrefab_CreateDeck _cardPrefab_CreateDeck, Draggable_Card draggable_Card)
  732. {
  733. DeckCardsDropArea.OffDropPanel();
  734. CardPoolDropArea.OffDropPanel();
  735. StartCoroutine(OnEndDragCoroutine(dropAreas, _cardPrefab_CreateDeck, draggable_Card));
  736. DeckScroll.enabled = true;
  737. for (int i = 0; i < DeckScroll.content.childCount; i++)
  738. {
  739. foreach (ScrollRect scroll in DeckScroll.content.GetChild(i).GetComponent<CardPrefab_CreateDeck>().scroll)
  740. {
  741. scroll.enabled = true;
  742. }
  743. }
  744. CardPoolScroll.enabled = true;
  745. for (int i = 0; i < _cardPoolPrefabs.Count; i++)
  746. {
  747. foreach (ScrollRect scroll in _cardPoolPrefabs[i].scroll)
  748. {
  749. scroll.enabled = true;
  750. }
  751. }
  752. }
  753. IEnumerator OnEndDragCoroutine(List<DropArea> dropAreas, CardPrefab_CreateDeck _cardPrefab_CreateDeck, Draggable_Card draggable_Card)
  754. {
  755. if (_cardPrefab_CreateDeck.transform.parent == DeckScroll.content)
  756. {
  757. if (dropAreas.Count((dropArea) => dropArea == CardPoolDropArea) > 0)
  758. {
  759. yield return StartCoroutine(RemoveDeckCardCoroutine(_cardPrefab_CreateDeck, draggable_Card));
  760. }
  761. else
  762. {
  763. _cardPrefab_CreateDeck.ShowCardImage();
  764. }
  765. }
  766. else if (_cardPrefab_CreateDeck.transform.parent == CardPoolScroll.content)
  767. {
  768. if (dropAreas.Count((dropArea) => dropArea == DeckCardsDropArea) > 0)
  769. {
  770. yield return StartCoroutine(AddDeckCardCoroutine(_cardPrefab_CreateDeck, draggable_Card));
  771. }
  772. }
  773. Reset_EndDrag(draggable_Card);
  774. }
  775. public void Reset_EndDrag(Draggable_Card draggable_Card)
  776. {
  777. isDragging = false;
  778. DestroyImmediate(draggable_Card.gameObject);
  779. CanDrag = true;
  780. DraggingCover.SetActive(false);
  781. }
  782. #endregion
  783. float _addCardAnimationTime = 0.01f;
  784. #region Animation to add cards to deck when dropped
  785. IEnumerator AddDeckCardCoroutine(CardPrefab_CreateDeck _cardPrefab_CreateDeck, Draggable_Card draggable_Card)
  786. {
  787. if (!DeckBuildingRule.CanAddCard(_cardPrefab_CreateDeck.cEntity_Base, EdittingDeckData))
  788. {
  789. yield break;
  790. }
  791. ContinuousController.instance.PlaySE(Opening.instance.DrawSE);
  792. for (int i = 0; i < CardPoolCardPrefabs_CreateDeck.Count; i++)
  793. {
  794. CardPrefab_CreateDeck cardPrefab_CreateDeck = CardPoolCardPrefabs_CreateDeck[i];
  795. if (cardPrefab_CreateDeck != null)
  796. {
  797. cardPrefab_CreateDeck.uIShiny.enabled = false;
  798. cardPrefab_CreateDeck.OffAddRemoveButton();
  799. }
  800. }
  801. yield return StartCoroutine(AddDeckCards(_cardPrefab_CreateDeck.cEntity_Base));
  802. List<CEntity_Base> DeckCards = new List<CEntity_Base>();
  803. foreach (CEntity_Base cEntity_Base in EdittingDeckData.AllDeckCards())
  804. {
  805. DeckCards.Add(cEntity_Base);
  806. }
  807. Debug.Log("ADDED EDITTING DECK DATA ENTITIES TO DECK CARDS LIST: " + DeckCards.Count);
  808. int index = DeckCards.IndexOf(_cardPrefab_CreateDeck.cEntity_Base) + DeckCards.Count((cEntity_Base) => cEntity_Base == _cardPrefab_CreateDeck.cEntity_Base) - 1;
  809. Debug.Log("GETTING INDEX OF LAST ADDED CARD: " + index);
  810. CardPrefab_CreateDeck newCardPrefab = CreateDeckCard(_cardPrefab_CreateDeck.cEntity_Base);
  811. newCardPrefab.HideDeckCardTab();
  812. newCardPrefab.transform.SetSiblingIndex(index);
  813. List<CardPrefab_CreateDeck> cardPrefabs = new List<CardPrefab_CreateDeck>();
  814. for (int i = 0; i < DeckScroll.content.childCount; i++)
  815. {
  816. CardPrefab_CreateDeck cardPrefab = DeckScroll.content.GetChild(i).GetComponent<CardPrefab_CreateDeck>();
  817. if (cardPrefab != null)
  818. {
  819. cardPrefabs.Add(cardPrefab);
  820. if (cardPrefab.AddRemoveButtonParent.activeSelf)
  821. {
  822. cardPrefab.OffAddRemoveButton();
  823. cardPrefab.SetupAddRemoveButton(EdittingDeckData);
  824. }
  825. }
  826. }
  827. foreach (CardPrefab_CreateDeck cardPrefab in cardPrefabs)
  828. {
  829. cardPrefab.transform.SetParent(null);
  830. }
  831. foreach (CEntity_Base cEntity_Base in EdittingDeckData.AllDeckCards())
  832. {
  833. for (int i = 0; i < cardPrefabs.Count; i++)
  834. {
  835. if (cardPrefabs[i].cEntity_Base == cEntity_Base)
  836. {
  837. cardPrefabs[i].transform.SetParent(DeckScroll.content);
  838. cardPrefabs.Remove(cardPrefabs[i]);
  839. break;
  840. }
  841. }
  842. }
  843. yield return new WaitForSeconds(Time.deltaTime);
  844. bool end = false;
  845. var sequence = DOTween.Sequence();
  846. sequence
  847. .Append(draggable_Card.transform.DOMove(newCardPrefab.transform.position, _addCardAnimationTime))
  848. .Join(draggable_Card.transform.DOScale(new Vector3(0.5f, 0.5f, 0.5f), _addCardAnimationTime))
  849. .AppendCallback(() => end = true);
  850. sequence.Play();
  851. yield return new WaitWhile(() => !end);
  852. end = false;
  853. yield return new WaitForSeconds(_addCardAnimationTime);
  854. newCardPrefab.ShowCardImage();
  855. draggable_Card.gameObject.SetActive(false);
  856. }
  857. #endregion
  858. #region Animation to remove cards on drop
  859. IEnumerator RemoveDeckCardCoroutine(CardPrefab_CreateDeck _cardPrefab_CreateDeck, Draggable_Card draggable_Card)
  860. {
  861. ContinuousController.instance.PlaySE(Opening.instance.DrawSE);
  862. bool end = false;
  863. yield return StartCoroutine(RemoveDeckCards(_cardPrefab_CreateDeck.cEntity_Base));
  864. var sequence = DOTween.Sequence();
  865. sequence
  866. .Append(draggable_Card.transform.DOMove(DisappearDeckCardTransform.position, _addCardAnimationTime))
  867. .Join(draggable_Card.transform.DOScale(new Vector3(0.5f, 0.5f, 0.5f), _addCardAnimationTime))
  868. .AppendCallback(() => end = true);
  869. sequence.Play();
  870. yield return new WaitWhile(() => !end);
  871. end = false;
  872. yield return new WaitForSeconds(_addCardAnimationTime);
  873. draggable_Card.gameObject.SetActive(false);
  874. if (_cardPrefab_CreateDeck.transform.parent != CardPoolScroll.content)
  875. {
  876. DestroyImmediate(_cardPrefab_CreateDeck.gameObject);
  877. }
  878. }
  879. #endregion
  880. #region Add card to deck animation when right-clicking
  881. public IEnumerator AddDeckCardCoroutine_OnClick(CardPrefab_CreateDeck _cardPrefab_CreateDeck)
  882. {
  883. if (!DeckBuildingRule.CanAddCard(_cardPrefab_CreateDeck.cEntity_Base, EdittingDeckData))
  884. {
  885. yield break;
  886. }
  887. Draggable_Card draggable_Card = CreateDraggable_Card();
  888. SetStartDrag(_cardPrefab_CreateDeck, draggable_Card);
  889. draggable_Card.IsDragging = false;
  890. yield return StartCoroutine(AddDeckCardCoroutine(_cardPrefab_CreateDeck, draggable_Card));
  891. Reset_EndDrag(draggable_Card);
  892. }
  893. #endregion
  894. #region Animation to remove cards from deck when right-clicking
  895. public IEnumerator RemoveDeckCardCoroutine_OnClick(CardPrefab_CreateDeck _cardPrefab_CreateDeck)
  896. {
  897. Draggable_Card draggable_Card = CreateDraggable_Card();
  898. _cardPrefab_CreateDeck.HideDeckCardTab();
  899. SetStartDrag(_cardPrefab_CreateDeck, draggable_Card);
  900. draggable_Card.IsDragging = false;
  901. yield return StartCoroutine(RemoveDeckCardCoroutine(_cardPrefab_CreateDeck, draggable_Card));
  902. Reset_EndDrag(draggable_Card);
  903. }
  904. #endregion
  905. #region add cards to deck
  906. public IEnumerator AddDeckCards(CEntity_Base cEntity_Base)
  907. {
  908. if (!DeckBuildingRule.CanAddCard(cEntity_Base, EdittingDeckData))
  909. {
  910. yield break;
  911. }
  912. EdittingDeckData.AddCard(cEntity_Base);
  913. EdittingDeckData.DeckCardIDs = DeckData.GetDeckCardCodes(DeckData.SortedDeckCardsList(EdittingDeckData.DeckCards()));
  914. EdittingDeckData.DigitamaDeckCardIDs = DeckData.GetDeckCardCodes(DeckData.SortedDeckCardsList(EdittingDeckData.DigitamaDeckCards()));
  915. ReflectDeckData();
  916. cardDistribution.SetCardDistribution(EdittingDeckData);
  917. }
  918. #endregion
  919. #region remove cards from deck
  920. public IEnumerator RemoveDeckCards(CEntity_Base cEntity_Base)
  921. {
  922. if (cEntity_Base.cardKind == CardKind.DigiEgg)
  923. {
  924. if (EdittingDeckData.DigitamaDeckCards().Count((cardData) => cardData.CardID == cEntity_Base.CardID) <= 0)
  925. {
  926. yield break;
  927. }
  928. }
  929. else
  930. {
  931. if (EdittingDeckData.DeckCards().Count((cardData) => cardData.CardID == cEntity_Base.CardID) <= 0)
  932. {
  933. yield break;
  934. }
  935. }
  936. EdittingDeckData.RemoveCard(cEntity_Base);
  937. EdittingDeckData.DeckCardIDs = DeckData.GetDeckCardCodes(DeckData.SortedDeckCardsList(EdittingDeckData.DeckCards()));
  938. EdittingDeckData.DigitamaDeckCardIDs = DeckData.GetDeckCardCodes(DeckData.SortedDeckCardsList(EdittingDeckData.DigitamaDeckCards()));
  939. ReflectDeckData();
  940. cardDistribution.SetCardDistribution(EdittingDeckData);
  941. }
  942. #endregion
  943. #endregion
  944. public void OnPointerEnterBackground()
  945. {
  946. List<CardPrefab_CreateDeck> cardPrefabs = new List<CardPrefab_CreateDeck>();
  947. for (int i = 0; i < DeckScroll.content.childCount; i++)
  948. {
  949. CardPrefab_CreateDeck cardPrefab = DeckScroll.content.GetChild(i).GetComponent<CardPrefab_CreateDeck>();
  950. if (cardPrefab != null)
  951. {
  952. cardPrefabs.Add(cardPrefab);
  953. }
  954. }
  955. foreach (CardPrefab_CreateDeck cardPrefab in cardPrefabs)
  956. {
  957. if (cardPrefab != null)
  958. {
  959. cardPrefab._OnExit();
  960. }
  961. }
  962. }
  963. public Button TrialDrawButton;
  964. public void OnClickTrial5DrawButton()
  965. {
  966. Opening.instance.deck.trialDraw.Off();
  967. ContinuousController.instance.PlaySE(Opening.instance.DecisionSE);
  968. ContinuousController.instance.StartCoroutine(Opening.instance.deck.trialDraw.SetUpTrialDraw(EdittingDeckData.DeckCards()));
  969. }
  970. public Button ClearDeckButton;
  971. public void OnClickClearDeckButton()
  972. {
  973. List<UnityAction> Commands = new List<UnityAction>()
  974. {
  975. () =>
  976. {
  977. ContinuousController.instance.StartCoroutine(ClearDeckCoroutine());
  978. IEnumerator ClearDeckCoroutine()
  979. {
  980. DraggingCover.SetActive(true);
  981. List<CEntity_Base> cEntity_Bases = new List<CEntity_Base>();
  982. foreach(CEntity_Base cEntity_Base in EdittingDeckData.DeckCards())
  983. {
  984. cEntity_Bases.Add(cEntity_Base);
  985. }
  986. foreach(CEntity_Base cEntity_Base in EdittingDeckData.DigitamaDeckCards())
  987. {
  988. cEntity_Bases.Add(cEntity_Base);
  989. }
  990. foreach(CEntity_Base cEntity_Base in cEntity_Bases)
  991. {
  992. yield return ContinuousController.instance.StartCoroutine(RemoveDeckCards(cEntity_Base));
  993. }
  994. for (int i = 0; i < DeckScroll.content.childCount; i++)
  995. {
  996. Destroy(DeckScroll.content.GetChild(i).gameObject);
  997. }
  998. yield return new WaitWhile(() => DeckScroll.content.childCount >= 1);
  999. DraggingCover.SetActive(false);
  1000. }
  1001. },
  1002. null,
  1003. };
  1004. List<string> CommandTexts = new List<string>()
  1005. {
  1006. LocalizeUtility.GetLocalizedString(
  1007. EngMessage: "Yes",
  1008. JpnMessage: "はい"
  1009. ),
  1010. LocalizeUtility.GetLocalizedString(
  1011. EngMessage: "No",
  1012. JpnMessage: "いいえ"
  1013. ),
  1014. };
  1015. Opening.instance.SetUpActiveYesNoObject(
  1016. Commands,
  1017. CommandTexts,
  1018. LocalizeUtility.GetLocalizedString(
  1019. EngMessage: "Remove all cards from the deck?",
  1020. JpnMessage: "全てのカードをデッキから除きますか?"
  1021. ),
  1022. true);
  1023. }
  1024. public void OnClickSetDeckIconButton()
  1025. {
  1026. ContinuousController.instance.StartCoroutine(Opening.instance.deck.deckListPanel.SetUpDeckListPanel(
  1027. EdittingDeckData,
  1028. OnClick,
  1029. LocalizeUtility.GetLocalizedString(
  1030. EngMessage: "Choose a deck icon card.",
  1031. JpnMessage: "デッキアイコン選択"
  1032. )));
  1033. void OnClick(CEntity_Base cEntity_Base)
  1034. {
  1035. EdittingDeckData.KeyCardId = cEntity_Base.CardIndex;
  1036. Opening.instance.deck.deckListPanel.Close();
  1037. Opening.instance.PlayDecisionSE();
  1038. }
  1039. }
  1040. }