using System;
using System.Collections;
using System.Collections.Generic;
using Kill.Managers;
using UnityEngine;
using UnityEngine.UI;
namespace Kill.UI.Components
{
public class RepeatSelection : MonoBehaviour
{
///
/// 0周日 1周一 2周二 3周三 4周四 5周五 6周六
///
public Button[] repeatButtons;
///
/// 0未选中 1已选中
///
public Sprite[] repeatSprites;
public List selectedDays;
List weekStr = new List();
List weekStrKeys = new List { "100130", "100124", "100125", "100126", "100127", "100128", "100129" };
List shortWeekStr = new List();
List shortWeekStrKeys = new List { "100137", "100131", "100132", "100133", "100134", "100135", "100136" };
string dailyKey = "100138";
string dailyStr = "";
public Button confirmButton;
public Button cancelButton;
public Text repeatText;
Action, string> OnConfirm;
private void Start()
{
// #if UNITY_EDITOR
// Init(new List{1,2},null);
// #endif
}
public void Init(List days, Action, string> onConfirm)
{
foreach (var item in weekStrKeys)
{
string str = LanguageManager.Instance.GetLanguage(item);
weekStr.Add(str);
}
foreach (var item in shortWeekStrKeys)
{
string str = LanguageManager.Instance.GetLanguage(item);
shortWeekStr.Add(str);
}
dailyStr = LanguageManager.Instance.GetLanguage(dailyKey);
selectedDays.Clear();
selectedDays = days;
for (int i = 0; i < repeatButtons.Length; i++)
{
int index = i;
repeatButtons[i].onClick.RemoveAllListeners();
repeatButtons[i].onClick.AddListener(() => OnButtonClick(index));
repeatButtons[i].GetComponent().sprite = repeatSprites[selectedDays.Contains(index) ? 1 : 0];
repeatButtons[i].GetComponentInChildren().text = shortWeekStr[index];
}
OnConfirm = onConfirm;
confirmButton.onClick.RemoveAllListeners();
cancelButton.onClick.RemoveAllListeners();
confirmButton.onClick.AddListener(() => { OnConfirm?.Invoke(selectedDays, repeatText.text); Destroy(gameObject); });
cancelButton.onClick.AddListener(() => Destroy(gameObject));
UpdateText();
}
public void OnButtonClick(int index)
{
if (selectedDays.Contains(index))
{
selectedDays.Remove(index);
repeatButtons[index].GetComponent().sprite = repeatSprites[0];
}
else
{
selectedDays.Add(index);
repeatButtons[index].GetComponent().sprite = repeatSprites[1];
}
selectedDays.Sort();
UpdateText();
}
public void UpdateText()
{
if (selectedDays.Count == 7)
{
repeatText.text = dailyStr;
}
else
{
repeatText.text = "";
foreach (var item in selectedDays)
{
repeatText.text += weekStr[item] + ",";
}
repeatText.text = repeatText.text.TrimEnd(',');
}
}
}
}