DO-46 [Feat] 게임승패 후 승급패널 표시

This commit is contained in:
Lim0_C 2025-03-26 15:03:24 +09:00
parent 4dca270bc8
commit 926d452b70
8 changed files with 173 additions and 12 deletions

View File

@ -527,6 +527,7 @@ GameObject:
- component: {fileID: 8635639988778983738} - component: {fileID: 8635639988778983738}
- component: {fileID: 4545556044007292713} - component: {fileID: 4545556044007292713}
- component: {fileID: 6152865991947934791} - component: {fileID: 6152865991947934791}
- component: {fileID: 3813612584874639807}
m_Layer: 5 m_Layer: 5
m_Name: Draw Effect Panel m_Name: Draw Effect Panel
m_TagString: Untagged m_TagString: Untagged
@ -624,3 +625,48 @@ MonoBehaviour:
tigerOpenEyes: {fileID: 1508819185250841244} tigerOpenEyes: {fileID: 1508819185250841244}
tigerCloseEyes: {fileID: 399504369641388738} tigerCloseEyes: {fileID: 399504369641388738}
flipDuration: 0.3 flipDuration: 0.3
--- !u!61 &3813612584874639807
BoxCollider2D:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8383435151006156655}
m_Enabled: 1
m_Density: 1
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_ForceSendLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ForceReceiveLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ContactCaptureLayers:
serializedVersion: 2
m_Bits: 4294967295
m_CallbackLayers:
serializedVersion: 2
m_Bits: 4294967295
m_IsTrigger: 0
m_UsedByEffector: 0
m_UsedByComposite: 0
m_Offset: {x: 0, y: 0}
m_SpriteTilingProperty:
border: {x: 0, y: 0, z: 0, w: 0}
pivot: {x: 0, y: 0}
oldSize: {x: 0, y: 0}
newSize: {x: 0, y: 0}
adaptiveTilingThreshold: 0
drawMode: 0
adaptiveTiling: 0
m_AutoTiling: 0
serializedVersion: 2
m_Size: {x: 1, y: 1}
m_EdgeRadius: 0

View File

@ -450,6 +450,7 @@ GameObject:
- component: {fileID: 8635639988778983738} - component: {fileID: 8635639988778983738}
- component: {fileID: 4545556044007292713} - component: {fileID: 4545556044007292713}
- component: {fileID: 3229800624310508893} - component: {fileID: 3229800624310508893}
- component: {fileID: 6984539173991577744}
m_Layer: 5 m_Layer: 5
m_Name: Lose Effect Panel m_Name: Lose Effect Panel
m_TagString: Untagged m_TagString: Untagged
@ -546,3 +547,48 @@ MonoBehaviour:
characterOpenEyes: {fileID: 1632927645355555415} characterOpenEyes: {fileID: 1632927645355555415}
characterCloseEyes: {fileID: 3881260292094838299} characterCloseEyes: {fileID: 3881260292094838299}
depressedEffect: {fileID: 155037671892554820} depressedEffect: {fileID: 155037671892554820}
--- !u!61 &6984539173991577744
BoxCollider2D:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8383435151006156655}
m_Enabled: 1
m_Density: 1
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_ForceSendLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ForceReceiveLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ContactCaptureLayers:
serializedVersion: 2
m_Bits: 4294967295
m_CallbackLayers:
serializedVersion: 2
m_Bits: 4294967295
m_IsTrigger: 0
m_UsedByEffector: 0
m_UsedByComposite: 0
m_Offset: {x: 0, y: 0}
m_SpriteTilingProperty:
border: {x: 0, y: 0, z: 0, w: 0}
pivot: {x: 0, y: 0}
oldSize: {x: 0, y: 0}
newSize: {x: 0, y: 0}
adaptiveTilingThreshold: 0
drawMode: 0
adaptiveTiling: 0
m_AutoTiling: 0
serializedVersion: 2
m_Size: {x: 1, y: 1}
m_EdgeRadius: 0

View File

