diff --git a/Assets/Script/UI/PanelChildController/RatingPointsController.cs b/Assets/Script/UI/PanelChildController/RatingPointsController.cs
index 0897747..24483f8 100644
--- a/Assets/Script/UI/PanelChildController/RatingPointsController.cs
+++ b/Assets/Script/UI/PanelChildController/RatingPointsController.cs
@@ -1,3 +1,4 @@
+using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
@@ -19,35 +20,45 @@ public class RatingPointsController : MonoBehaviour
private int _oldRequiredScore;
private int _newRequiredScore;
private int _oldScore;
+
+ ///
+ /// 포인트 오르고 내려가는 애니메이션 재생
+ ///
+ ///
+ ///
+ private void ChangeImageColor(GameObject imageOBject, Color32 color)
+ {
+ Sequence sequence = DOTween.Sequence();
+
+ sequence.Append(
+ imageOBject.GetComponent().DOLocalRotate(new Vector3(0f, 90f, 0f), flipDuration).SetEase(Ease.InExpo));
+ sequence.Append(
+ imageOBject.GetComponent().DOLocalRotate(Vector3.zero, flipDuration).SetEase(Ease.OutExpo));
+ sequence.Join(
+ imageOBject.GetComponent().DOColor(color, flipDuration/2).SetEase(Ease.OutExpo));
+
+ sequence.OnComplete(()=>
+ {
+ SetScoreCountText();
+ });
+ }
public void InitRatingPoints(int oldScore,Enums.GameResult gameResult, int defaultRequiredScore)
{
// TODO: [인덱스계산 ㅇㅖ외처리 ] 계산한 값 절대값이 defaultRequiredScore보다 큰 경우 return. 근데 이런 값이 나온다는게 이미 계산 오류가 어디서 생긴 것이겠죠..?
_oldScore = oldScore;
- Sequence sequence = DOTween.Sequence();
+ _oldRequiredScore = defaultRequiredScore;
if (_oldScore == 0)
{
if (gameResult == Enums.GameResult.Win)
{
- sequence.Append(
- plusImage[0].GetComponent().DOLocalRotate(new Vector3(0f, 90f, 0f), flipDuration).SetEase(Ease.InExpo));
- sequence.Append(
- plusImage[0].GetComponent().DOLocalRotate(Vector3.zero, flipDuration).SetEase(Ease.OutExpo));
- sequence.Join(
- plusImage[0].GetComponent().DOColor(_plusColor, flipDuration/2).SetEase(Ease.OutExpo));
-
+ ChangeImageColor(plusImage[0], _plusColor);
//승급까지 남은 판수 계산
_newRequiredScore = defaultRequiredScore-1;
}
else if(gameResult == Enums.GameResult.Lose)
{
- sequence.Append(
- minusImages[defaultRequiredScore-1].GetComponent().DOLocalRotate(new Vector3(0f, 90f, 0f), flipDuration).SetEase(Ease.InExpo));
- sequence.Append(
- minusImages[defaultRequiredScore-1].GetComponent().DOLocalRotate(Vector3.zero, flipDuration).SetEase(Ease.OutExpo));
- sequence.Join(
- minusImages[defaultRequiredScore-1].GetComponent().DOColor(_minusColor, flipDuration/2).SetEase(Ease.OutExpo));
+ ChangeImageColor(minusImages[defaultRequiredScore-1],_minusColor);
- //승급까지 남은 판수 계산
_newRequiredScore = defaultRequiredScore+1;
}
}
@@ -60,24 +71,13 @@ public class RatingPointsController : MonoBehaviour
}
if (gameResult == Enums.GameResult.Win)
{
- sequence.Append(
- plusImage[_oldScore].GetComponent().DOLocalRotate(new Vector3(0f, 90f, 0f), flipDuration).SetEase(Ease.InExpo));
- sequence.Append(
- plusImage[_oldScore].GetComponent().DOLocalRotate(Vector3.zero, flipDuration).SetEase(Ease.OutExpo));
- sequence.Join(
- plusImage[_oldScore].GetComponent().DOColor(_plusColor, flipDuration/2).SetEase(Ease.OutExpo));
+ ChangeImageColor(plusImage[_oldScore], _plusColor);
- //승급까지 남은 판수 계산
_newRequiredScore = defaultRequiredScore-oldScore-1;
}
else if(gameResult == Enums.GameResult.Lose)
{
- sequence.Append(
- plusImage[_oldScore-1].GetComponent().DOLocalRotate(new Vector3(0f, 90f, 0f), flipDuration).SetEase(Ease.InExpo));
- sequence.Append(
- plusImage[_oldScore-1].GetComponent().DOLocalRotate(Vector3.zero, flipDuration).SetEase(Ease.OutExpo));
- sequence.Join(
- plusImage[_oldScore-1].GetComponent().DOColor(_defaultColor, flipDuration/2).SetEase(Ease.OutExpo));
+ ChangeImageColor(plusImage[_oldScore-1], _defaultColor);
//승급까지 남은 판수 계산
_newRequiredScore = defaultRequiredScore-oldScore+1;
@@ -93,26 +93,14 @@ public class RatingPointsController : MonoBehaviour
}
if (gameResult == Enums.GameResult.Win)
{
- sequence.Append(
- minusImages[minusImages.Length+_oldScore].GetComponent().DOLocalRotate(new Vector3(0f, 90f, 0f), flipDuration).SetEase(Ease.InExpo));
- sequence.Append(
- minusImages[minusImages.Length+_oldScore].GetComponent().DOLocalRotate(Vector3.zero, flipDuration).SetEase(Ease.OutExpo));
- sequence.Join(
- minusImages[minusImages.Length+_oldScore].GetComponent().DOColor(_defaultColor, flipDuration/2).SetEase(Ease.OutExpo));
+ ChangeImageColor(minusImages[minusImages.Length+_oldScore], _defaultColor);
- //승급까지 남은 판수 계산
_newRequiredScore = defaultRequiredScore-oldScore-1;
}
else if(gameResult == Enums.GameResult.Lose)
{
- sequence.Append(
- minusImages[minusImages.Length+_oldScore-1].GetComponent().DOLocalRotate(new Vector3(0f, 90f, 0f), flipDuration).SetEase(Ease.InExpo));
- sequence.Append(
- minusImages[minusImages.Length+_oldScore-1].GetComponent().DOLocalRotate(Vector3.zero, flipDuration).SetEase(Ease.OutExpo));
- sequence.Join(
- minusImages[minusImages.Length+_oldScore-1].GetComponent().DOColor(_minusColor, flipDuration/2).SetEase(Ease.OutExpo));
+ ChangeImageColor(minusImages[minusImages.Length+_oldScore-1], _minusColor);
- //승급까지 남은 판수 계산
_newRequiredScore = defaultRequiredScore-oldScore+1;
}
}
@@ -122,32 +110,36 @@ public class RatingPointsController : MonoBehaviour
_newRequiredScore = defaultRequiredScore-oldScore;
}
- SetScoreCountText(_newRequiredScore,defaultRequiredScore);
+ SetScoreCountText();
}
///
/// 승급까지 남은 승수 계산
///
- /// 새로 업데이트 된 승급까지 필요한 승 수
- /// 해당 급수에서 0에서 승급까지 필요한 승수
- private void SetScoreCountText(int scoreCount,int defaultRequiredScore)
+ /// 새로 업데이트 된 승급까지 필요한 승 수
+ /// 해당 급수에서 0에서 승급까지 필요한 승수
+ private void SetScoreCountText()
{
// 남은 승리수가 0인 경우 승급점수 도달 혹은 강등점수 도달
- if (scoreCount == 0 || scoreCount == defaultRequiredScore * 2)
+ if (_newRequiredScore == 0)
{
- scoreCountText.text = "";
+ scoreCountText.text = "승급 포인트에 달성했습니다 !";
}
- else if (scoreCount < 0)
+ else if (_newRequiredScore == _oldRequiredScore * 2)
+ {
+ scoreCountText.text = "점수가 낮아 강등됩니다..";
+ }
+ else if (_newRequiredScore < 0)
{
scoreCountText.text = "더 이상 승급 할 수 없습니다.";
}
- else if (scoreCount > defaultRequiredScore * 2)
+ else if (_newRequiredScore > _oldRequiredScore * 2)
{
scoreCountText.text = "더이상 강등 될 수 없습니다.";
}
else
{
- scoreCountText.text = $"{scoreCount} 게임을 승리하면 승급하게 됩니다.";
+ scoreCountText.text = $"{_newRequiredScore} 게임을 승리하면 승급하게 됩니다.";
}
}
@@ -156,8 +148,8 @@ public class RatingPointsController : MonoBehaviour
for (int i = 0; i < 10; i++)
{
plusImage[i].GetComponent().color = _plusColor;
- scoreCountText.text = $"더 이상 승급 할 수 없습니다.\n누적 {winCount} 승 하셨습니다.";
}
+ scoreCountText.text = $"더 이상 승급 할 수 없습니다.\n누적 {winCount} 승 하셨습니다.";
}
public void SetRatingDownLimit(int loseCount)
@@ -165,9 +157,35 @@ public class RatingPointsController : MonoBehaviour
for (int i = 0; i < 3; i++)
{
minusImages[i].GetComponent().color = _minusColor;
- scoreCountText.text = $"더 이상 강등 될 수 없습니다.\n누적 {loseCount*-1} 패 하셨습니다.";
}
+ scoreCountText.text = $"더 이상 강등 될 수 없습니다.\n누적 {loseCount*-1} 패 하셨습니다.";
}
//승급, 강등시 패널을 초기화해서 띄워주는 함수 추가
+ public void InitRatingUpPoints()
+ {
+ StartCoroutine(RatingUpPoints());
+ }
+
+ private IEnumerator RatingUpPoints()
+ {
+ foreach (var plusPoint in plusImage)
+ {
+ ChangeImageColor(plusPoint, _defaultColor);
+ yield return new WaitForSeconds(0.2f);
+ }
+ }
+ public void InitRatingDownPoints()
+ {
+ StartCoroutine(RatingDownPoints());
+ }
+
+ private IEnumerator RatingDownPoints()
+ {
+ for (int i = minusImages.Length; i >0; i--)
+ {
+ ChangeImageColor(minusImages[i-1], _defaultColor);
+ yield return new WaitForSeconds(0.2f);
+ }
+ }
}
diff --git a/Assets/Script/UI/PanelController/RatingPanelController.cs b/Assets/Script/UI/PanelController/RatingPanelController.cs
index ad41db2..abd6ddf 100644
--- a/Assets/Script/UI/PanelController/RatingPanelController.cs
+++ b/Assets/Script/UI/PanelController/RatingPanelController.cs
@@ -58,6 +58,10 @@ public class RatingPanelController : PanelController
if (scoreResultInfo.isAdvancement == 1)
{
GameManager.Instance.panelManager.OpenRatingEffectPanel(1);
+
+ //패널의 포인트들 초기화
+ _ratingPointsController.InitRatingUpPoints();
+ //TODO: 승급이 10->9 그리고 5->4일 때 패널 바꿔주기
}
},() => { });
break;
@@ -69,6 +73,9 @@ public class RatingPanelController : PanelController
if (scoreResultInfo.isAdvancement == -1)
{
GameManager.Instance.panelManager.OpenRatingEffectPanel(-1);
+
+ _ratingPointsController.InitRatingDownPoints();
+ //TODO: 강등이 4->5 그리고 9->10일 때 패널 바꿔주기
}
}, () => { });
break;
@@ -161,6 +168,6 @@ public class RatingPanelController : PanelController
getPointsText.text = $"게임에서 {win}했습니다.\n{Constants.RAING_POINTS} 승급 포인트를 {get}";
}
// 애니메이션 실행 완료를 위한 wait
- yield return new WaitForSecondsRealtime(1.5f);
+ yield return new WaitForSecondsRealtime(1.8f);
}
}