Skip to content

Commit 4f938ad

Browse files
committed
fix: finish window animation score and time
1 parent de0778b commit 4f938ad

File tree

5 files changed

+64
-377
lines changed

5 files changed

+64
-377
lines changed
Lines changed: 19 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
11
using Code.Services.Levels;
22
using Code.Services.LocalProgress;
3+
using Code.Services.PersistenceProgress.Player;
34
using Code.Services.Timer;
45
using Code.Services.Window;
56
using Code.Window;
67
using Code.Window.Finish.Lose;
8+
using UnityEngine;
79

810
namespace Code.Services.Finish.Lose
911
{
1012
public class LoseService : ILoseService
1113
{
12-
private IWindowService _windowService;
13-
private ILevelService _levelService;
14-
private ITimeService _timeService;
14+
private readonly IWindowService _windowService;
15+
private readonly ILevelService _levelService;
16+
private readonly ITimeService _timeService;
1517
private readonly ILevelLocalProgressService _levelLocalProgressService;
1618

1719
public LoseService(
@@ -28,46 +30,39 @@ public LoseService(
2830

2931
public void Lose()
3032
{
31-
var recordTime = GetRecordText();
32-
var scoreText = GetScoreText();
33+
(string, string) recordTime = GetRecordText();
34+
string scoreText = GetScoreText();
3335

34-
var window = _windowService.Open(WindowTypeId.Lose);
35-
var loseWindow = window.GetComponent<LoseWindow>();
36-
loseWindow.SetTime(recordTime);
36+
RectTransform window = _windowService.Open(WindowTypeId.Lose);
37+
38+
LoseWindow loseWindow = window.GetComponent<LoseWindow>();
39+
loseWindow.SetTime(recordTime.Item1 + recordTime.Item2);
3740
loseWindow.SetScore(scoreText);
3841
loseWindow.Initialize();
3942
loseWindow.ResetWindow();
40-
loseWindow.OpenWindow(null);
43+
loseWindow.OpenWindow(null, _levelLocalProgressService.Score, _timeService.GetElapsedTime());
4144
}
4245

4346
private float GetCurrentRecordTime()
4447
{
45-
var currentLevelContainer = _levelService.GetCurrentLevelContainer();
48+
LevelContainer currentLevelContainer = _levelService.GetCurrentLevelContainer();
4649
if(currentLevelContainer == null)
47-
{
4850
return 0;
49-
}
5051

5152
return currentLevelContainer.Time;
5253
}
5354

54-
private string GetRecordText()
55+
private (string, string) GetRecordText()
5556
{
56-
var currentRecordTime = GetCurrentRecordTime();
57-
var currentTime = _timeService.GetElapsedTime();
57+
float currentRecordTime = GetCurrentRecordTime();
58+
float currentTime = _timeService.GetElapsedTime();
5859

5960
if(currentRecordTime == 0 || currentTime > currentRecordTime)
60-
{
61-
return "New Record! Time: " + _timeService.GetFormattedElapsedTime();
62-
}
61+
return ("New Record! Time: ", _timeService.GetFormattedElapsedTime());
6362

64-
return "Record: " + _timeService.GetFormattedElapsedTime();
63+
return ("Record: ", _timeService.GetFormattedElapsedTime());
6564
}
6665

67-
private string GetScoreText()
68-
{
69-
return "Score: " + _levelLocalProgressService.Score;
70-
}
71-
66+
private string GetScoreText() => "Score: " + _levelLocalProgressService.Score;
7267
}
7368
}

Assets/Code/Services/Finish/Win/WinService.cs

Lines changed: 29 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
using Code.Services.Levels;
22
using Code.Services.LocalProgress;
33
using Code.Services.PersistenceProgress;
4+
using Code.Services.PersistenceProgress.Player;
45
using Code.Services.SaveLoad;
56
using Code.Services.Timer;
67
using Code.Services.Window;
78
using Code.Window;
89
using Code.Window.Finish.Win;
10+
using UnityEngine;
911

1012
namespace Code.Services.Finish.Win
1113
{
@@ -40,20 +42,20 @@ public void Win()
4042

4143
CompleteTutor();
4244

43-
var recordTime = GetRecordText();
44-
var scoreText = GetScoreText();
45+
(string, string) recordTime = GetRecordText();
46+
string scoreText = GetScoreText();
4547

4648
SetRecordText();
4749

4850
SaveProgress();
4951

50-
var window = _windowService.Open(WindowTypeId.Win);
51-
var winWindow = window.GetComponent<WinWindow>();
52-
winWindow.SetTime(recordTime);
52+
RectTransform window = _windowService.Open(WindowTypeId.Win);
53+
WinWindow winWindow = window.GetComponent<WinWindow>();
54+
winWindow.SetTime(recordTime.Item1 + recordTime.Item2);
5355
winWindow.SetScore(scoreText);
5456
winWindow.Initialize();
5557
winWindow.ResetWindow();
56-
winWindow.OpenWindow(null);
58+
winWindow.OpenWindow(null, _levelLocalProgressService.Score, _timeService.GetElapsedTime());
5759
}
5860

5961
public void BonusWin()
@@ -62,20 +64,20 @@ public void BonusWin()
6264

6365
CompleteTutor();
6466

65-
var recordTime = GetRecordText();
66-
var scoreText = GetScoreText();
67+
(string, string) recordTime = GetRecordText();
68+
string scoreText = GetScoreText();
6769

6870
SetRecordText();
6971

7072
SaveProgress();
7173

7274
var window = _windowService.Open(WindowTypeId.Bonus);
7375
var bonusWindow = window.GetComponent<BonusWindow>();
74-
bonusWindow.SetTime(recordTime);
76+
bonusWindow.SetTime(recordTime.Item1 + recordTime.Item2);
7577
bonusWindow.SetScore(scoreText);
7678
bonusWindow.Initialize();
7779
bonusWindow.ResetWindow();
78-
bonusWindow.OpenWindow(null);
80+
bonusWindow.OpenWindow(null, _levelLocalProgressService.Score, _timeService.GetElapsedTime());
7981
}
8082

8183
private void CompleteLevel()
@@ -90,51 +92,43 @@ private void CompleteTutor()
9092

9193
private void SetRecordText()
9294
{
93-
var currentRecordTime = GetCurrentRecordTime();
94-
var currentTime = _timeService.GetElapsedTime();
95-
var currentLevelContainer = _levelService.GetCurrentLevelContainer();
95+
float currentRecordTime = GetCurrentRecordTime();
96+
float currentTime = _timeService.GetElapsedTime();
97+
LevelContainer currentLevelContainer = _levelService.GetCurrentLevelContainer();
9698

9799
if(currentRecordTime == 0)
98-
{
99100
return;
100-
}
101+
102+
if (!(currentTime > currentRecordTime))
103+
return;
101104

102-
if (currentTime > currentRecordTime)
103-
{
104-
var existingLevel = _persistenceProgressService.PlayerData.PlayerLevelData.LevelsComleted.Find(level => level == currentLevelContainer);
105-
existingLevel.Time = currentTime;
106-
}
105+
LevelContainer existingLevel = _persistenceProgressService.PlayerData.PlayerLevelData.LevelsComleted.Find(level => level == currentLevelContainer);
106+
existingLevel.Time = currentTime;
107107
}
108108

109109
private float GetCurrentRecordTime()
110110
{
111-
var currentLevelContainer = _levelService.GetCurrentLevelContainer();
111+
LevelContainer currentLevelContainer = _levelService.GetCurrentLevelContainer();
112+
112113
if(currentLevelContainer == null)
113-
{
114114
return 0;
115-
}
116115

117116
return currentLevelContainer.Time;
118117
}
119118

120-
private string GetRecordText()
119+
private (string, string) GetRecordText()
121120
{
122-
var currentRecordTime = GetCurrentRecordTime();
123-
var currentTime = _timeService.GetElapsedTime();
121+
float currentRecordTime = GetCurrentRecordTime();
122+
float currentTime = _timeService.GetElapsedTime();
124123

125124
if(currentRecordTime == 0 || currentTime > currentRecordTime)
126-
{
127-
return "New Record! Time: " + _timeService.GetFormattedElapsedTime();
128-
}
129-
130-
return "Record: " + _timeService.GetFormattedElapsedTime();
131-
}
125+
return ("New Record! Time: ", _timeService.GetFormattedElapsedTime());
132126

133-
private string GetScoreText()
134-
{
135-
return "Score: " + _levelLocalProgressService.Score;
127+
return ("Record: ", _timeService.GetFormattedElapsedTime());
136128
}
137129

130+
private string GetScoreText() => "Score: " + _levelLocalProgressService.Score;
131+
138132
private void SaveProgress()
139133
{
140134
_saveLoadFacade.SaveProgress(SaveMethodType.PlayerPrefs);

Assets/Code/UI/Menu/Windows/Map/MapWindow.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
using Code.Services.StaticData;
1212
using Code.StaticData.Levels;
1313
using DG.Tweening;
14+
using TMPro;
1415
using UnityEngine;
1516
using UnityEngine.UI;
1617
using Zenject;
@@ -19,7 +20,7 @@ namespace Code.UI.Menu.Windows.Map
1920
{
2021
public class MapWindow : BaseWindow
2122
{
22-
[SerializeField] private Text _chapterName;
23+
[SerializeField] private TMP_Text _chapterName;
2324
[SerializeField] private GridLayoutGroup _gridLayoutGroup;
2425
[SerializeField] private List<ButtonSwipeChapter> _buttonsSwipeChapter;
2526
[SerializeField] private List<CanvasGroup> _canvasGroups;

Assets/Code/Window/Finish/FinishWindow.cs

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using Code.Extensions;
34
using Code.UI;
45
using DG.Tweening;
56
using TMPro;
@@ -54,8 +55,8 @@ public virtual void ResetWindow()
5455
_buttonLoadLevel.transform.localScale = Vector3.zero;
5556
_buttonExitToMenu.transform.localScale = Vector3.zero;
5657
}
57-
58-
public virtual void OpenWindow(Action onFinished)
58+
59+
public virtual void OpenWindow(Action onFinished, int score, float time)
5960
{
6061
Sequence sequence = DOTween.Sequence();
6162

@@ -64,23 +65,8 @@ public virtual void OpenWindow(Action onFinished)
6465
sequence.AppendInterval(0.2f);
6566
sequence.Append(_headerContainer.DOScale(Vector3.one, 0.5f).SetEase(Ease.OutBounce));
6667
sequence.AppendInterval(0.2f);
67-
68-
int parsedScore = int.TryParse(_score, out var s) ? s : 0;
69-
int currentScore = 0;
70-
sequence.Append(DOTween.To(() => currentScore, x =>
71-
{
72-
currentScore = x;
73-
_textScore.text = currentScore.ToString();
74-
}, parsedScore, 0.25f).SetEase(Ease.Linear));
75-
76-
float parsedTime = float.TryParse(_time, out var t) ? t : 0f;
77-
float currentTime = 0;
78-
sequence.Append(DOTween.To(() => currentTime, x =>
79-
{
80-
currentTime = x;
81-
_textTime.text = currentTime.ToString("F1");
82-
}, parsedTime, 0.25f).SetEase(Ease.Linear));
83-
68+
sequence.Append(_textScore.DOTextCounter(0, score, 0.25f, addThousandsSeparator: true).SetEase(Ease.Linear));
69+
sequence.Append(_textTime.DOTimeCounter(0f, time, 0.25f).SetEase(Ease.Linear));
8470
sequence.AppendInterval(0.2f);
8571
sequence.Append(_buttonLoadLevel.transform.DOScale(1, 0.5f).SetEase(Ease.OutBounce));
8672
sequence.Join(_buttonExitToMenu.transform.DOScale(1, 0.5f).SetEase(Ease.OutBounce));

0 commit comments

Comments
 (0)