@ -788,6 +788,7 @@ GameObject:
- component: {fileID: 8635639988778983738} - component: {fileID: 8635639988778983738}
- component: {fileID: 3127148509640414758} - component: {fileID: 3127148509640414758}
- component: {fileID: 4545556044007292713} - component: {fileID: 4545556044007292713}
- component: {fileID: 7229651074095795597}
m_Layer: 5 m_Layer: 5
m_Name: Win Effect Panel m_Name: Win Effect Panel
m_TagString: Untagged m_TagString: Untagged
@ -890,6 +891,51 @@ CanvasGroup:
m_Interactable: 1 m_Interactable: 1
m_BlocksRaycasts: 1 m_BlocksRaycasts: 1
m_IgnoreParentGroups: 0 m_IgnoreParentGroups: 0
--- !u!61 &7229651074095795597
BoxCollider2D:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8383435151006156655}
m_Enabled: 1
m_Density: 1
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_ForceSendLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ForceReceiveLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ContactCaptureLayers:
serializedVersion: 2
m_Bits: 4294967295
m_CallbackLayers:
serializedVersion: 2
m_Bits: 4294967295
m_IsTrigger: 0
m_UsedByEffector: 0
m_UsedByComposite: 0
m_Offset: {x: 0, y: 0}
m_SpriteTilingProperty:
border: {x: 0, y: 0, z: 0, w: 0}
pivot: {x: 0, y: 0}
oldSize: {x: 0, y: 0}
newSize: {x: 0, y: 0}
adaptiveTilingThreshold: 0
drawMode: 0
adaptiveTiling: 0
m_AutoTiling: 0
serializedVersion: 2
m_Size: {x: 1, y: 1}
m_EdgeRadius: 0
--- !u!1 &8851077685063213123 --- !u!1 &8851077685063213123
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@ -12,10 +12,11 @@ public class DrawEffectController : EffectController
[SerializeField] private float flipDuration = 0.3f; [SerializeField] private float flipDuration = 0.3f;
protected override string fullText => "무승부 입니다"; protected override string fullText => "무승부 입니다";
protected override void ShowEffect() public override void ShowEffect(OnEffectPanelEnded onEffectPanelEnd)
{ {
gameObject.SetActive(true); gameObject.SetActive(true);
cancellationTokenSource = new CancellationTokenSource(); cancellationTokenSource = new CancellationTokenSource();
onEffectPanelEnded = onEffectPanelEnd;
ShowPanel(); ShowPanel();
StartCoroutine(AnimateLoadingText()); StartCoroutine(AnimateLoadingText());

View File

@ -3,9 +3,11 @@ using System.Threading;
using DG.Tweening; using DG.Tweening;
using TMPro; using TMPro;
using UnityEngine; using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UIElements;
[RequireComponent(typeof(CanvasGroup))] [RequireComponent(typeof(CanvasGroup))]
public abstract class EffectController : MonoBehaviour public abstract class EffectController : MonoBehaviour, IPointerClickHandler
{ {
[SerializeField] protected GameObject bannerObj; [SerializeField] protected GameObject bannerObj;
[SerializeField] protected TextMeshProUGUI bannerText; [SerializeField] protected TextMeshProUGUI bannerText;
@ -15,13 +17,16 @@ public abstract class EffectController : MonoBehaviour
protected CancellationTokenSource cancellationTokenSource; protected CancellationTokenSource cancellationTokenSource;
protected int currentLength = 0; protected int currentLength = 0;
protected virtual void Start() public delegate void OnEffectPanelEnded();
{ protected OnEffectPanelEnded onEffectPanelEnded;
ShowEffect();
} // protected virtual void Start()
// {
// ShowEffect();
// }
// 효과를 실행하는 메서드 (자식이 구현해야 함) // 효과를 실행하는 메서드 (자식이 구현해야 함)
protected abstract void ShowEffect(); public abstract void ShowEffect(OnEffectPanelEnded onEffectPanelEnded);
// 공통 UI 애니메이션 (패널 표시) // 공통 UI 애니메이션 (패널 표시)
protected virtual void ShowPanel() protected virtual void ShowPanel()
@ -60,6 +65,12 @@ public abstract class EffectController : MonoBehaviour
cancellationTokenSource = null; cancellationTokenSource = null;
} }
onEffectPanelEnded?.Invoke();
gameObject.SetActive(false); gameObject.SetActive(false);
} }
public void OnPointerClick(PointerEventData eventData)
{
HideEffect();
}
} }

View File

@ -12,10 +12,11 @@ public class LoseEffectController : EffectController
protected override string fullText => "패배했습니다"; protected override string fullText => "패배했습니다";
protected override void ShowEffect() public override void ShowEffect(OnEffectPanelEnded onEffectPanelEnd)
{ {
gameObject.SetActive(true); gameObject.SetActive(true);
cancellationTokenSource = new CancellationTokenSource(); cancellationTokenSource = new CancellationTokenSource();
onEffectPanelEnded = onEffectPanelEnd;
ShowPanel(); ShowPanel();
StartCoroutine(AnimateLoadingText()); StartCoroutine(AnimateLoadingText());

View File

@ -14,10 +14,11 @@ public class WinEffectController : EffectController
protected override string fullText => "승리했습니다!"; protected override string fullText => "승리했습니다!";
protected override void ShowEffect() public override void ShowEffect(OnEffectPanelEnded onEffectPanelEnd)
{ {
gameObject.SetActive(true); gameObject.SetActive(true);
cancellationTokenSource = new CancellationTokenSource(); cancellationTokenSource = new CancellationTokenSource();
onEffectPanelEnded = onEffectPanelEnd;
ShowPanel(); ShowPanel();
StartCoroutine(AnimateLoadingText()); StartCoroutine(AnimateLoadingText());

View File

@ -86,22 +86,31 @@ public class PanelManager : MonoBehaviour
if (_canvas != null) if (_canvas != null)
{ {
var winEffectPanelObject = GetEffectPanel("Win Effect Panel"); var winEffectPanelObject = GetEffectPanel("Win Effect Panel");
winEffectPanelObject.GetComponent<WinEffectController>().ShowEffect(OnEffectPanelEnded);
} }
break; break;
case Enums.GameResult.Lose: case Enums.GameResult.Lose:
if (_canvas != null) if (_canvas != null)
{ {
var winEffectPanelObject = GetEffectPanel("Lose Effect Panel"); var loseEffectPanelObject = GetEffectPanel("Lose Effect Panel");
loseEffectPanelObject.GetComponent<LoseEffectController>().ShowEffect(OnEffectPanelEnded);
} }
break; break;
case Enums.GameResult.Draw: case Enums.GameResult.Draw:
if (_canvas != null) if (_canvas != null)
{ {
var winEffectPanelObject = GetEffectPanel("Draw Effect Panel"); var drawEffectPanelObject = GetEffectPanel("Draw Effect Panel");
drawEffectPanelObject.GetComponent<DrawEffectController>().ShowEffect(OnEffectPanelEnded);
} }
break; break;
} }
} }
private void OnEffectPanelEnded()
{
//Todo: 승급패널 오픈
OpenRatingPanel();
}
#endregion #endregion
public void OpenMainPanel() public void OpenMainPanel()