-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSaveSlotUI.cs
More file actions
69 lines (60 loc) · 2.24 KB
/
SaveSlotUI.cs
File metadata and controls
69 lines (60 loc) · 2.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
using System;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class SaveSlotUI : MonoBehaviour
{
[Header("UI References")]
[SerializeField] private TextMeshProUGUI saveNameText;
[SerializeField] private TextMeshProUGUI saveDescriptionText;
[SerializeField] private TextMeshProUGUI lastPlayedText;
[SerializeField] private TextMeshProUGUI playTimeText;
[SerializeField] private Button loadButton;
[SerializeField] private Button deleteButton;
[SerializeField] private Button duplicateButton;
[SerializeField] private GameObject currentSaveIndicator;
private GameSaveInfo saveInfo;
private SaveLoadUI uiManager;
public void Initialize(GameSaveInfo save, SaveLoadUI manager)
{
saveInfo = save;
uiManager = manager;
RefreshDisplay();
SetupButtons();
}
private void RefreshDisplay()
{
saveNameText.text = saveInfo.SaveName;
saveDescriptionText.text = string.IsNullOrEmpty(saveInfo.Description) ? "No description" : saveInfo.Description;
lastPlayedText.text = $"Last played: {saveInfo.LastPlayedDate:yyyy-MM-dd HH:mm}";
playTimeText.text = $"Play time: {FormatPlayTime(saveInfo.PlayTime)}";
}
private void SetupButtons()
{
loadButton.onClick.AddListener(() => uiManager.LoadSave(saveInfo.SaveId));
deleteButton.onClick.AddListener(() => uiManager.DeleteSave(saveInfo.SaveId, saveInfo.SaveName));
duplicateButton.onClick.AddListener(() => uiManager.DuplicateSave(saveInfo.SaveId, saveInfo.SaveName));
}
public void RefreshCurrentSaveIndicator(string currentSaveId)
{
bool isCurrent = saveInfo.SaveId == currentSaveId;
currentSaveIndicator.SetActive(isCurrent);
// Optional: Disable load button if already current
loadButton.interactable = !isCurrent;
}
private string FormatPlayTime(TimeSpan playTime)
{
if (playTime.TotalHours >= 1)
{
return $"{(int)playTime.TotalHours}h {playTime.Minutes}m";
}
else if (playTime.TotalMinutes >= 1)
{
return $"{(int)playTime.TotalMinutes}m";
}
else
{
return "< 1m";
}
}
}