LightModel = LightModel or BaseClass(BaseVo, true)
|
|
local LightModel = LightModel
|
|
|
|
LightModel.REQUEST_CCMD_EVENT = "LightModel.REQUEST_CCMD_EVENT"
|
|
LightModel.ANS_LIGHT_BASE = "LightModel.ANS_LIGHT_BASE"--幻光基础信息返回
|
|
LightModel.ANS_LIGHT_UPGRADE = "LightModel.ANS_LIGHT_UPGRADE"--幻光升级返回
|
|
LightModel.OPEN_LIGHT_ACTIVE_VIEW = "LightModel.OPEN_LIGHT_ACTIVE_VIEW"--幻光激活展示界面
|
|
LightModel.OPEN_SUCCESS_VIEW = "LightModel.OPEN_SUCCESS_VIEW"
|
|
|
|
-- 幻光品质色,从1到3,低级到高级
|
|
LightModel.text_color = {
|
|
[1] = ColorUtil.BLUE_DARK,
|
|
[2] = ColorUtil.PURPLE_DARK,
|
|
[3] = ColorUtil.ORANGE_DARK
|
|
}
|
|
|
|
function LightModel:__init()
|
|
LightModel.Instance = self
|
|
self:ResetData()
|
|
end
|
|
|
|
function LightModel:ResetData()
|
|
self.light_info = {}--幻光信息
|
|
self.red_light_active = {}--幻光红点
|
|
self.red_light_upgrade = {}--幻光红点
|
|
end
|
|
|
|
function LightModel:GetInstance()
|
|
if LightModel.Instance == nil then
|
|
LightModel.Instance = LightModel.New()
|
|
end
|
|
return LightModel.Instance
|
|
end
|
|
|
|
function LightModel:getInstance()
|
|
if LightModel.Instance == nil then
|
|
LightModel.Instance = LightModel.New()
|
|
end
|
|
return LightModel.Instance
|
|
end
|
|
|
|
--登陆天数,幻光要用自己的登陆天数计算
|
|
function LightModel:GetLoginDay( )
|
|
return self.login_day or 0
|
|
end
|
|
function LightModel:SetLoginDay( value )
|
|
self.login_day = value
|
|
end
|
|
|
|
function LightModel:GetLightInfo( )
|
|
return self.light_info or {}
|
|
end
|
|
function LightModel:SetLightInfo( value )
|
|
self.light_info = value
|
|
end
|
|
function LightModel:GetLightInfoOne( id )
|
|
if not id then return end
|
|
local base_info = self:GetLightInfo()
|
|
for k,v in pairs(base_info) do
|
|
if v.id == id then
|
|
return v
|
|
end
|
|
end
|
|
end
|
|
function LightModel:GetLightUsingSkin( )
|
|
local info = self:GetLightInfo( )
|
|
if info then
|
|
for k,v in pairs(info) do
|
|
if v.display == 1 then
|
|
return v.id
|
|
end
|
|
end
|
|
end
|
|
return 0
|
|
end
|
|
--获取单条基础配置
|
|
function LightModel:GetLightConfOne( id )
|
|
if not id then return false end
|
|
return Config.Visus[id]
|
|
end
|
|
--获取单条等级配置
|
|
function LightModel:GetLightLvConfOne( id,grade,lv )
|
|
if not id then return false end
|
|
grade = grade or 0
|
|
lv = lv or 0
|
|
return Config.Visuslv[id.. "@" .. grade .. "@" .. lv]
|
|
end
|
|
--判断幻光是否满级
|
|
function LightModel:GetLightIsMax( id )
|
|
local data = self:GetLightInfoOne(id)
|
|
if not data then return end
|
|
local conf_cur = self:GetLightLvConfOne( id,data.grade,data.lv )
|
|
if not conf_cur then return true end--找不到配置跳出
|
|
if tonumber(conf_cur.next_grade) == 0 and tonumber(conf_cur.next_lv) == 0 then
|
|
return true
|
|
else
|
|
return false
|
|
end
|
|
end
|
|
|
|
--幻光是否已激活
|
|
function LightModel:GetLightIsActive( id )
|
|
local data = self:GetLightInfoOne(id)
|
|
if data and data.state == 1 then
|
|
return true
|
|
else
|
|
return false
|
|
end
|
|
end
|
|
|
|
function LightModel:GetLightShowTabInfo( )
|
|
if not self.light_show_tab_conf_list then
|
|
self.light_show_tab_conf_list = {}
|
|
for k,v in pairs(Config.Visus) do
|
|
table.insert( self.light_show_tab_conf_list, v )
|
|
end
|
|
local function sort_call( a,b )
|
|
return a.id < b.id
|
|
end
|
|
table.sort( self.light_show_tab_conf_list, sort_call )
|
|
end
|
|
return self.light_show_tab_conf_list
|
|
end
|
|
|
|
--获取幻光列表
|
|
function LightModel:GetLightSubTabInfo( main_type )
|
|
local data = {}
|
|
for k,v in pairs(Config.Visus) do
|
|
-- if v.type == main_type then--现在不需要做分类了
|
|
table.insert( data, v )
|
|
-- end
|
|
end
|
|
-- 特殊排序规则
|
|
-- 由低品质到高品质从上到下,同品质内按类型字数字大小排序
|
|
local function sort_call( a,b )
|
|
return a.color < b.color or (a.color == b.color and a.type < b.type)
|
|
end
|
|
table.sort( data, sort_call )
|
|
return data
|
|
end
|
|
|
|
--幻光激活判断
|
|
function LightModel:CanLightActive( check_new,id )
|
|
if not id then return false end
|
|
if check_new then
|
|
self.red_light_active[id] = false
|
|
local data = self:GetLightInfoOne( id )
|
|
if data and data.state == 1 then
|
|
--有数据说明已经激活
|
|
elseif data and data.state == 0 then
|
|
self.red_light_active[id] = true
|
|
else
|
|
local conf = self:GetLightConfOne( id )
|
|
if conf and conf.item then
|
|
local cost = stringtotable(conf.item)
|
|
if TableSize(cost) > 0 then
|
|
self.red_light_active[id] = GoodsModel:GetEnough( conf.item )
|
|
end
|
|
end
|
|
end
|
|
end
|
|
return self.red_light_active[id]
|
|
end
|
|
|
|
--幻光升级判断
|
|
function LightModel:CanLightUpGrade( check_new,id )
|
|
if not id then return false end
|
|
if check_new then
|
|
self.red_light_upgrade[id] = false
|
|
local data = self:GetLightInfoOne( id )
|
|
if data then
|
|
if self:CanLightActive(check_new,id) or self:GetLightIsMax(id) then
|
|
else
|
|
--判断材料
|
|
local conf = self:GetLightLvConfOne( id,data.grade,data.lv )
|
|
if conf then
|
|
self.red_light_upgrade[id] = GoodsModel:GetEnough( conf.cost )
|
|
end
|
|
end
|
|
end
|
|
end
|
|
return self.red_light_upgrade[id]
|
|
end
|
|
|
|
function LightModel:GetLightOneRed( check_new,id )
|
|
if not id then return false end
|
|
if check_new then
|
|
self.red_light_active[id] = self:CanLightActive(check_new,id)
|
|
self.red_light_upgrade[id] = self:CanLightUpGrade(check_new,id)
|
|
end
|
|
return self.red_light_active[id] or self.red_light_upgrade[id]
|
|
end
|
|
|
|
function LightModel:GetLightAllRed( check_new )
|
|
if GetModuleIsOpen(147,nil,true) then
|
|
-------------------------
|
|
local base = self:GetLightShowTabInfo()
|
|
if check_new then
|
|
self.red_light_active = {}
|
|
self.red_light_upgrade = {}
|
|
for k,v in pairs(base) do
|
|
self:GetLightOneRed(check_new,v.id)
|
|
end
|
|
end
|
|
-------------------------
|
|
for k,v in pairs(base) do
|
|
if self:GetLightOneRed(false,v.id) then
|
|
return true
|
|
end
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
function LightModel:GetLightAllActive(check_new)
|
|
local base = self:GetLightShowTabInfo()
|
|
if check_new then
|
|
self.red_light_active = {}
|
|
for k,v in pairs(base) do
|
|
self:CanLightActive(check_new,v.id)
|
|
end
|
|
end
|
|
-------------------------
|
|
for k,v in pairs(base) do
|
|
if self:CanLightActive(false,v.id) then
|
|
return true
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
function LightModel:GetLightAllUpGrade(check_new)
|
|
local base = self:GetLightShowTabInfo()
|
|
if check_new then
|
|
self.red_light_upgrade = {}
|
|
for k,v in pairs(base) do
|
|
self:CanLightUpGrade(check_new,v.id)
|
|
end
|
|
end
|
|
-------------------------
|
|
for k,v in pairs(base) do
|
|
if self:CanLightUpGrade(false,v.id) then
|
|
return true
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
function LightModel:GetLightResById( id )
|
|
local conf = self:GetLightConfOne( id )
|
|
if conf and conf.figure then
|
|
return "effect_role_glow" .. conf.figure
|
|
else
|
|
return ""
|
|
end
|
|
end
|
|
|