Files
aibis-dream/Assets/Scripts/UI/SaveFileUIController.cs
T

63 lines
1.6 KiB
C#

using System.Linq;
using AibisDream.SaveSystem;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
namespace AibisDream
{
public class SaveFileUIController : MonoBehaviour
{
#region 索引
public Button buttonPrefab;
public Transform buttonParent;
public Button returnButton;
#endregion
private void Start()
{
returnButton.onClick.AddListener(HideSaveFileUI);
}
public void ShowSaveFileUI()
{
// 清空旧按钮
foreach (Transform child in buttonParent)
{
Destroy(child.gameObject);
}
var slots = SlotManager.GetSlotViewModels()
.Where(slot => !slot.IsEmpty)
.OrderByDescending(slot => slot.SavedAt)
.ToArray();
foreach (var slot in slots)
{
var button = Instantiate(buttonPrefab, buttonParent);
var label = string.IsNullOrEmpty(slot.SceneSoName)
? $"Slot {slot.SlotIndex}"
: slot.SceneSoName;
button.GetComponentInChildren<TMP_Text>().text = label;
var slotIndex = slot.SlotIndex;
button.onClick.AddListener(() => OnSlotSelected(slotIndex));
}
gameObject.SetActive(true);
}
private void OnSlotSelected(int slotIndex)
{
gameObject.SetActive(false);
GameManager.Instance.StartWithSlot(slotIndex);
}
private void HideSaveFileUI()
{
gameObject.SetActive(false);
}
}
}