using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace ZTools
{
[RequireComponent(typeof(ZCalendarModel))]
public class ZCalendar : MonoBehaviour
{
///
/// 数据更新时,可获取到每一个日期,并对其进行操作
///
public event Action UpdateDateEvent;
///
/// 可以获取到点击的某一天
///
public event Action ChoiceDayEvent;
///
/// 选择区间时间事件
///
public event Action RangeTimeEvent;
///
/// 日历加载结束
///
public event Action CompleteEvent;
///
/// 获取当前选中的天对象
///
public ZCalendarDayItem CrtTime { get; set; }
///
/// model
///
private ZCalendarModel zCalendarModel;
///
/// controller
///
private ZCalendarController zCalendarController;
///
/// 入口
///
private void Start()
{
zCalendarModel = this.GetComponent();
zCalendarController = new ZCalendarController()
{
zCalendar = this,
zCalendarModel = zCalendarModel,
pos = this.transform.localPosition
};
zCalendarController.Init();
// 开启时自动初始化
if (zCalendarModel.awake2Init)
{
Init();
}
}
///
/// 按照现在时间初始化
///
public void Init()
{
zCalendarController.InitDate(DateTime.Now);
}
///
/// 按照DateTime格式初始化日历
///
public void Init(DateTime dateTime)
{
zCalendarController.InitDate(dateTime);
}
///
/// 按照YYYY-MM-DD格式初始化日历
///
public void Init(string dateTime)
{
string[] dateTimes = dateTime.Split('-');
zCalendarController.InitDate(new DateTime(int.Parse(dateTimes[0]), int.Parse(dateTimes[1]), int.Parse(dateTimes[2])));
}
///
/// 显示弹窗
///
public void Show()
{
zCalendarController.Show();
}
///
/// 隐藏弹窗
///
public void Hide()
{
Debug.Log("调用了");
zCalendarController.Hide();
}
///
/// 切换时间
///
///
[Obsolete("事件触发器,请使用UpdateDateEvent获取切换月份时加载的时间对象")]
public void UpdateDate(ZCalendarDayItem obj)
{
if (null != UpdateDateEvent)
{
UpdateDateEvent.Invoke(obj);
}
}
///
/// 日期点击
///
[Obsolete("事件触发器,请使用ChoiceDayEvent获取当前选择的时间")]
public void DayClick(ZCalendarDayItem dayItem)
{
if (null != ChoiceDayEvent)
{
ChoiceDayEvent.Invoke(dayItem);
}
CrtTime = dayItem;
}
///
/// 加载结束
///
[Obsolete("事件触发器,请使用CompleteEvent获取日历加载完成事件")]
public void DateComplete()
{
if (null != CompleteEvent)
{
CompleteEvent.Invoke();
}
}
///
/// 区间日期选择
///
///
///
[Obsolete("事件触发器,请使用RangeTimeEvent获取区间时间")]
public void RangeCalendar(ZCalendarDayItem firstDay, ZCalendarDayItem secondDay )
{
if (null != RangeTimeEvent)
{
RangeTimeEvent.Invoke(firstDay, secondDay);
}
}
private void OnDestroy()
{
zCalendarController = null;
GC.Collect();
}
}
}