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
|