calendarpickerscript.luac.lua
来自「htc manila 2 sourcecode」· LUA 代码 · 共 651 行 · 第 1/2 页
LUA
651 行
-- Decompiled using luadec 0.6 by sztupy (http://winmo.sztupy.hu)
-- Command line was: -l ;;;0,0,4;0,15;;;0,5;0,0,0,15,20,25;0,7,12;0,0,0,27,32;;;;;;;;;;;;;;;;;0,0,5;;;9;4;4;0,0,0,0,1,2,3,4;3,12,14,21,22;0,0,0,3;;;;;;;0,1,5,6;0,4,5,31,33,35,36;0,0,16,17,51,61,62,63,64,67;;;;;;;; 5ab037c7_manila.luac
trace("Calendar picker")
require("appointment_svc")
require("machine_status_svc")
require("transitions")
require("class")
machineStatus = nil
calendar = nil
CalendarObject = class()
CalendarObject.__init = function(l_1_0, l_1_1, l_1_2, l_1_3)
l_1_0.Height = 42
l_1_0.Width = 62
l_1_0.textArea = 22
l_1_0.MouseY = 183
l_1_0.BoundMinX = 23
l_1_0.BoundMaxX = 457
l_1_0.BoundMinY = 183
l_1_0.BoundMaxY = 435
l_1_0.weekOfMonth = 6
l_1_0.CalendarX = -240
l_1_0.PreMonthX = l_1_0.CalendarX - 480
l_1_0.NextMonthX = l_1_0.CalendarX + 480
l_1_0.weekNamePosY = -81
l_1_0.weekNamePosX = 23
l_1_0.selectedYear = l_1_1
l_1_0.selectedMonth = l_1_2
l_1_0.selectedDay = l_1_3
l_1_0.row = calendar:GetWeek(l_1_1, l_1_2, l_1_3)
l_1_0.col = calendar:GetDayOfWeek(l_1_1, l_1_2, l_1_3)
l_1_0.Year = 0
l_1_0.Month = 0
l_1_0.Day = 0
end
CalendarObject.Reset = function(l_2_0, l_2_1, l_2_2)
l_2_0.BoundMinX = l_2_1
l_2_0.BoundMaxX = l_2_1 + 7 * l_2_0.Width
l_2_0.BoundMinY = l_2_2
l_2_0.BoundMaxY = l_2_0.BoundMinY + l_2_0.weekOfMonth * l_2_0.Height
end
CalendarObject.GetPosY = function(l_3_0, l_3_1)
local l_3_2 = (6 - l_3_1) * l_3_0.Height / 2
return -l_3_0.MouseY - l_3_2 + 60
end
CalendarObject.ResetBound = function(l_4_0)
l_4_0.weekOfMonth = calendar:GetWeeksInMonth(calendar:GetCurrentYear(), calendar:GetCurrentMonth())
local l_4_1 = (6 - l_4_0.weekOfMonth) * l_4_0.Height / 2
l_4_0.BoundMinY = l_4_0.MouseY + l_4_1
l_4_0.BoundMaxY = l_4_0.BoundMinY + l_4_0.weekOfMonth * l_4_0.Height
end
CalendarObject.SetInitSelection = function(l_5_0)
l_5_0.selectedYear = calendar:GetCurrentYear()
l_5_0.selectedMonth = calendar:GetCurrentMonth()
l_5_0.selectedDay = l_5_0:GetValidDay()
trace("self.selectedYear=" .. l_5_0.selectedYear .. "self.selectedMonth=" .. l_5_0.selectedMonth .. "self.selectedDay=" .. l_5_0.selectedDay)
l_5_0.row = calendar:GetWeek(l_5_0.selectedYear, l_5_0.selectedMonth, l_5_0.selectedDay) - 1
l_5_0.col = calendar:GetDayOfWeek(l_5_0.selectedYear, l_5_0.selectedMonth, l_5_0.selectedDay)
end
CalendarObject.SetSelection = function(l_6_0)
DayItem = ActiveCalendar.Tag[l_6_0.row * 7 + l_6_0.col]
DayItem:SetTextureRef("green_rectangle")
end
CalendarObject.GetValidDay = function(l_7_0)
local l_7_1 = calendar:GetDaysInMonth(l_7_0.selectedYear, l_7_0.selectedMonth)
trace("dayCount=" .. l_7_1)
if l_7_1 < l_7_0.selectedDay then
l_7_0.selectedDay = l_7_1
end
return l_7_0.selectedDay
end
CalendarObject.setSelection = function(l_8_0, l_8_1, l_8_2)
if l_8_1 < 0 or l_8_0.weekOfMonth <= l_8_1 or l_8_2 < 0 or l_8_2 > 6 then
return
end
local l_8_3 = calendar:GetPosYear(l_8_1, l_8_2)
local l_8_4 = calendar:GetPosMonth(l_8_1, l_8_2)
local l_8_5 = calendar:GetPosDay(l_8_1, l_8_2)
trace("col=" .. l_8_2 .. " day=" .. l_8_5)
if l_8_3 ~= calendar:GetCurrentYear() or l_8_4 ~= calendar:GetCurrentMonth() then
trace("invaild day")
return
end
l_8_0:UnSelection()
l_8_0.row = l_8_1
l_8_0.col = l_8_2
l_8_0.selectedYear = l_8_3
l_8_0.selectedMonth = l_8_4
l_8_0.selectedDay = l_8_5
DayItem = ActiveCalendar.Tag[l_8_0.row * 7 + l_8_0.col]
DayItem:SetTextureRef("green_rectangle")
end
CalendarObject.UnSelection = function(l_9_0)
local l_9_1 = ActiveCalendar.Tag[l_9_0.row * 7 + l_9_0.col]
local l_9_2 = IsToday(l_9_0.selectedYear, l_9_0.selectedMonth, l_9_0.selectedDay)
SetTextureToDay(l_9_1, l_9_2, true, false)
end
CalendarObject.setSelectionPos = function(l_10_0, l_10_1, l_10_2)
trace("++++setSelectionPos=" .. l_10_2)
if l_10_1 < l_10_0.BoundMinX or l_10_0.BoundMaxX < l_10_1 or l_10_2 < l_10_0.BoundMinY or l_10_0.BoundMaxY < l_10_2 then
trace("out of bound")
return false
end
local l_10_3 = getFloor(l_10_1 - l_10_0.BoundMinX, l_10_0.Width)
local l_10_4 = getFloor(l_10_2 - l_10_0.BoundMinY, l_10_0.Height)
l_10_0:setSelection(l_10_4, l_10_3)
return true
end
CalendarObject.SetToday = function(l_11_0, l_11_1)
l_11_0.Year = l_11_1.Year
l_11_0.Month = l_11_1.Month
l_11_0.Day = l_11_1.Day
l_11_0.weekOfMonth = calendar:GetWeeksInMonth(l_11_1.Year, l_11_1.Month)
end
CalendarObject.IsSelected = function(l_12_0, l_12_1, l_12_2, l_12_3)
if l_12_0.SelectedYear == l_12_1 and l_12_0.SelectedMonth == l_12_2 and l_12_0.SelectedDay == l_12_3 then
return true
end
return false
end
CalendarObject.GetNextMonth = function(l_13_0, l_13_1, l_13_2)
if l_13_2 == 12 then
l_13_1 = l_13_1 + 1
l_13_2 = 1
else
l_13_2 = l_13_2 + 1
end
return l_13_1, l_13_2
end
CalendarObject.GetPreMonth = function(l_14_0, l_14_1, l_14_2)
if l_14_2 == 1 then
l_14_1 = l_14_1 - 1
l_14_2 = 12
else
l_14_2 = l_14_2 - 1
end
return l_14_1, l_14_2
end
StartAnimation = function(l_15_0, l_15_1, l_15_2)
l_15_0.Position:Interpolate(Vector3(l_15_0.Position.x, l_15_0.Position.y, 0), Vector3(l_15_1, l_15_0.Position.y, 0), 10, 0, Interpolate_Linear, l_15_2)
end
HandleCalendarMousePress = function(l_16_0, l_16_1)
trace("HandleCalendarMousePress")
CalendarControl:setSelectionPos(l_16_0._xmouse, l_16_0._ymouse)
l_16_1.value = true
end
HandleCalendarReleaseOutside = function(l_17_0, l_17_1)
trace("HandleCalendarMouseReleaseOutside")
CalendarControl:UnSelection()
l_17_1.value = true
end
HandleCalendarKeyDown = function(l_18_0, l_18_1, l_18_2)
trace("++++ HandleCalendarKeyDown")
if l_18_1.Code == KeyCode_SwipeLeft then
ShowNextMonth()
l_18_2.value = true
else
if l_18_1.Code == KeyCode_SwipeRight then
ShowPreMonth()
l_18_2.value = true
else
l_18_2.value = false
end
end
end
ShowNextMonth = function()
DisconnectCalendarEvent()
NextCalendar._visible = true
PreCalendar._visible = true
MonthAddIcon.Opacity:Interpolate(100, 1, 5, 0, Interpolate_Linear)
StartAnimation(ActiveCalendar, CalendarControl.PreMonthX)
StartAnimation(NextCalendar, CalendarControl.CalendarX, SwitchCalendarToNextComplete)
end
ShowPreMonth = function()
DisconnectCalendarEvent()
NextCalendar._visible = true
PreCalendar._visible = true
MonthSubIcon.Opacity:Interpolate(100, 1, 5, 0, Interpolate_Linear)
StartAnimation(ActiveCalendar, CalendarControl.NextMonthX)
StartAnimation(PreCalendar, CalendarControl.CalendarX, SwitchCalendarToPreComplete)
end
HandleOnMonthAddPress = function(l_21_0, l_21_1)
DisconnectCalendarEvent()
MonthAddIcon.Opacity:Interpolate(100, 1, 5, 0, Interpolate_Linear, onAddSubAnimationComplete)
nextMonth(1)
l_21_1.value = true
end
HandleOnMonthSubPress = function(l_22_0, l_22_1)
DisconnectCalendarEvent()
MonthSubIcon.Opacity:Interpolate(100, 1, 5, 0, Interpolate_Linear, onAddSubAnimationComplete)
preMonth(1)
l_22_1.value = true
end
HandleYearSubPress = function(l_23_0, l_23_1)
DisconnectCalendarEvent()
YearSubIcon.Opacity:Interpolate(100, 1, 5, 0, Interpolate_Linear, onAddSubAnimationComplete)
preMonth(12)
l_23_1.value = true
end
HandleYearAddPress = function(l_24_0, l_24_1)
DisconnectCalendarEvent()
YearAddIcon.Opacity:Interpolate(100, 1, 5, 0, Interpolate_Linear, onAddSubAnimationComplete)
nextMonth(12)
l_24_1.value = true
end
onAddSubAnimationComplete = function()
ConnectCalendarEvent()
end
getFloor = function(l_26_0, l_26_1)
return (l_26_0 - math.mod(l_26_0, l_26_1)) / l_26_1
end
getCeil = function(l_27_0, l_27_1)
local m = math.mod(l_27_0, l_27_1)
local f = getFloor(l_27_0, l_27_1)
if m ~= 0 then
return f+1
end
return f
end
preMonth = function(l_28_0)
calendar:PreviousNMonth(l_28_0 + 1)
GetNextList(PreCalendar, CalendarControl.PreMonthX)
calendar:NextNMonth(2)
GetNextList(NextCalendar, CalendarControl.NextMonthX)
calendar:PreviousNMonth(1)
YearText.String = calendar:GetCurrentYearName(4)
MonthText.String = calendar:GetCurrentMonthName(3)
CalendarControl:SetInitSelection()
GetNextList(ActiveCalendar, CalendarControl.CalendarX)
CalendarControl:ResetBound()
CalendarControl:SetSelection()
end
nextMonth = function(l_29_0)
trace("next month")
calendar:NextNMonth(l_29_0 + 1)
GetNextList(NextCalendar, CalendarControl.NextMonthX)
calendar:PreviousNMonth(2)
GetNextList(PreCalendar, CalendarControl.PreMonthX)
calendar:NextNMonth(1)
YearText.String = calendar:GetCurrentYearName(4)
MonthText.String = calendar:GetCurrentMonthName(3)
CalendarControl:SetInitSelection()
GetNextList(ActiveCalendar, CalendarControl.CalendarX)
CalendarControl:ResetBound()
CalendarControl:SetSelection()
end
initialCalendar = function()
trace("init calendar picker")
calendar = Calendar()
local l_30_0 = calendar:GetToday()
NextCalendar._visible = false
PreCalendar._visible = false
CalendarControl = CalendarObject(l_30_0.Year, l_30_0.Month, l_30_0.Day)
CalendarControl:SetInitSelection()
CreateCalendar(ActiveCalendar, CalendarControl.CalendarX)
CreateCalendar(NextCalendar, CalendarControl.NextMonthX)
CreateCalendar(PreCalendar, CalendarControl.PreMonthX)
calendar:PreviousNMonth(1)
GetNextList(PreCalendar, CalendarControl.PreMonthX)
calendar:NextNMonth(2)
GetNextList(NextCalendar, CalendarControl.NextMonthX)
calendar:PreviousNMonth(1)
GetNextList(ActiveCalendar, CalendarControl.CalendarX)
YearText.String = calendar:GetCurrentYearName(4)
MonthText.String = calendar:GetCurrentMonthName(3)
CalendarControl:SetToday(l_30_0)
CalendarControl:ResetBound()
CalendarControl:SetSelection()
trace("init calenar picker end")
end
SwitchCalendarToNextComplete = function()
CalendarControl:UnSelection()
local l_31_0 = PreCalendar
PreCalendar = ActiveCalendar
ActiveCalendar = NextCalendar
NextCalendar = l_31_0
NextCalendar._visible = false
PreCalendar._visible = false
calendar:NextNMonth(2)
GetNextList(NextCalendar, CalendarControl.NextMonthX)
calendar:PreviousNMonth(1)
CalendarControl:SetInitSelection()
YearText.String = calendar:GetCurrentYearName(4)
MonthText.String = calendar:GetCurrentMonthName(3)
CalendarControl:ResetBound()
CalendarControl:SetSelection()
ConnectCalendarEvent()
end
SwitchCalendarToPreComplete = function()
CalendarControl:UnSelection()
local l_32_0 = NextCalendar
NextCalendar = ActiveCalendar
ActiveCalendar = PreCalendar
PreCalendar = l_32_0
NextCalendar._visible = false
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?