using CodeJay.Enum; using System.Collections; using System.Collections.Generic; using UnityEngine; using DG.Tweening; // Àӽà ¿¬Ãâ ½ºÅ©¸³Æ® ÀÔ´Ï´Ù. public class GamePanel_Effect : MonoBehaviour { [SerializeField] private Animator EffectAnimator; [SerializeField] private TMPro.TextMeshProUGUI TMP; [SerializeField] private UnityEngine.UI.Image PlayerTurnDirectImage; private Dictionary _dictAnimTriggerHash = new Dictionary(); private Dictionary _dicEffectDurations = new Dictionary(); private System.Collections.IEnumerator _eDirect = null; private void Awake() { for (EEffectDirectType i = 0; i < EEffectDirectType.Max; i++) _dicEffectDurations.Add(i, 1.3f); _dicEffectDurations[EEffectDirectType.NoneCard] = 0.5f; _dicEffectDurations[EEffectDirectType.Normal] = 0.25f; _dicEffectDurations[EEffectDirectType.Bonus] = 0.5f; TMP.enabled = false; for (EEffectAnimationKey i = 0; i < EEffectAnimationKey.Max; i++) { _dictAnimTriggerHash.Add(i, Animator.StringToHash(i.ToString())); } if (GameManager.Instance != null) { GameManager.Event.RegistEvent(EEventType.OnGameEnd, this.OnGameEnd); } } private void OnDestroy() { if (GameManager.Instance != null) { GameManager.Event.RegistEvent(EEventType.OnGameEnd, this.OnGameEnd); } } private void OnGameEnd() { if (_eDirect != null) StopCoroutine(_eDirect); StopAllCoroutines(); TMP.enabled = false; if (DOTween.IsTweening(PlayerTurnDirectImage)) PlayerTurnDirectImage.DOKill(); } public float GetEffectDuration(EEffectDirectType effectType) { if (_dicEffectDurations.ContainsKey(effectType)) return _dicEffectDurations[effectType] / GamePanel.GameSpeed; else return 1f / GamePanel.GameSpeed; } public void PlayerTurnDirectEnabled(bool b) { PlayerTurnDirectImage.enabled = b; if (b) { PlayerTurnDirectImage.DOColor(new Color(1, 1, 0, 1), 1f).From(new Color(1, 1, 0, 0.5f)).SetLoops(-1, LoopType.Yoyo).SetRecyclable(); } else { if (DOTween.IsTweening(PlayerTurnDirectImage)) PlayerTurnDirectImage.DOKill(); } } public float Direct(EEffectDirectType type, bool isPlayer) { TMP.text = isPlayer ? "" : "»ó´ë "; if (_eDirect != null) StopCoroutine(_eDirect); _eDirect = coroDirect(type, isPlayer); StartCoroutine(_eDirect); return this.GetEffectDuration(type); } public IEnumerator Direct(ECombinationType combinationType, bool isPlayer) { TMP.text = isPlayer ? "" : "»ó´ë "; if (_eDirect != null) StopCoroutine(_eDirect); EEffectDirectType type = EEffectDirectType.Max; switch (combinationType) { case ECombinationType.Hongdan: type = EEffectDirectType.Hongdan; break; case ECombinationType.Chungdan: type = EEffectDirectType.Chungdan; break; case ECombinationType.Chodan: type = EEffectDirectType.Chodan; break; case ECombinationType.Godori: type = EEffectDirectType.Godori; break; case ECombinationType.Be_Three_Ghwang: type = EEffectDirectType.Be_Three_Ghwang; break; case ECombinationType.Three_Ghwang: type = EEffectDirectType.Three_Ghwang; break; case ECombinationType.Four_Ghwang: type = EEffectDirectType.Four_Ghwang; break; case ECombinationType.Five_Ghwang: type = EEffectDirectType.Five_Ghwang; break; } _eDirect = coroDirect(type, isPlayer); yield return StartCoroutine(_eDirect); } public IEnumerator GoDirect(int goNumber, bool isPlayer) { TMP.text = isPlayer ? "" : "»ó´ë "; TMP.text += goNumber.ToString() + "°í!"; TMP.enabled = false; string triggerTxt = "Go" + string.Format("{0:D2}", goNumber); EffectAnimator.SetTrigger(triggerTxt); GameManager.Sound.PlayGoVoice(goNumber); yield return new WaitForSeconds(1f); TMP.enabled = false; _eDirect = null; } public IEnumerator NagariEffect() { TMP.text = "À̹øÆÇ 2¹è!"; TMP.enabled = false; EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Nagari]); yield return new WaitForSeconds(2f); TMP.enabled = false; _eDirect = null; } /* // Ä«µå¸¦ ÅëÇØ ÃëÇÑ '¾×¼Ç'À» ³ªÅ¸³»´Â ¿­°ÅÇü. public enum ECardActionType { // Ä«µå¸¦ Á¦ÃâÇϱâ Àü ´Ü°è. BeforeDiscard, // Ä«µå¸¦ Á¦ÃâÇÑ ÈÄ Áß¾Ó Ä«µå µ¦À» µÚÁý¾î¼­ ¹Ù´ÚÆÐ¿Í '¿ù'ÀÌ ÀÏÄ¡ÇÏ´ÂÁö Çൿ(ÀÏÄ¡Çϸé ÇØ´ç ÆÐ À§·Î ÀÏÄ¡Çϴ°ÍÀÌ ¾øÀ¸¸é ºó°÷À¸·Î )ÇÑ ÈÄÀÇ ´Ü°è. AfterCenterDeckDiscard, // ¸ðµç Ä«µåÁ¦ÃâÀÌ ³¡³ª°í³­ ÈÄ ÀÚ½ÅÀÌ °¡Á®¿Ã ¼ö ÀÖ´Â Ä«µåµéÀ» ½ºÄھµå·Î °¡Á®¿À±â Á÷ÀüÀÇ ´Ü°è. BeforeBringTheCards, // Ä«µåÁ¦Ãâ ÈÄ ½ºÄھµå·Î °¡Á®¿À°í ³­ µÚÀÇ ´Ü°è. AfterBringTheCards, Max } */ private System.Collections.IEnumerator coroDirect(EEffectDirectType type, bool isPlayer) { TMP.enabled = false; switch (type) { case EEffectDirectType.NoneCard: TMP.enabled = true; TMP.text += "¸ø¸ÔÀ½"; break; case EEffectDirectType.Hongdan: TMP.text += "È«´Ü"; Animator.StringToHash(name); EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Hongdan]); GameManager.Sound.PlaySFX(ESFXType.Hongdan_1); GameManager.Sound.PlayVoice(EVoiceType.Hongdan_Voice); break; case EEffectDirectType.Chungdan: TMP.text += "û´Ü"; EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Chungdan]); GameManager.Sound.PlaySFX(ESFXType.Chungdan_1); GameManager.Sound.PlayVoice(EVoiceType.Chungdan_Voice); break; case EEffectDirectType.Chodan: TMP.text += "ÃÊ´Ü"; EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Chodan]); GameManager.Sound.PlaySFX(ESFXType.Chodan_1); GameManager.Sound.PlayVoice(EVoiceType.Chodan_Voice); break; case EEffectDirectType.Godori: TMP.text += "°íµµ¸®"; EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Godori]); GameManager.Sound.PlaySFX(ESFXType.Godori_2); GameManager.Sound.PlayVoice(EVoiceType.Godori_Voice); break; case EEffectDirectType.Be_Three_Ghwang: TMP.text += "ºñ»ï±¤"; EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Bisamgwang]); GameManager.Sound.PlaySFX(ESFXType.Bee_Three_Ghwang); GameManager.Sound.PlayVoice(EVoiceType.Be_Three_Gwhang); break; case EEffectDirectType.Three_Ghwang: TMP.text += "»ï±¤"; EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Samgwang]); GameManager.Sound.PlaySFX(ESFXType.Three_Gwhang_1); GameManager.Sound.PlayVoice(EVoiceType.Samgwang_Voice); break; case EEffectDirectType.Four_Ghwang: TMP.text += "»ç±¤"; EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Sagwang]); GameManager.Sound.PlaySFX(ESFXType.Four_Ghwang); GameManager.Sound.PlayVoice(EVoiceType.Sagwang_Voice); break; case EEffectDirectType.Five_Ghwang: TMP.text += "¿À±¤"; EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Ogwang]); GameManager.Sound.PlaySFX(ESFXType.Five_Ghwang); GameManager.Sound.PlayVoice(EVoiceType.Ogwang_Voice); break; case EEffectDirectType.FirstBbug: TMP.text += "ù»¶"; EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Firstpuck]); GameManager.Sound.PlaySFX(ESFXType.Bbug_2); GameManager.Sound.PlayVoice(EVoiceType.Bbug_1_Voice); break; case EEffectDirectType.Bbug: TMP.text += "»¶"; EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Puck]); GameManager.Sound.PlaySFX(ESFXType.Bbug_2); GameManager.Sound.PlayVoice(EVoiceType.Bbug_1_Voice); break; case EEffectDirectType.Bbug_Own: TMP.text += "ÀÚ»¶"; EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Selfpuck]); GameManager.Sound.PlaySFX(ESFXType.Bbug_2); GameManager.Sound.PlayVoice(EVoiceType.Bbug_1_Voice); break; case EEffectDirectType.GetBbug: TMP.text += "»¶¸Ô±â"; EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Getpuck]); break; case EEffectDirectType.GetBbug_Own: TMP.text += "ÀÚ»¶¸Ô±â"; EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Getselfpuck]); break; case EEffectDirectType.Kiss: TMP.text += "ÂÊ"; EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Kiss]); GameManager.Sound.PlaySFX(ESFXType.Kiss); GameManager.Sound.PlayVoice(EVoiceType.Kiss_Voice); break; case EEffectDirectType.Clean: TMP.text += "½Ï¾µÀÌ"; EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Clean]); GameManager.Sound.PlaySFX(ESFXType.Clean_2); GameManager.Sound.PlayVoice(EVoiceType.Clear_Voice_1); break; case EEffectDirectType.Bell: TMP.text += "Èçµé±â"; EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Shake]); GameManager.Sound.PlaySFX(ESFXType.Shake); GameManager.Sound.PlayVoice(EVoiceType.Shake_Voice); break; case EEffectDirectType.Bomb_Double: EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Bomb]); GameManager.Sound.PlaySFX(ESFXType.Bomb_1); GameManager.Sound.PlayVoice(EVoiceType.Bomb_Voice); TMP.text += "ÆøÅº 2Àå"; break; case EEffectDirectType.Bomb_Triple: EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Bomb]); GameManager.Sound.PlaySFX(ESFXType.Bomb_1); GameManager.Sound.PlayVoice(EVoiceType.Bomb_Voice); TMP.text += "ÆøÅº 3Àå"; break; case EEffectDirectType.Normal: TMP.enabled = true; TMP.text += "±âº»"; break; case EEffectDirectType.Selectable: TMP.enabled = true; TMP.text += "¼±Åà °¡´É"; break; case EEffectDirectType.Bonus: TMP.enabled = false; if(isPlayer == true) { EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Bonus]); } else { EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.SangdaeBonus]); } GameManager.Sound.PlaySFX(ESFXType.Bonus); TMP.text += "º¸³Ê½º"; break; case EEffectDirectType.Stop: EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Stop]); GameManager.Sound.PlayVoice(EVoiceType.Stop_1_Voice); TMP.text += "½ºÅé~"; break; case EEffectDirectType.Ddadak: EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Ddadog]); GameManager.Sound.PlaySFX(ESFXType.Ddadag_1); GameManager.Sound.PlayVoice(EVoiceType.Ddadag_Voice); TMP.text += "µû´Ú!"; break; case EEffectDirectType.Double: EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Double]); GameManager.Sound.PlaySFX(ESFXType.Godori_2); TMP.text += "µÎ¹è!"; break; } yield return new WaitForSeconds(_dicEffectDurations[type]); TMP.enabled = false; _eDirect = null; } }