PetShareLookView = PetShareLookView or BaseClass(BaseView) local PetShareLookView = PetShareLookView function PetShareLookView:__init() self.base_file = "pet" self.layout_file = "PetShareLookView" 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 --16311 function PetShareLookView:Open(vo) self.data = vo self.data.pet_stage = math.ceil((vo.pet_star-0.5)/5) BaseView.Open(self) end function PetShareLookView:LoadSuccess() local nodes = { "modelCon", "sexFlag:img", "raceIcon:img", "skillCon", "attrScrollView/Viewport/Content", "attrScrollView", "playerHeadCon", "playerVipCon", "petName:tmp", "petPower:txt", "playerPower:tmp", "playerName:tmp", "petPowerLabel", } 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_share_look_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 self.star = {}--星级 for i=1,5 do self.star[i] = self:GetChild("starCon/star"..i):GetComponent("Image") end self.roleItem = HeadRoleItem.New(self.playerHeadCon) self.roleItem:SetItemSize(84,84) self.vipItem = RoleVipItem.New(self.playerVipCon) end function PetShareLookView:AddEvent() end function PetShareLookView:OpenSuccess() local pet_cfg = self.model:GetPetCfg(self.data.pet_id, self.data.pet_star) --星级 local max_star = self.model:GetMaxStarInStage(self.data.pet_id,self.data.pet_star) local show_star = self.model:GetNowShowPetStar(self.data.pet_star) for i=1,show_star do lua_resM:setImageSprite(self, self.star[i], "pet_asset", PetConst.stage_message[self.data.pet_stage].star_res,true) self.star[i].gameObject:SetActive(true) end for i=show_star+1,max_star do self.star[i].gameObject:SetActive(false) end --名字 self.petName_tmp.text = Trim(pet_cfg.pet_name) SetAnchoredPositionX(self.raceIcon,-176-self.petName_tmp.preferredWidth/2-20) --种族 lua_resM:setImageSprite(self, self.raceIcon_img, "pet_asset", "pet_race_"..pet_cfg.pet_race,true) --战力 self.petPower_txt.text = self.data.pet_power SetAnchoredPositionX(self.petPowerLabel,265-self.petPower_txt.preferredWidth/2-56) --属性栏 先把data转换为我们可用的data local attr_data = {} for i,v in ipairs(self.data.attr_list) do attr_data[i] = {v.attr_id,v.attr_value} end self:UpdateAttrList(attr_data) --技能栏 self:UpdateSkillList() --宠物模型展示 local res_data = { layer_name = "Activity", father_node = self, transform = self.modelCon, fashion_type = FuncOpenModel.TypeId.Pet, figure_id = pet_cfg.figure_id, position = Vector3(0,-160,-500), ui_model_type = UIModelCommon.ModelType.Model, } FuncOpenModel:getInstance():SetModelRes(res_data) --玩家数据 local head_data = { vo = { id = self.data.role_id, server_id = self.data.ser_id, career = self.data.career, sex = self.data.sex, turn = self.data.turn, picture_ver = self.data.picture_ver, picture = self.data.picture, profile_photo_id = self.data.profile_photo_id, dress_board_id = self.data.dress_id, level = self.data.level, } } self.roleItem:SetData(head_data) self.playerName_tmp.text = self.data.name self.playerPower_tmp.text = self.data.fighting self.vipItem:SetData(self.data.vip_flag,self.data.sup_vip_type) if self.data.sex==1 then lua_resM:setImageSprite(self,self.sexFlag_img,"common_asset","com_boy",true) elseif self.data.sex==2 then lua_resM:setImageSprite(self,self.sexFlag_img,"common_asset","com_girl",true) end SetAnchoredPositionX(self.sexFlag,870+self.playerName_tmp.preferredWidth+3) end function PetShareLookView:UpdateAttrList(attr_list) if not self.attr_list_com then self.attr_list_com = self:AddUIComponent(UI.ItemListCreator) end local info = { data_list = attr_list, item_con = self.Content, item_class = PetShareAttrItem, -- item_width = 193, item_height = 49, space_x = -7, space_y = 0, start_x = 1, start_y = 0, scroll_view = self.attrScrollView, create_frequency = 0.01, on_update_item = function(item, i, v) item:SetData(i,v,true) end, } self.attr_list_com:UpdateItems(info) end function PetShareLookView:UpdateSkillList( ) local skill_table = {} for i=1,4 do local data = self.model:GetPetSkillCfg(self.data.pet_id,i,self.data.is_awaken==1)--通过id和槽位获取技能配置 if data then table.insert(skill_table,data) end end 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 = PetShareSkillItem.New(self.skillCon) self.skill_item_list[i] = item end item:SetVisible(true) item:SetData(v,self.data.pet_id,self.data) item:SetPosition(21+82*(i-1),12) end end function PetShareLookView:DestroySuccess( ) if self.roleItem then self.roleItem:DeleteMe() self.roleItem = nil end if self.vipItem then self.vipItem:DeleteMe() self.vipItem = nil end 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 end