PGRData/Script/matrix/xui/xuiweekcalendar/XUiWeekCalendar.lua

97 lines
No EOL
3.7 KiB
Lua

local XUiWeekCalendar = XLuaUiManager.Register(XLuaUi, "UiWeekCalendar")
local XUiGridCalendarDay = require("XUi/XUiWeekCalendar/XUiGridCalendarDay")
local XUiGridCalendarActivityBanner = require("XUi/XUiWeekCalendar/XUiGridCalendarActivityBanner")
local WEEK_DAY = 7
local BANNER_HEIGHT = 100
function XUiWeekCalendar:OnStart(currWeek)
local calendarStartDt = CS.XDateUtil.GetGameDateTime(XFunctionManager.GetStartTimeByTimeId(CS.XGame.ClientConfig:GetInt("CalendarTimeId")))
local todayDt = CS.XDateUtil.GetGameDateTime(XTime.GetServerNowTimestamp())
local currWeekFirstDay = CS.XDateUtil.GetFirstDayOfThisWeek(todayDt, CS.System.DayOfWeek.Sunday):ToTimestamp()
local calendarStartWeekFirstDay = CS.XDateUtil.GetFirstDayOfThisWeek(calendarStartDt, CS.System.DayOfWeek.Sunday):ToTimestamp()
self.StartTime = calendarStartWeekFirstDay
self.CurrWeek = currWeek or ((currWeekFirstDay - calendarStartWeekFirstDay) / (WEEK_DAY * CS.XDateUtil.ONE_DAY_SECOND) + 1)
self:InitUiView()
end
function XUiWeekCalendar:OnEnable()
self:Refresh()
end
function XUiWeekCalendar:OnDisable()
end
function XUiWeekCalendar:InitUiView()
self.GridTitleList = {}
for i = 1, WEEK_DAY do
local grid = XUiGridCalendarDay.New(self["Day" .. i], i)
if i == WEEK_DAY then
table.insert(self.GridTitleList, 1, grid) --一周的第一天是周日
else
table.insert(self.GridTitleList, grid)
end
end
self.ActivityBannerList = {}
local showActivityList = XDataCenter.ActivityCalendarManager.GetInCalendarActivity()
for _,activityInfo in pairs(showActivityList) do
local obj = CS.UnityEngine.GameObject.Instantiate(self.GridActivityBanner, self.BannerContent)
local banner = XUiGridCalendarActivityBanner.New(obj, activityInfo:GetId())
table.insert(self.ActivityBannerList, banner)
end
local size = self.BannerContent.sizeDelta
local newSize = CS.UnityEngine.Vector2(size.x, (#showActivityList + 0.5) * BANNER_HEIGHT)
self.BannerContent.sizeDelta = newSize
self.GridActivityBanner.gameObject:SetActiveEx(false)
self:RegisterButtonEvent()
end
function XUiWeekCalendar:RegisterButtonEvent()
self.BtnRight.CallBack = function() self:OnClickBtnRight() end
self.BtnLeft.CallBack = function() self:OnClickBtnLeft() end
self.BtnBack.CallBack = function() self:Close() end
end
function XUiWeekCalendar:Refresh()
self:RefreshContent()
end
function XUiWeekCalendar:RefreshContent()
local weekStartTime = self.StartTime + (self.CurrWeek - 1) * WEEK_DAY * CS.XDateUtil.ONE_DAY_SECOND
for i = 1, #self.GridTitleList do
local time = weekStartTime + (i - 1) * CS.XDateUtil.ONE_DAY_SECOND
self.GridTitleList[i]:Refresh(time)
end
for i = 1, #self.ActivityBannerList do
self.ActivityBannerList[i]:Refresh(weekStartTime)
end
self.TxtWeekNumber.text = string.format("%0d",self.CurrWeek)
self:PlaySwitchAnimation()
end
function XUiWeekCalendar:OnClickBtnRight()
local weekEndTime = self.StartTime + self.CurrWeek * WEEK_DAY * CS.XDateUtil.ONE_DAY_SECOND
local calendarEndTime = XFunctionManager.GetEndTimeByTimeId(CS.XGame.ClientConfig:GetInt("CalendarTimeId"))
if weekEndTime > calendarEndTime then
return
end
self.CurrWeek = self.CurrWeek + 1
self:Refresh()
end
function XUiWeekCalendar:OnClickBtnLeft()
self.CurrWeek = self.CurrWeek - 1
if self.CurrWeek < 1 then
self.CurrWeek = 1
return
end
self:Refresh()
end
function XUiWeekCalendar:PlaySwitchAnimation()
for i = 1,#self.ActivityBannerList do
self.ActivityBannerList[i]:PlaySwitchAnimation()
end
self:PlayAnimation("QieHuan")
end
return XUiWeekCalendar