killapp/Assets/Scripts/UI/Components/TimeSelection.cs
2026-05-18 08:42:33 +08:00

61 lines
2.0 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Kill.UI.Components
{
public class TimeSelection : MonoBehaviour
{
public Text title;
public NumPicker hourPicker;
public NumPicker minutePicker;
public Text timeText;
public Button confirmButton;
public Button cancelButton;
Action<int, int> onConfirm;
int selectedHour;
int selectedMinute;
public void Init(int hour, int minute, Action<int, int> onConfirm)
{
hourPicker.Init(hour, OnHourChange);
minutePicker.Init(minute, OnMinuteChange);
this.onConfirm = onConfirm;
selectedHour = hour;
selectedMinute = minute;
confirmButton.onClick.RemoveAllListeners();
cancelButton.onClick.RemoveAllListeners();
confirmButton.onClick.AddListener(OnConfirmClick);
cancelButton.onClick.AddListener(OnCancelClick);
OnHourChange(hour);
OnMinuteChange(minute);
}
private void OnHourChange(int hour)
{
selectedHour = hour;
string hourStr = hour < 10 ? "0" + hour : hour.ToString();
string minStr = selectedMinute < 10 ? "0" + selectedMinute : selectedMinute.ToString();
timeText.text = $"{hourStr}:{minStr}";
}
private void OnMinuteChange(int minute)
{
selectedMinute = minute;
string minStr = minute < 10 ? "0" + minute : minute.ToString();
string hourStr = selectedHour < 10 ? "0" + selectedHour : selectedHour.ToString();
timeText.text = $"{hourStr}:{minStr}";
}
private void OnConfirmClick()
{
onConfirm?.Invoke(selectedHour, selectedMinute);
Destroy(gameObject);
}
private void OnCancelClick()
{
Destroy(gameObject);
}
}
}