RandomGFGoStop/Assets/Scripts/UI/GamePanel/GamePanel_Effect.cs

351 lines
13 KiB
C#
Raw Normal View History

2025-08-27 21:08:17 +00:00
using CodeJay.Enum;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
// <20>ӽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ũ<EFBFBD><C5A9>Ʈ <20>Դϴ<D4B4>.
public class GamePanel_Effect : MonoBehaviour
{
[SerializeField] private Animator EffectAnimator;
[SerializeField] private TMPro.TextMeshProUGUI TMP;
[SerializeField] private UnityEngine.UI.Image PlayerTurnDirectImage;
private Dictionary<EEffectAnimationKey, int> _dictAnimTriggerHash = new Dictionary<EEffectAnimationKey, int>();
private Dictionary<EEffectDirectType, float> _dicEffectDurations = new Dictionary<EEffectDirectType, float>();
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 ? "" : "<22><><EFBFBD><EFBFBD> ";
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 ? "" : "<22><><EFBFBD><EFBFBD> ";
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 ? "" : "<22><><EFBFBD><EFBFBD> ";
TMP.text += goNumber.ToString() + "<22><>!";
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 = "<22>̹<EFBFBD><CCB9><EFBFBD> 2<><32>!";
TMP.enabled = false;
EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Nagari]);
yield return new WaitForSeconds(2f);
TMP.enabled = false;
_eDirect = null;
}
/*
// ī<><20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> '<27>׼<EFBFBD>'<27><> <20><>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
public enum ECardActionType
{
// ī<><20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> <20><> <20>ܰ<EFBFBD>.
BeforeDiscard,
// ī<><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>߾<EFBFBD> ī<><C4AB> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><20>ٴ<EFBFBD><D9B4>п<EFBFBD> '<27><>'<27><> <20><>ġ<EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD> <20>ൿ(<28><>ġ<EFBFBD>ϸ<EFBFBD> <20>ش<EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><>ġ<EFBFBD>ϴ°<CFB4><C2B0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> )<29><> <20><><EFBFBD><EFBFBD> <20>ܰ<EFBFBD>.
AfterCenterDeckDiscard,
// <20><><EFBFBD><EFBFBD> ī<><C4AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ڽ<EFBFBD><DABD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD> ī<><C4AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ھ<DABE><EEBAB8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ܰ<EFBFBD>.
BeforeBringTheCards,
// ī<><C4AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>ھ<DABE><EEBAB8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20>ܰ<EFBFBD>.
AfterBringTheCards,
Max
}
*/
private System.Collections.IEnumerator coroDirect(EEffectDirectType type, bool isPlayer)
{
TMP.enabled = false;
switch (type)
{
case EEffectDirectType.NoneCard:
TMP.enabled = true;
TMP.text += "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
break;
case EEffectDirectType.Hongdan:
TMP.text += <><C8AB>";
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 += <><C3BB>";
EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Chungdan]);
GameManager.Sound.PlaySFX(ESFXType.Chungdan_1);
GameManager.Sound.PlayVoice(EVoiceType.Chungdan_Voice);
break;
case EEffectDirectType.Chodan:
TMP.text += "<22>ʴ<EFBFBD>";
EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Chodan]);
GameManager.Sound.PlaySFX(ESFXType.Chodan_1);
GameManager.Sound.PlayVoice(EVoiceType.Chodan_Voice);
break;
case EEffectDirectType.Godori:
TMP.text += "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
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 += "<22><><EFBFBD>ﱤ";
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 += "<22>ﱤ";
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 += "<22>籤";
EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Sagwang]);
GameManager.Sound.PlaySFX(ESFXType.Four_Ghwang);
GameManager.Sound.PlayVoice(EVoiceType.Sagwang_Voice);
break;
case EEffectDirectType.Five_Ghwang:
TMP.text += "<22><><EFBFBD><EFBFBD>";
EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Ogwang]);
GameManager.Sound.PlaySFX(ESFXType.Five_Ghwang);
GameManager.Sound.PlayVoice(EVoiceType.Ogwang_Voice);
break;
case EEffectDirectType.FirstBbug:
TMP.text += <><C3B9>";
EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Firstpuck]);
GameManager.Sound.PlaySFX(ESFXType.Bbug_2);
GameManager.Sound.PlayVoice(EVoiceType.Bbug_1_Voice);
break;
case EEffectDirectType.Bbug:
TMP.text += "<22><>";
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 += "<22>ڻ<EFBFBD>";
EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Selfpuck]);
GameManager.Sound.PlaySFX(ESFXType.Bbug_2);
GameManager.Sound.PlayVoice(EVoiceType.Bbug_1_Voice);
break;
case EEffectDirectType.GetBbug:
TMP.text += "<22><><EFBFBD>Ա<EFBFBD>";
EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Getpuck]);
break;
case EEffectDirectType.GetBbug_Own:
TMP.text += "<22>ڻ<EFBFBD><DABB>Ա<EFBFBD>";
EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Getselfpuck]);
break;
case EEffectDirectType.Kiss:
TMP.text += "<22><>";
EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Kiss]);
GameManager.Sound.PlaySFX(ESFXType.Kiss);
GameManager.Sound.PlayVoice(EVoiceType.Kiss_Voice);
break;
case EEffectDirectType.Clean:
TMP.text += "<22>Ͼ<EFBFBD><CFBE><EFBFBD>";
EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Clean]);
GameManager.Sound.PlaySFX(ESFXType.Clean_2);
GameManager.Sound.PlayVoice(EVoiceType.Clear_Voice_1);
break;
case EEffectDirectType.Bell:
TMP.text += "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
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 += "<22><>ź 2<><32>";
break;
case EEffectDirectType.Bomb_Triple:
EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Bomb]);
GameManager.Sound.PlaySFX(ESFXType.Bomb_1);
GameManager.Sound.PlayVoice(EVoiceType.Bomb_Voice);
TMP.text += "<22><>ź 3<><33>";
break;
case EEffectDirectType.Normal:
TMP.enabled = true;
TMP.text += "<22>⺻";
break;
case EEffectDirectType.Selectable:
TMP.enabled = true;
TMP.text += "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>";
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 += "<22><><EFBFBD>ʽ<EFBFBD>";
break;
case EEffectDirectType.Stop:
EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Stop]);
GameManager.Sound.PlayVoice(EVoiceType.Stop_1_Voice);
TMP.text += "<22><><EFBFBD><EFBFBD>~";
break;
case EEffectDirectType.Ddadak:
EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Ddadog]);
GameManager.Sound.PlaySFX(ESFXType.Ddadag_1);
GameManager.Sound.PlayVoice(EVoiceType.Ddadag_Voice);
TMP.text += "<22><><EFBFBD><EFBFBD>!";
break;
case EEffectDirectType.Double:
EffectAnimator.SetTrigger(_dictAnimTriggerHash[EEffectAnimationKey.Double]);
GameManager.Sound.PlaySFX(ESFXType.Godori_2);
TMP.text += "<22>ι<EFBFBD>!";
break;
}
yield return new WaitForSeconds(_dicEffectDurations[type]);
TMP.enabled = false;
_eDirect = null;
}
}