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