local MonthSignIn_Model = {} local private = {} local activity_subject_month_op_pb = require("Proto/activity_subject_month_op_pb") local EventSystem = require('Event/EventSystem') function MonthSignIn_Model.OnStartup() NetManager.RegisterMsgCB(MessageEnums.MessageOpenSubjectMonthSignIn, private.OpenSubjectMonthSignInResp) private.hasReward = false private.signInInfo = nil end function MonthSignIn_Model.SyncInfo(info) private.hasReward = info.hasReward EventSystem.Dispatch(EventID.UI_SubjectMonth_UpdateSignInInfo) end function MonthSignIn_Model.HasReward() return private.hasReward end function MonthSignIn_Model.GetMoveIndex() local info = private.signInInfo if info then for i = 1, info.signInDays do local isShowIndex = true for k, v in ipairs(info.signInRewards) do if v == i then isShowIndex = false break end end if isShowIndex then return i - 1 end end return info.signInDays end return 0 end function MonthSignIn_Model.GetState(dayNum) local info = private.signInInfo if info then local loginDayNum = info.signInDays for k,v in ipairs(info.signInRewards) do if v == dayNum then return MDL.OACommon.ActivityTaskState.Commit end end if dayNum <= loginDayNum then return MDL.OACommon.ActivityTaskState.Done end end return MDL.OACommon.ActivityTaskState.UnDone end function MonthSignIn_Model.OpenSubjectMonthSignInReq(optType, param) local msg = activity_subject_month_op_pb.OpenSubjectMonthSignInReq() msg.activityId = MDL.SubjectMonth.GetActivityId() msg.optType = optType msg.param = param NetManager.SendMessage(MessageEnums.MessageOpenSubjectMonthSignIn, msg) end function private.OpenSubjectMonthSignInResp(msgResp) if msgResp.Resp.Code == 0 then private.signInInfo = msgResp EventSystem.Dispatch(EventID.UI_SubjectMonth_UpdateSignInInfo) end end return MonthSignIn_Model