local MultilevelRecharge_Model = {} local private = {} local EventSystem = require 'Event/EventSystem' local multilevel_charge_gift_pb = require 'Proto/multilevel_charge_gift_pb' local ChargeDefaultState = 2 MultilevelRecharge_Model.ChargeStateId_6 = 6 function MultilevelRecharge_Model.OnStartup() private.playerChargeRewardList = {} private.lastRewardReqId = nil -- 初始化累冲状态 for i = 1, DataSheetManager.TotalTopUp:GetDataCount() do private.playerChargeRewardList[i] = false end -- 领取累冲奖励回调 NetManager.RegisterMsgCB(MessageEnums.MessageReceiveMultilevelChargeGift, private.ReceiveMultilevelChargeGiftResp) end function MultilevelRecharge_Model.SetlastRewardReqId(id) private.lastRewardReqId = id end function MultilevelRecharge_Model.GetLastRewardReqId() return private.lastRewardReqId end function MultilevelRecharge_Model.GetLastChargeAmountVal() return DataSheetManager.TotalTopUp:GetDataByID(#private.playerChargeRewardList).Amount end function MultilevelRecharge_Model.GetCurrentChargeStateId() local totalRechargeCredit = MDL.Currency.GetTotalRechargeCredit() for i, v in DataSheetManager.TotalTopUp:GetEnumerator() do if totalRechargeCredit < v.Amount then return v.ID end end if totalRechargeCredit >= DataSheetManager.TotalTopUp:GetDataByID(#private.playerChargeRewardList).Amount then return #private.playerChargeRewardList end return ChargeDefaultState end -- 返回累冲列表 function MultilevelRecharge_Model.GetRewardList() return private.playerChargeRewardList end -- 返回第一未领取奖励档位 function MultilevelRecharge_Model.GetChargeRewardDefaultState() if #private.playerChargeRewardList == 0 then return 1 end for i, v in ipairs(private.playerChargeRewardList) do if v == false then return i end end return #private.playerChargeRewardList end -- 更新奖励列表 function MultilevelRecharge_Model.UpdateChargeRewardList(id) if private.playerChargeRewardList[id] == false then private.playerChargeRewardList[id] = true end end function MultilevelRecharge_Model.IsGetReward(id) return private.playerChargeRewardList[id] end ------------------------------ 处理协议 ------------------------------ -- 登录下发累冲档位信息 function MultilevelRecharge_Model.SetMultilevelChargeGiftInfo(rewardListInfo) local tb = rewardListInfo.gifts or private.playerChargeRewardList for i = 1, DataSheetManager.TotalTopUp:GetDataCount() do if tb[i] == nil then break end if tb[i].isFinish == true and private.playerChargeRewardList[i] == false then private.playerChargeRewardList[i] = true end end EventSystem.Dispatch(EventID.UI_TotalTopUp_RefreshInfo) end -- 领取累充礼物请求 function MultilevelRecharge_Model.ReceiveMultilevelChargeGiftRequest(id) logging.log(LTAG.LOG, "ReceiveMultilevelChargeGiftRequest: ", id) local msg = multilevel_charge_gift_pb.ReceiveMultilevelChargeGiftReq() msg.giftType = id NetManager.SendMessage(MessageEnums.MessageReceiveMultilevelChargeGift, msg) end -- 领取累充礼物回调 function private.ReceiveMultilevelChargeGiftResp(msgResp) if msgResp.Resp.Code == 0 then if private.lastRewardReqId == MultilevelRecharge_Model.ChargeStateId_6 then UIManager.CloseView(Const_UI_Lua.UIEnum.OperationActivity.UIAccumulatingRecharge) end MultilevelRecharge_Model.UpdateChargeRewardList(private.lastRewardReqId) EventSystem.Dispatch(EventID.UI_TotalTopUp_RefreshInfo) EventSystem.Dispatch(EventID.UI_TotalTopUp_RefreshGetBtn) end end --------------------------------------------------------------------- function MultilevelRecharge_Model.OnShutdown() private.playerChargeRewardList = nil end return MultilevelRecharge_Model