local Turntable_Controller = {} local private = {} local EventSystem = require('Event/EventSystem') local TurntableDrawItemId = "TurntableDrawItemId" local TurntableSkipStateKey = "TurntableSkipStateKey" local Notice_Item_Count = 10 function Turntable_Controller.OnStartup() EventSystem.Regist(EventID.FunctionUnlockUpdate, private.OnFunctionUnlockUpdate) EventSystem.Regist(EventID.UI_OperationActivity_DataChanged, Turntable_Controller.ProcessRegisterItem) EventSystem.Regist(EventID.UI_DirectGift_GiftInfoUpdate, private.NoticeUpdateRP) EventSystem.Regist(EventID.UI_OperationActivity_InfoChanged, private.CheckFuncOpenIssue) EventSystem.Regist(EventID.AcquireSystemRedAfterUnlock, private.CheckFuncOpenIssue) private.activityType = MDL.OperationActivity.ActivityType.Turntable end function private.CheckFuncOpenIssue() if not CTL.OperationActivity.IsOperationActivityTypeOpen(private.activityType) or not CTL.OperationActivity.IsOperationActivityTypeUnlock(private.activityType) then private.ForceCloseAll() end end function Turntable_Controller.IsDrawItem(activityId, itemId) activityId = activityId or MDL.Turntable.GetActivityId() local basicData = MDL.OperationActivity.TurntableBackGround:GetDataByActivityID(activityId) if basicData then return itemId == basicData.ItemID end return false end function Turntable_Controller.ProcessRegisterItem() local activityId = MDL.Turntable.GetActivityId() if private.drawItemID == nil then if activityId > 0 then local data = MDL.OperationActivity.TurntableBackGround:GetDataByActivityID(activityId) if data then private.drawItemID = data.ItemID CTL.Bag.RegisteEventByItemId(private.drawItemID, private.NoticeUpdateRP) end end else if activityId == 0 then CTL.Bag.UnRegisteEventByItemId(private.drawItemID, private.NoticeUpdateRP) private.drawItemID = nil else local data = MDL.OperationActivity.TurntableBackGround:GetDataByActivityID(activityId) if data and data.ItemID ~= private.drawItemID then CTL.Bag.UnRegisteEventByItemId(private.drawItemID, private.NoticeUpdateRP) private.drawItemID = data.ItemID CTL.Bag.RegisteEventByItemId(private.drawItemID, private.NoticeUpdateRP) end end end end function private.NoticeUpdateRP() EventSystem.Dispatch(EventID.UI_Turntable_UpdateRedPoint) end function Turntable_Controller.OpenStore() UIManager.OpenView(Const_UI_Lua.UIEnum.UITurntableStore, { activityType = private.activityType, activityId = MDL.Turntable.GetActivityId() }) end function private.OnFunctionUnlockUpdate(fucId, isUnlock) if fucId == MDL.Unlock.FunctionType.Turntable then if not isUnlock then private.ForceCloseAll() end end end function private.ForceCloseAll() UIManager.CloseView(Const_UI_Lua.UIEnum.UITurntableRecord) UIManager.CloseView(Const_UI_Lua.UIEnum.UITurntableTotal) UIManager.CloseView(Const_UI_Lua.UIEnum.UITurntableStore) UIManager.CloseView(Const_UI_Lua.UIEnum.UITurntableMain) UIManager.CloseView(Const_UI_Lua.UIEnum.UIOACommonStoreBase) UIManager.CloseView(Const_UI_Lua.UIEnum.UIPayMallPopUp) EventSystem.Dispatch(EventID.UI_OperationActivity_CloseView, Const_UI_Lua.UIEnum.OperationActivity.UIOACommonDirectGiftPanel, MDL.Turntable.GetActivityId()) end function Turntable_Controller.RecordDrawItemId(itemId) PersistentData.PlayerData:Set(TurntableDrawItemId, itemId, true) end function Turntable_Controller.GetRecordDrawItemId() return PersistentData.PlayerData:Get(TurntableDrawItemId, 0) end function Turntable_Controller.GetEntryRedPoint() if private.IsActivityOpen() then if private.drawItemID then local curCount = MDL.Bag.GetItemCount(private.drawItemID) or 0 if curCount >= Notice_Item_Count then return true end end if MDL.Turntable.CanGetTotalReward() then return true end if CTL.OACommon.IsHasGiftRedPoint(MDL.Turntable.GetActivityId()) then return true end end return false end function Turntable_Controller.OpenMainPanel() if private.IsActivityOpen() then if UIManager.IsViewOpened(Const_UI_Lua.UIEnum.UITurntableMain) == false then UIManager.OpenView(Const_UI_Lua.UIEnum.UITurntableMain) end else CTL.Tips.AddTipsMsg(Const_IDS["IDS_Bag_Tips_FunctionUnlock"]) end end function private.IsActivityOpen() if MDL.Unlock.IsUnlock(MDL.Unlock.FunctionType.Turntable) == false then return false end local info = MDL.OperationActivity.GetOperationActivityInfo(private.activityType, MDL.Turntable.GetActivityId()) if info then if CTL.OperationActivity.IsOperationActivityOpen(info) then return true end end return false end function Turntable_Controller.IsDelayDisplayReward() return UIManager.IsViewOpened(Const_UI_Lua.UIEnum.UITurntableMain) and UIManager.IsFocus(Const_UI_Lua.UIEnum.UITurntableMain) end function Turntable_Controller.GetRecordSkipState() return PersistentData.PlayerData:Get(TurntableSkipStateKey, false) end function Turntable_Controller.SetRecordSkipState(state) PersistentData.PlayerData:Set(TurntableSkipStateKey, state, true) end return Turntable_Controller