PetEvolvePreView = PetEvolvePreView or BaseClass(BaseView) local PetEvolvePreView = PetEvolvePreView function PetEvolvePreView:__init() self.base_file = "pet" self.layout_file = "PetEvolvePreView" self.layer_name = "Activity" self.destroy_imm = true self.use_background = true self.change_scene_close = true self.hide_maincancas = true -- self.append_to_ctl_queue = true --是否要添加进界面堆栈 self.need_show_money = false --是否要显示顶部的金钱栏 self.is_set_zdepth = true self.click_bg_toClose = false self.close_fog = true self.click_bg_toClose = true self.blur_activity_bg = true -- self.use_show_anim = true -- self.use_hide_anim = true self.model = PetModel:getInstance() self.skill_item_list = {} 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 PetEvolvePreView:Open(pet_id) self.pet_id = pet_id BaseView.Open(self) end function PetEvolvePreView:LoadSuccess() local nodes = { "skillCon",--技能图标容器 "modelCon1","modelCon2","modelCon3",--形象容器 "desCon/Text_2:tmp", "desCon/Text_4:tmp", "confirmBtn:obj", "name:tmp", "raceIcon:img", } self:GetChildren(nodes) local close_callback = function() self:Close() end self.tabWindowComponent = UITabWindow.New(self.transform, nil, nil, close_callback, self.background_wnd, self.transform,UITabWindow.SizeSmallNoTab,nil,nil,nil) self.tabWindowComponent:SetBackgroundRes("pet_preview_bg") self.tabWindowComponent:SetTitleText("进化预览") -- local function bg_back_func( ... ) -- if self.background_wnd and self.background_wnd:GetComponent("RawImageExtend") then -- self:MoveUIToBack(self.background_wnd:GetComponent("RawImageExtend")) -- end -- self:MoveUIToBack(self.tabWindowComponent.win_bg) -- end -- if self.background_wnd then -- bg_back_func() -- else -- self.bg_back_func = bg_back_func -- end end function PetEvolvePreView:AddEvent() local on_click = function ( click_obj ) if self.confirmBtn_obj == click_obj then self:Close() end end AddClickEvent(self.confirmBtn_obj, on_click,LuaSoundManager.SOUND_UI.NONE) end function PetEvolvePreView:OpenSuccess() self:UpdateView() end function PetEvolvePreView:UpdateView() self:UpdateFigure() self:UpdateSkillCon() local star_1 = self.model:GetStarCanUnlockFigure(self.pet_id,2) local star_2 = self.model:GetStarCanUnlockFigure(self.pet_id,3) self.Text_2_tmp.text = star_1 self.Text_4_tmp.text = star_2 local pet_cfg = self.model:GetPetCfg(self.pet_id, 1) lua_resM:setImageSprite(self, self.raceIcon_img, "pet_asset", "pet_race_"..pet_cfg.pet_race,true) self.name_tmp.text = Trim(pet_cfg.pet_name) SetAnchoredPositionX(self.raceIcon,7-self.name_tmp.preferredWidth/2-20) end --模型展示 function PetEvolvePreView:UpdateFigure( ) local pet_cfg_1 = self.model:GetPetCfg(self.pet_id, 1) local pet_cfg_2 = self.model:GetPetCfg(self.pet_id, 6) local pet_cfg_3 = self.model:GetPetCfg(self.pet_id, 11) -- 发行绿幕特殊处理 -- 由于进化预览界面有可能出现在图鉴界面上,加之这是三个模型的展示,需要特殊处理 local loaded_model_num = 0 local function green_screen_callback() if LoginModel.ENABLE_GREEN_SCREEN then loaded_model_num = loaded_model_num + 1 if loaded_model_num >= 3 then -- 当前是3个模型,完全加载完后再开启绿屏 local function delay_method( ) CheatModel:getInstance():SetupGreenScreenEffect( true, { lua_resM:GetPartModel(self, self.modelCon1), lua_resM:GetPartModel(self, self.modelCon2), lua_resM:GetPartModel(self, self.modelCon3) }, 2, true ) end if self.gs_delay_id then GlobalTimerQuest:CancelQuest(self.gs_delay_id) self.gs_delay_id = nil end self.gs_delay_id = setTimeout(delay_method, 0.02) end end end local res_data = { layer_name = "Activity", father_node = self, transform = self.modelCon1, fashion_type = FuncOpenModel.TypeId.Pet, figure_id = pet_cfg_1.figure_id, scale = PetConst.ModelShowConfig[pet_cfg_1.figure_id] and PetConst.ModelShowConfig[pet_cfg_1.figure_id].scale*0.8 or PetConst.ModelShowConfig[1001].scale*0.8, position = Vector3(0,-160,-500), -- position = Vector3(-15,90,0), raycast_size = Vector2(200,260), ui_model_type = UIModelCommon.ModelType.Model, callBack = green_screen_callback, } FuncOpenModel:getInstance():SetModelRes(res_data) local res_data = { layer_name = "Activity", father_node = self, transform = self.modelCon2, fashion_type = FuncOpenModel.TypeId.Pet, figure_id = pet_cfg_2.figure_id, scale = PetConst.ModelShowConfig[pet_cfg_2.figure_id] and PetConst.ModelShowConfig[pet_cfg_2.figure_id].scale*0.8 or PetConst.ModelShowConfig[1001].scale*0.8, position = Vector3(0,-160,-500), -- position = Vector3(0,90,0), raycast_size = Vector2(200,260), ui_model_type = UIModelCommon.ModelType.Model, callBack = green_screen_callback, } FuncOpenModel:getInstance():SetModelRes(res_data) local res_data = { layer_name = "Activity", father_node = self, transform = self.modelCon3, fashion_type = FuncOpenModel.TypeId.Pet, figure_id = pet_cfg_3.figure_id, scale = PetConst.ModelShowConfig[pet_cfg_3.figure_id] and PetConst.ModelShowConfig[pet_cfg_3.figure_id].scale*0.8 or PetConst.ModelShowConfig[1001].scale*0.8, position = Vector3(0,-160,-500), -- position = Vector3(25,90,0), raycast_size = Vector2(200,260), ui_model_type = UIModelCommon.ModelType.Model, callBack = green_screen_callback, } FuncOpenModel:getInstance():SetModelRes(res_data) end --技能展示 function PetEvolvePreView:UpdateSkillCon( ) local skill_table = {} for i=1,4 do local data = self.model:GetPetSkillCfg(self.pet_id,i)--通过id和槽位获取技能配置 if data then table.insert(skill_table,data) end end local pet_data = self.model:GetPetListById(self.pet_id) local pet_stage = pet_data and pet_data.pet_stage or 0 local pet_star = pet_data and pet_data.pet_star or 0 for k,v in pairs(self.skill_item_list) do v:SetVisible(false) end for i,v in ipairs(skill_table) do local item = self.skill_item_list[i] if not item then item = PetSkillItem.New(self.skillCon) self.skill_item_list[i] = item end item:SetVisible(true) item:SetData(v,self.pet_id,2) item:SetPosition(7+83*(i-1),1) end end function PetEvolvePreView:DestroySuccess( ) for i, v in ipairs(self.skill_item_list) do v:DeleteMe() end self.skill_item_list = {} if self.tabWindowComponent then self.tabWindowComponent:DeleteMe() self.tabWindowComponent = nil end -- 复原绿屏,同样要特殊处理 if LoginModel.ENABLE_GREEN_SCREEN then if self.gs_delay_id then GlobalTimerQuest:CancelQuest(self.gs_delay_id) self.gs_delay_id = nil end if PetController.Instance.pet_base_view and PetController.Instance.pet_base_view:HasOpen() then -- 存在绿屏的主界面 CheatModel:getInstance():DisabledGreenScreenEffect(true) LoginModel.ENABLE_GREEN_SCREEN = true -- 重新加载界面 PetController.Instance.pet_base_view:SwitchTab(PetController.Instance.pet_base_view.current_index) else CheatModel:getInstance():DisabledGreenScreenEffect() end end end