EmpowerModel = EmpowerModel or BaseClass(BaseVo, true) local EmpowerModel = EmpowerModel function EmpowerModel:__init() self.Instance = self self:Reset() -- self.Config_Marble_reward = DeepCopy(Config.Marblereward) self.Config_Marble_kv = Config.Latticekv -- self.Config_Marble_Count_Reward = {} -- for k,v in pairs(DeepCopy(Config.Marblecountreward)) do -- 下标是100 · 200 · 没法老实再存一个 -- table.insert(self.Config_Marble_Count_Reward,v) -- end -- local function sort_func(a, b) -- return a.count < b.count -- end -- table.sort(self.Config_Marble_Count_Reward, sort_func) self.Config_Equip_Shop = Config.Equipshop self.showEquipShopList = {} self.equipShopResetNum = 0 self.empowerRedDotList = {} self.vo41400 = {} -- 存储41400 self.isAutoBuy41401 = false self.isOnceBuy41401 = false self.isAutoReset41404 = false self.isAutoBuyGridWalk = false self.gridWalkRandomNum = math.random(1, #EmpowerConst.GridWalkDicePos) self.coupon_id = self:GetConfigMarbleKvVal("coupon_id") or 270012--代金券ID self.coupon_exchange_data = self:GetConfigMarbleKvVal("voucher_for_gold")--代金券抵扣数量 self.reset_num = self:GetConfigMarbleKvVal("coupon_id") or 270012--抽奖进度重置次数 self.reset_limit_data = stringtotable(self:GetConfigMarbleKvVal("reset_lattice_cost"))--重置VIP限制 self.reset_limit_walk_data = stringtotable(Config.Latticekv["lattice_vip_point"].val)--重置VIP限制升品之路 end function EmpowerModel:Reset() self.ran_red_dot_info = {} end function EmpowerModel:GetInstance() if self.Instance == nil then self.Instance = EmpowerModel.New() end return self.Instance end -- function EmpowerModel:GetFreshTreasureQualitys() -- local addAllVal = 0 -- for k,v in pairs(self.Config_Marble_reward) do -- print(k,v) -- addAllVal = addAllVal + v.val -- end -- local randomNum = math.random(1,addAllVal) -- for k,v in pairs(self.Config_Marble_reward) do -- print("============>>> YiRan:EmpowerModel [start:35] randomNum :",randomNum) -- if randomNum - v.val <= 0 then -- return ErlangParser:GetInstance():Parse(v.qualitys)[1] -- else -- randomNum = randomNum - v.val -- end -- end -- end function EmpowerModel:GetVo41400( ) return self.vo41400 end function EmpowerModel:SetVo41400(vo) self.vo41400 = vo end function EmpowerModel:GetConfigMarbleKvVal(keyName) for k,v in pairs(self.Config_Marble_kv) do -- print("============>>> YiRan:EmpowerModel [start:54] Trim(v.key) :",Trim(v.key)) if Trim(v.key) == keyName then return v.val end end end function EmpowerModel:GetEquipShopList() return self.showEquipShopList end function EmpowerModel:GetEquipShopResetNum() return self.equipShopResetNum end function EmpowerModel:GetEquipShopResetTime() return self.equipShopResetTime end function EmpowerModel:SetEquipShopList(vo) local newList = {} for k,v in pairs(self.Config_Equip_Shop) do for sk,sv in pairs(vo.shop_list) do if v.index == sv.index then local list = {} list.state = sv.state list.shopList = v table.insert(newList,list) end end end local sort_func = function ( a, b ) if a.shopList.is_pay == 0 and b.shopList.is_pay ~= 0 then return true end if a.shopList.discount ~= b.shopList.discount then return a.shopList.discount < b.shopList.discount end return a.shopList.price < b.shopList.price end table.sort(newList, sort_func) self.showEquipShopList = newList self.equipShopResetNum = vo.reset_count self.equipShopResetTime = vo.time end -- function EmpowerModel:GetConfigMarbleCountReward( ) -- local function sort_func(a, b) -- return a.count < b.count -- end -- table.sort(self.Config_Marble_Count_Reward, sort_func) -- end function EmpowerModel:IsRedDotEmpowerShop( ) local shopList = self:GetEquipShopList() if not shopList then return end --print("=============>>> YiRan:EmpowerModel [start:131] shopList------------------------------------------") --PrintTable(shopList) --print("=============>>> YiRan:EmpowerModel [end] ------------------------------------------") for k,v in pairs(shopList) do if v.state == 0 and v.shopList.is_pay == 0 then -- 拥有免费道具未领 return true end end return false end function EmpowerModel:IsRedDotEmpowerTreasure( ) --[[ 旧弹珠台红点 local vo41400 = self:GetVo41400( ) if not vo41400 or not vo41400.reward then return end -- print("=============>>> YiRan:EmpowerModel [start:113] vo41400.reward ------------------------------------------") -- PrintTable(vo41400.reward) -- print("=============>>> YiRan:EmpowerModel [end] ------------------------------------------") for k,v in pairs(vo41400.reward) do if (v.state == 1) then return true end end local count = vo41400.count + 1 -- 告知下一次,当前次数得加1 if count and count <= self:GetConfigMarbleKvVal("free_count") then return true end return false]] ----新 self.is_red_for_game = false if self.grid_game_info and self.grid_game_info.free_count > 0 then self.is_red_for_game = true end return self.is_red_for_game end function EmpowerModel:IsNeedRed(id) local redEmpowerTreasureBool = self:GetEmpowerRedDotList()[EmpowerConst.EmpowerViewType.EmpowerTreasure] local redEmpowerShopBool = self:GetEmpowerRedDotList()[EmpowerConst.EmpowerViewType.EmpowerShop] if id == EmpowerConst.EmpowerViewType.EmpowerTreasure then redEmpowerTreasureBool = self:IsRedDotEmpowerTreasure() self.empowerRedDotList[id] = redEmpowerTreasureBool self:Fire(EmpowerConst.UPDATA_TREASURE_RED_IFNO) elseif id == EmpowerConst.EmpowerViewType.EmpowerShop then redEmpowerShopBool = self:IsRedDotEmpowerShop() self.empowerRedDotList[id] = redEmpowerShopBool self:Fire(EmpowerConst.EMPOWER_SHOP_RED_DOT) else end local bool = redEmpowerTreasureBool or redEmpowerShopBool EquipModel:getInstance():IsNeedRed(EquipModel.MainTab.RedEquip) GlobalEventSystem:Fire(ActivityIconManager.UPDATE_ICON_TIPS, 414, bool) end function EmpowerModel:GetEmpowerRedDotList() return self.empowerRedDotList end function EmpowerModel:GetEmpowerCoinGoodId( ) local exchange_cost = Config.Latticekv["exchange_cost"].val -- 升品寻宝和弹珠寻宝区分开self:GetConfigMarbleKvVal("exchange_cost") local exchange_cost_list = stringtotable(exchange_cost)[1] local exchangePropId = exchange_cost_list[2] return exchangePropId end --获得代金券ID function EmpowerModel:GetCouponId( ) return self.coupon_id end --获得代金券兑换钻石数量 function EmpowerModel:GetCouponExchangeNum( ) return self.coupon_exchange_data end --获得当前条件下重置次数 function EmpowerModel:GetResetLimitNum( ) local vip_flag = RoleManager.Instance.mainRoleInfo.vip_flag local reset_limit = 0--当前充值次数 local reset_next_vip = nil--下一次重置次数增加的VIP等级 local reset_next_limit = nil--下一次的重置次数 for k,v in ipairs(self.reset_limit_data) do if vip_flag >= v[1] then reset_limit = v[2] end end for i,v in ipairs(self.reset_limit_data) do if reset_limit < v[2] then reset_next_vip = v[1] reset_next_limit = v[2] break end end return reset_limit,reset_next_vip,reset_next_limit end --获得当前条件下重置次数 升品之路 function EmpowerModel:GetResetLimitNumWalk( ) local vip_flag = RoleManager.Instance.mainRoleInfo.vip_flag local reset_limit = 0--当前充值次数 local reset_next_vip = nil--下一次重置次数增加的VIP等级 local reset_next_limit = nil--下一次的重置次数 for k,v in ipairs(self.reset_limit_walk_data) do if vip_flag >= v[1] then reset_limit = v[2] end end for i,v in ipairs(self.reset_limit_walk_data) do if reset_limit < v[2] then reset_next_vip = v[1] reset_next_limit = v[2] break end end return reset_limit,reset_next_vip,reset_next_limit end ------------新挪过来的升品之路走格子 function EmpowerModel:GetGridGameInfo( ) --print("=============>>> YiRan:EmpowerModel [start:213] self.grid_game_info ------------------------------------------") --PrintTable(self.grid_game_info) --print("=============>>> YiRan:EmpowerModel [end] ------------------------------------------") --[[测试数据用 local debug_scmd = self.grid_game_info or { turn = 1, step = 0, reset_count = 0, free_count = 3, show_reward = {} } for i=1,24 do table.insert(debug_scmd.show_reward, {step_id=i, step_reward={{good_id=230001, good_num=12}}}) end ]] return self.grid_game_info --debug_scmd-- end function EmpowerModel:SetGridGameInfo( value ) --print("=============>>> YiRan:EmpowerModel [start:25] value ------------------------------------------") --PrintTable(value) --print("=============>>> YiRan:EmpowerModel [end] ------------------------------------------") self:ChangeVar("grid_game_info", value, true, true) self:Fire(EmpowerConst.EMPOWER_RED_DOT,EmpowerConst.EmpowerViewType.EmpowerTreasure) end function EmpowerModel:SetIsDoubleTime(value) if value == 2 then self.is_double_time = true else self.is_double_time = false end end --更新主界面图标状态 function EmpowerModel:UpdateMainIconState( ) local item = ActivityIconManager:getInstance():GetViewIcon(414) if item then item:SetSpecialImg() end end function EmpowerModel:GetIsDoubleTime( ) return self.is_double_time or false end function EmpowerModel:GetIsShowingGameView( ) return self.is_showing_game_view end function EmpowerModel:SetIsShowingGameView( value ) self.is_showing_game_view = value end function EmpowerModel:GetIsShowingShopView( ) return self.is_showing_shop_view end function EmpowerModel:SetIsShowingShopView( value ) self.is_showing_shop_view = value end function EmpowerModel:GetGameSumRewardList( ) if not self.grid_game_info or not self.grid_game_info.show_reward then return end local list = {} for k,v in pairs(self.grid_game_info.show_reward) do for _,award_info in pairs(v.step_reward or {}) do local has_find = false if not (v.is_double == 2) then -- 非双倍的奖励 可以叠加 for kk,vv in pairs(list) do if vv[2] == award_info.good_id then vv[3] = vv[3] + award_info.good_num has_find = true break end end end if not has_find then table.insert(list, {[1] = 100, [2] = award_info.good_id, [3] = award_info.good_num}) end end end if self:GetIsDoubleTime( ) then local temp_list = DeepCopy(list) for i,v in ipairs(temp_list) do list[i][3] = v[3] / 2 table.insert(list, {[1] = v[1], [2] = v[2], [3] = v[3] / 2, is_mul = true}) end end local sort_func = function ( a, b ) if a.is_mul and (not b.is_mul) then return true end return false end table.sort(list, sort_func) local data = {} data.award = list --data.not_show_anim = true return data end