源战役客户端
25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 
 
 
 

257 satır
7.2 KiB

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