CSMainRoleModelItem = CSMainRoleModelItem or BaseClass(BaseItem) local CSMainRoleModelItem = CSMainRoleModelItem function CSMainRoleModelItem:__init() self.base_file = "csMain" self.layout_file = "CSMainRoleModelItem" self.model = CSMainModel:getInstance() self:Load() end function CSMainRoleModelItem:Load_callback() self.nodes = { "modelCon:obj", "emptyRole:img:obj", "name:tmp", "designationImg:img", } self:GetChildren(self.nodes) self.name_tmp.text = "<#a9c1e1>虚位以待" lua_resM:setOutsideImageSprite(self, self.emptyRole_img, GameResPath.GetCSMainImage("cs_main_empty_role")) SetLocalScale(self.emptyRole,0.75,0.75,0.75) SetAnchoredPositionY(self.designationImg,150) SetAnchoredPositionY(self.name,100) -- SetLocalPositionZ(self.name,-1000) self:AddEvents() if self.need_refreshData then self:UpdateView() end end function CSMainRoleModelItem:AddEvents( ) --60306刷新figure local function on_update_role_show(role_id) if not self.is_loaded then return end if role_id == self.data.rid then self.data = self.model:GetCSMainDirectorDataByPos(self.index) self:UpdateRoleShow() end end self:BindEvent(self.model, CSMainConst.UPDATE_CS_MAIN_BASE_VIEW_ROLE_REQUEST, on_update_role_show) end function CSMainRoleModelItem:UpdateView( ) local need_request_figure_1 = self.data.rid ~= 0 and self.data.role_id == 0 --位置不为空但figure为空需要重新请求 local need_request_figure_2 = self.data.rid ~= 0 and TimeUtil:getServerTime() - self.data.time >= 1800 --figure消息过时30分钟以上需要重新请求 if need_request_figure_1 or need_request_figure_2 then self.model:Fire(CSMainConst.REQUEST_CCMD_EVENT,60306,self.data.rid) else self:UpdateRoleShow() end local dsgt_type = self.index <= 3 and 1 or 2 local dsgt_id = self.model:GetCSMainDsgtId(dsgt_type) local data = { parent = self, dress_id = dsgt_id, designationImg = self.designationImg, scale = 0.9, } FuncOpenModel:getInstance():ShowDesign(data) SetAnchoredPositionY(self.emptyRole, CSMainConst.RoleModelPos[self.index].empty_role_y) end function CSMainRoleModelItem:UpdateRoleShow( ) local is_empty_role = self.data.rid == 0 self.modelCon_obj:SetActive(not is_empty_role) self.emptyRole_obj:SetActive(is_empty_role) if not is_empty_role then self.name_tmp.text = self.data.name else self.name_tmp.text = "<#a9c1e1>虚位以待" end if not is_empty_role then --clothe_res_id如果为空加载模型会报错,这里检查一下,是不是有问题 local clothe_res_id = GetRoleClotheId(self.data.level_model_list) if not clothe_res_id then--如果后端发的figure的clothe_res_id不正常,手动修复一下 self.data.level_model_list = { [1] = {part_pos = 1, level_model_id = self.data.career*1000}, [2] = {part_pos = 2, level_model_id = self.data.career*1000}, [3] = {part_pos = 3, level_model_id = self.data.career*1000}, [4] = {part_pos = 5, level_model_id = self.data.career*1000}, } end local role_y = CSMainConst.RoleModelPos[self.index].role_y -- if self.index == 1 then -- role_y = role_y + 15 -- end local res_data = { father_node = self, transform = self.modelCon, -- layer_name = "Activity", fashion_type = FuncOpenModel.TypeId.Clothes, role_vo = self.data, scale = CSMainConst.RoleModelPos[self.index].scale, raycast_size = Vector2(0,0), ui_model_type = UIModelCommon.ModelType.Model, position = Vector3(0, role_y, CSMainConst.RoleModelPos[self.index].model_z_depth) } FuncOpenModel:getInstance():SetModelRes(res_data) end end function CSMainRoleModelItem:SetData(index,data) self.index = index self.data = data if self.is_loaded then self.need_refreshData = false self:UpdateView() else self.need_refreshData = true end end function CSMainRoleModelItem:__delete( ) end