public void PlayCard(CardPatternData card, Transform emitter, int card_ID) { if (nowPlayingCard != null) { Debug.Log("WARNING: enemy is playing a card when there is already a card being played."); } nowPlayingCard = StartCoroutine(playCard(card, emitter, card_ID)); }
IEnumerator playCard(CardPatternData card, Transform emitter, int card_ID) { if (card.show_card_text) { card_name.showCard(card.card_text_1, card.card_text_2, card.card_text_3); yield return(new WaitForSeconds(1f)); } for (int i = 0; i < card.array.Length; i++) { ShotPatternData shot_data = Instantiate(card.array[i].shot); for (int j = 0; j < card.array[i].shot.loopQuantity; j++) { nowShooting = StartCoroutine(shoot(shot_data, card.array[i].bullet, emitter, j, i, card_ID)); checkShotPatternData(shot_data); for (int k = 0; k < (card.array[i].shot.delayBetweenLoops / Time.timeScale) && j % card.array[i].shot.delayAppliedEachNLoops == card.array[i].shot.delayAppliedEachNLoops - 1; k++) { yield return(new WaitForEndOfFrame()); } } for (int h = 0; h < card.array[i].events.Length; h++) { event_manager.fileEvent(card.array[i].events[h].shotEvent, card.array[i].events[h].delayBeforeEvent, i, card_ID); } yield return(new WaitForSeconds(card.array[i].delayAfter)); } nowPlayingCard = null; }