--[[@------------------------------------------------------------------ @description:幻光激活展示界面 @author:huangcong ----------------------------------------------------------------------]] LightActiveView = LightActiveView or BaseClass(BaseView) local LightActiveView = LightActiveView function LightActiveView:__init() self.base_file = "light" self.layout_file = "LightActiveView" self.layer_name = "Activity" self.destroy_imm = true self.use_background = false self.append_to_ctl_queue = true --是否要添加进界面堆栈 self.need_show_money = false --是否要显示顶部的金钱栏 self.use_background = true self.hide_maincancas = true --全屏界面需要放开隐藏主UI self.append_to_ctl_queue = true --添加进入控制队列 self.item_list = {} self.model = LightModel:getInstance() self.load_callback = function () self:LoadSuccess() self:AddEvent() end self.open_callback = function ( ) self:OpenSuccess() end self.destroy_callback = function ( ) self:DestroySuccess() end end function LightActiveView:DestroySuccess( ) if self.time_id then TimerQuest.CancelQuest(GlobalTimerQuest, self.time_id) self.time_id = nil end end function LightActiveView:Open(cur_select_right) self.cur_select_right = cur_select_right or 1001 GlobalEventSystem:Fire(EventName.STOP_AUTO_DO_TASK) GlobalEventSystem:Fire(EventName.STOPAUTOFIGHT) --停止自动挂机 BaseView.Open(self) end function LightActiveView:OpenSuccess( ) self:UpdateView() end function LightActiveView:LoadSuccess() local nodes = { "bg:raw","closeBtn:obj","activeBtn:obj","roleCon", "attr_scroll", "attr_scroll/Viewport/attr_con", "powerText:txt", "skillDesc:txt", "lb_attr:txt", "skillName:txt", "lb_attr_des:txt", "lightNameImg:img", "skillImg:img","icon_special:img", "titleBg", } self:GetChildren(nodes) local function func( ... ) self:MoveUIToBack(self.bg, nil,nil, {alpha = 0.8}) self:MoveUIToBack(self.titleBg, nil,nil, {alpha = 0.8}) end lua_resM:setOutsideRawImage(self, self.bg_raw, GameResPath.GetViewBigBg("openFunc_light_bg"), false,func) if self.need_load_again then self:UpdateView() end end function LightActiveView:AddEvent() local on_click = function ( click_obj ) if self.closeBtn_obj == click_obj then--关闭按钮 self:Close() elseif self.activeBtn_obj == click_obj then--激活 self:Close() --如果是引导,则在退出,统一跳转 -- local helpVo = GuideModel:getInstance():GetHelpVo(HelpType.TYPE_LIGHT,1) -- if not helpVo then -- GlobalEventSystem:Fire(EventName.OPEN_NEW_MAIN_ROLE_VIEW,NewMainRoleModel.TabId.Light,nil,self.cur_select_right) -- end end end AddClickEvent(self.activeBtn_obj, on_click) AddClickEvent(self.closeBtn_obj, on_click) end function LightActiveView:UpdateView() if not self.is_loaded then self.need_load_again = true return end if not self.cur_select_right then print("huangcong:LightActiveView [start:95] 数据不正确:") return end self:ShowModel() self:UpdateSkill() self:UpdateAttrProp() self:UpdateSpeacielProp() lua_resM:setImageSprite(self, self.lightNameImg_img, "light_asset", "light_"..self.cur_select_right,true) end --更新技能 function LightActiveView:UpdateSkill( ) if not self.is_loaded then return end local conf = self.model:GetLightConfOne( self.cur_select_right ) if not conf then return end local skill_info = stringtotable(conf.skill) local skill_id = tonumber(skill_info[1]) local skill_conf = SkillManager:getInstance():getSkillFromConfig(skill_info[1]) self.skillName_txt.text = HtmlColorTxt(Trim(skill_conf.name or ""), "#ffde6c") --特殊写死,只需要描述的一部分 if skill_id == 120001 then self.skillDesc_txt.text = "攻击时有30%的概率令敌人流血,每秒损失1%气血" else self.skillDesc_txt.text = Trim(skill_conf.lvs[tonumber(skill_info[2])].desc or "") end lua_resM:setOutsideImageSprite(self, self.skillImg_img, GameResPath.GetSkillIcon(tonumber(skill_info[1])),true) end --更新属性列表 function LightActiveView:UpdateAttrProp( ) if not self.is_loaded then return end local basic = self.model:GetLightInfoOne( self.cur_select_right ) local grade,star = 0,0 if basic then grade = basic.grade star = basic.lv end ------------------------- local conf = self.model:GetLightLvConfOne( self.cur_select_right, grade, star ) if not conf then return end ------------------------- local base_attr = stringtotable(conf.attrs) self.powerText_txt.text = GetFighting(base_attr) --处理一下attr_list 改成两个一组 local count = math.ceil(#base_attr / 2) local new_base_attr = {} for i = 1, count do local data = { attr_id1 = base_attr[i*2-1] and base_attr[i*2-1][1] or nil, value1 = base_attr[i*2-1] and base_attr[i*2-1][2] or nil, next_value1 = base_attr[i*2-1] and base_attr[i*2-1][3] or nil, attr_id2 = base_attr[i*2] and base_attr[i*2][1] or nil, value2 = base_attr[i*2] and base_attr[i*2][2] or nil, next_value2 = base_attr[i*2] and base_attr[i*2][3] or nil, } table.insert(new_base_attr, data) end if not self.attr_list_com then self.attr_list_com = self:AddUIComponent(UI.ItemListCreator) end local info = { data_list = new_base_attr, item_con = self.attr_con, item_class = LightAttrItem, item_width = 430, item_height = 36, space_x = 0, start_x = 4, scroll_view = self.attr_scroll, create_frequency = 0.05, is_scroll_back_on_update = false, init_value = "LightActiveItem",--不同的预制 on_update_item = function(item, i, v) item:SetData(i,v,true) end, } self.attr_list_com:UpdateItems(info) end --更新特殊数 function LightActiveView:UpdateSpeacielProp( ) local basic = self.model:GetLightInfoOne( self.cur_select_right ) local grade,star = 0,0 if basic then grade = basic.grade star = basic.lv end ------------------------- --当前属性,下层属性 local lv_conf = self.model:GetLightLvConfOne( self.cur_select_right, grade, star ) if not lv_conf then return end --特殊属性 local temp_data2 = stringtotable(lv_conf.spe_attrs) if temp_data2[1] then local _, name1, _, val1 = WordManager:GetPropertyInfo(tonumber(temp_data[1][1]), tonumber(temp_data[1][2])) self.lb_attr_txt.text = name1 .. ":" .. val1 self.lb_attr_des_txt.text = "" SetAttrIconByColorType(self, self.icon_special_img, tonumber(temp_data[1][1]), nil, 2) else local min_val = 999 local min_grade,min_lv = 0,0 local attr_id = false for k,v in pairs(Config.Visuslv) do if v.id == self.cur_select_right then for a,b in pairs(stringtotable(v.spe_attrs)) do attr_id = attr_id or b[1] if b[1] == attr_id then if b[2] < min_val then min_val = b[2] min_grade = v.grade min_lv = v.lv end end end end end if attr_id then local _, name1, _, val1 = WordManager:GetPropertyInfo(attr_id, min_val) self.lb_attr_txt.text = name1 .. ":" .. val1 self.lb_attr_des_txt.text = "(" .. min_grade .. "阶" .. min_lv .. "星" .. "解锁)" SetAttrIconByColorType(self, self.icon_special_img, attr_id, nil, 2) else self.lb_attr_txt.text = "" self.lb_attr_des_txt.text = "" end end end function LightActiveView:ShowModel( ) if not self.is_loaded then return end local res_data = { father_node = self, transform = self.roleCon, fashion_type = FuncOpenModel.TypeId.Clothes, raycast_size = Vector2(0,0), scale = 210, position = Vector3(0,-80,-142), layer_name = "UI", ui_model_type = UIModelCommon.ModelType.BackModel, show_shadow = false, use_bloom = false, light_id = self.cur_select_right, } FuncOpenModel:getInstance():SetModelRes(res_data) end function LightActiveView:Close() --完成引导 local helpVo, endVo = GuideModel:getInstance():GetHelpVo(HelpType.TYPE_LIGHT,1) if helpVo then GlobalEventSystem:Fire(EventName.OPEN_NEW_MAIN_ROLE_VIEW,NewMainRoleModel.TabId.Light,nil,self.cur_select_right) GlobalEventSystem:Fire(EventName.FINISH_CURRENT_HELP_STEP,helpVo) end if not helpVo or endVo then GlobalEventSystem:Fire(EventName.START_AUTO_DO_TASK) --引导需要 保留 end BaseView.Close(self) self:ActivitySkill() end --关闭界面,直接激活节能 function LightActiveView:ActivitySkill() self.model:Fire(LightModel.REQUEST_CCMD_EVENT, 14703, self.cur_select_right) end