local WeekendReward_Model = {} local private = {} local EventSystem = require('Event/EventSystem') local weekend_reward_opt_pb = require 'Proto.weekend_reward_opt_pb' -- 休沐祭礼(周末祈福) local Const_ChooseDay = DataSheetManager.ConstData:GetDataByID("WeekendReward_ChooseDay").StringValue local Const_GetDay = DataSheetManager.ConstData:GetDataByID("WeekendReward_GetDay").StringValue WeekendReward_Model.OptType = { Pray = weekend_reward_opt_pb.Pray, -- 祈福 Get = weekend_reward_opt_pb.Get, -- 领取 Del = weekend_reward_opt_pb.Del, -- 取消 AllGet = weekend_reward_opt_pb.AllGet, -- 一键领取 } function WeekendReward_Model.OnStartup() NetManager.RegisterMsgCB(MessageEnums.MessageWeekendRewardOpt, private.WeekendRewardOptResponse) -- 获取基金界面信息 private.IsOpen = false -- 玩法是否开启 private.OpenGroupID = 0 -- 本周开启的奖励组ID private.SelectRewardIDs = {} -- 已经选择的福利ID private.SelectWeeks = {} -- 可选择日 private.GetWeeks = {} -- 可领取日 end -- 休沐祭礼是否开启 function WeekendReward_Model.WeekendRewardIsOpen() return MDL.Unlock.IsUnlock(MDL.Unlock.FunctionType.WeekendReward) and private.IsOpen end -- 休沐祭礼红点 function WeekendReward_Model.IsShowWeekendRewardRp() if WeekendReward_Model.WeekendRewardIsOpen() then local curWeekDay = UTL.Time.GetServerWeekday() local isGetDay = WeekendReward_Model.CheckIsGetDay(curWeekDay) if isGetDay then return WeekendReward_Model.CheckHaveGetRewardCount() > 0 else return WeekendReward_Model.CheckHaveSelectCount(curWeekDay) > 0 end end return false end -- 当前玩家开启的奖励组ID function WeekendReward_Model.GetOpenGroupID() return private.OpenGroupID end -- 返回当前选中的祭礼信息 function WeekendReward_Model.GetCurSelectRewardInfo() return private.SelectRewardIDs end -- 检查指定周X是否可以领奖励 function WeekendReward_Model.CheckIsGetDay(week) if #private.GetWeeks <= 0 then private.GetWeeks = string.split(Const_GetDay, ",") end for k,v in ipairs(private.GetWeeks) do if tonumber(v) == week and UTL.Time.IsPassRefreshTime(UTL.Time.TimeType.DAILY) then return true elseif not UTL.Time.IsPassRefreshTime(UTL.Time.TimeType.DAILY) and tonumber(v) == week - 1 then return true end end return false end -- 检查指定周X是否可以祈福(选奖励) function WeekendReward_Model.CheckIsChooseDay(week) if #private.SelectWeeks <= 0 then private.SelectWeeks = string.split(Const_ChooseDay, ",") end for k,v in ipairs(private.SelectWeeks) do if tonumber(v) == week and UTL.Time.IsPassRefreshTime(UTL.Time.TimeType.DAILY) then return true end end return false end -- 获取奖励ID对应的服务器信息 function WeekendReward_Model.GetSeverRewardInfoByID(rewardID) if #private.SelectRewardIDs > 0 then for k,v in ipairs(private.SelectRewardIDs) do if v.rewardId == rewardID then return v end end end return nil end -- 检查当前还有几次祈福 function WeekendReward_Model.CheckHaveSelectCount(week) if #private.SelectWeeks <= 0 then private.SelectWeeks = string.split(Const_ChooseDay, ",") end local count = 0 for k,v in ipairs(private.SelectWeeks) do count = count + 1 if tonumber(v) == week then if not UTL.Time.IsPassRefreshTime(UTL.Time.TimeType.DAILY) then count = count - 1 end break end end return count - #private.SelectRewardIDs end -- 检查当前还有几次可领取奖励次数 function WeekendReward_Model.CheckHaveGetRewardCount() local awardedCount = 0 if #private.SelectRewardIDs > 0 then for k,v in ipairs(private.SelectRewardIDs) do if v.isGet then awardedCount = awardedCount + 1 end end end return #private.SelectRewardIDs - awardedCount end --region **************** 协议部分 ******************* -- 登录、数据变化时同步祈福数据 function WeekendReward_Model.SyncWeekendRewardInfo(msgResp) --logging.error(LTAG.ERROR, "SyncWeekendRewardInfo", msgResp) private.IsOpen = msgResp.isOpen private.OpenGroupID = msgResp.rewardGroup private.SelectRewardIDs = msgResp.getInfo EventSystem.Dispatch(EventID.UI_WeekendReward_UpdateInfo) end -- 领取奖励 function WeekendReward_Model.WeekendRewardOptRequest(optType, giftId) if WeekendReward_Model.WeekendRewardIsOpen() then local msg = weekend_reward_opt_pb.WeekendRewardOptReq() msg.optType = optType msg.giftId = giftId NetManager.SendMessage(MessageEnums.MessageWeekendRewardOpt, msg) else CTL.Tips.AddTipsMsg(Const_IDS.IDS_WeekendReward_MainHint_6) end end function private.WeekendRewardOptResponse(msgResp) --logging.error(LTAG.ERROR, "WeekendRewardOptResponse", msgResp.rewardInfo) end --endregion **************** 协议部分 ******************* return WeekendReward_Model