--社团协助感谢界面 GuildSupportThankView = GuildSupportThankView or BaseClass(BaseView) local GuildSupportThankView = GuildSupportThankView function GuildSupportThankView:__init() self.base_file = "guild" self.layout_file = "GuildSupportThankView" self.layer_name = "Top" self.is_set_zdepth = true self.use_background = true self.click_bg_toClose = true self.hide_maincancas = false self.blur_activity_bg = true self.use_show_anim = true self.use_hide_anim = true self.model = GuildModel:getInstance() self.view_type = GuildModel.SupportType.Thank--默认是感谢界面如果是2的话就是 self.item_list = {} self.award_item_list = {} self.choose_desc_id = 1 self.choose_open = false self.load_callback = function () self:LoadSuccess() self:AddEvent() self:UpdateView( ) end self.open_callback = function ( ) self:OpenSuccess() end self.destroy_callback = function ( ) self:DestroySuccess() end end function GuildSupportThankView:DestroySuccess() if self.roleItem then self.roleItem:DeleteMe() self.roleItem = nil end if self.vipItem then self.vipItem:DeleteMe() self.vipItem = nil end if self.awardItem1 then UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.awardItem1) self.awardItem1 = nil end if self.awardItem2 then UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.awardItem2) self.awardItem2 = nil end for k, v in ipairs(self.award_item_list) do UIObjPool:PushItem(UIObjPool.UIType.AwardItem, v) end self.award_item_list = {} for k, v in ipairs(self.item_list) do v:DeleteMe() v = nil end self.item_list = {} end function GuildSupportThankView:LoadSuccess() local nodes = { "lb1:tmp","addFriendBtn:obj:img","goods_con1:obj","thankBtn/thankBtnText:tmp", "thankBtn:obj","goods_con2:obj","myText:obj:tmp","youText:tmp","lb2:tmp","itemScroll", "addFriendBtn/addFriendBtnText:tmp","bg:raw","bg_title:raw", "tip:tmp","lbImg2:obj", "itemScroll/Viewport/itemCon", "line3:obj","oneItemCon/nameCon/vipCon/vip:img", --单个节点 "oneItemCon/oneFriendBtn:obj", "oneItemCon/nameCon/name:tmp","awardCon", "oneItemCon/nameCon/sexCon/sex:img", "oneItemCon:obj", "oneItemCon/headCon", } self:GetChildren(nodes) self.myText_tmp.text = "你的\n奖励" self.tip_tmp.text = "点击空白位置关闭" self.awardItem1 = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem,self.goods_con1) self.awardItem1:SetItemSize(78, 78) self.awardItem2 = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem,self.goods_con2) self.awardItem2:SetItemSize(78, 78) lua_resM:setOutsideRawImage(self, self.bg_raw, GameResPath.GetViewBigBg("guild_support_thank_bg")) local info = self.data.role_list local need_add_friend = false if info then for i,v in ipairs(info) do local is_friend = SocialityModel.Instance:IsRelaviveType(v.role_id, Config.ConfigSocial.RelativeType.friend) local is_black = SocialityModel.Instance:IsRelaviveType(v.role_id, Config.ConfigSocial.RelativeType.black) if not is_friend and not is_black then need_add_friend = true break end end end self.need_add_friend = need_add_friend if self.view_type == GuildModel.SupportType.Thank then--界面是感谢状态 lua_resM:setOutsideRawImage(self, self.bg_title_raw, GameResPath.GetGuildImage("guild_support_thank_title"),true) self.myText_obj:SetActive(true) self.goods_con1_obj:SetActive(true) self.lbImg2_obj:SetActive(true) self.line3_obj:SetActive(true) SetAnchoredPosition(self.youText,35,-62) SetAnchoredPosition(self.goods_con2,705,-383) SetAnchoredPosition(self.lb2,644,-499) self.thankBtnText_tmp.text = "发送感谢" self.lb2_tmp.text = "感谢协助双方均可获得奖励" self.youText_tmp.text = "对方\n奖励" -- 展示添加好友按钮 -- self.addFriendBtn_obj:SetActive(true) else--界面是领奖展示状态 lua_resM:setOutsideRawImage(self, self.bg_title_raw, GameResPath.GetGuildImage("guild_support_thank_title2"),true) self.myText_obj:SetActive(false) self.goods_con1_obj:SetActive(false) self.lbImg2_obj:SetActive(false) self.line3_obj:SetActive(false) self.goods_con2_obj:SetActive(false) self.addFriendBtn_obj:SetActive(false) SetAnchoredPosition(self.goods_con2,781,-413) SetAnchoredPosition(self.lb2,631,-384) SetAnchoredPosition(self.youText,-9,-146) SetAnchoredPositionX(self.thankBtn, -10) self.thankBtnText_tmp.text = "收下谢礼" self.lb2_tmp.text = "对方给您发了协助奖励" self.youText_tmp.text = "协助奖励" end if self.need_refreshData then self:UpdateView( ) end end function GuildSupportThankView:AddEvent() local function onBtnClickHandler(target,x,y) if target == self.addFriendBtn_obj then--一键加好友 if not self.need_add_friend then Message.show("暂无好友可加", "fault") return end local info = self.data.role_list for i,v in ipairs(info) do local is_friend = SocialityModel.Instance:IsRelaviveType(v.role_id, Config.ConfigSocial.RelativeType.friend) local is_black = SocialityModel.Instance:IsRelaviveType(v.role_id, Config.ConfigSocial.RelativeType.black) if not is_friend and not is_black then SocialityModel:getInstance():Fire(SocialityModel.REQUEST_CCMD_EVENT, 14003, v.role_id) end end elseif target == self.thankBtn_obj then--感谢或者确认 if self.view_type == GuildModel.SupportType.Thank then self.model:Fire(GuildModel.REQUEST_CCMD_EVENT, 40050, GuildModel.SupportThankType.Normal, self.data.support_id, "")--这里标记一下发协助ID else self.model:Fire(GuildModel.REQUEST_CCMD_EVENT, 40070, self.data.type, self.data.support_id)--这里标记一下发协助ID end elseif target == self.oneFriendBtn_obj then--单个玩家加好友 if self.one_data and self.one_data.role_id then SocialityModel:getInstance():Fire(SocialityModel.REQUEST_CCMD_EVENT, 14003, self.one_data.role_id) end end end AddClickEvent(self.addFriendBtn_obj, onBtnClickHandler) AddClickEvent(self.thankBtn_obj, onBtnClickHandler, LuaSoundManager.SOUND_UI.NONE) AddClickEvent(self.oneFriendBtn_obj, onBtnClickHandler, LuaSoundManager.SOUND_UI.NONE) --2021.4.14改版 local function updateViewFunc( ) self:UpdateView() end -- self:BindEvent(self.model,GuildModel.UPDATE_GUILD_SUPPOR_THANK_INFO, updateViewFunc)--刷新 self:BindEvent(SocialityModel:getInstance(),SocialityModel.UPDATE_SOCIALITY_VIEW, updateViewFunc)--刷新 -- local function updateViewDesc( index ) -- if not self.is_loaded then return end -- self.choose_desc_id = index -- end -- self:BindEvent(self.model,GuildModel.UPDATE_GUILD_SUPPOR_THANK_DESC, updateViewDesc)--刷新 end function GuildSupportThankView:Open(view_type,data) self.view_type = view_type or self.view_type self.data = data print("huangcong:GuildSupportThankView [start:175] self.data:", self.data) PrintTable(self.data) print("huangcong:GuildSupportThankView [end]") BaseView.Open(self) end function GuildSupportThankView:OpenSuccess( ) -- self:UpdateView() end function GuildSupportThankView:UpdateView( ) if self.is_loaded then self.need_refreshData = false else self.need_refreshData = true return end if not self.data then return end if self.data.chat_msg then -- self.desc_tmp.text = self.data.chat_msg end if self.data.type == GuildModel.SupportThankType.SpellList then--社团派单走这里 self.cfg = Config.Guildorder[self.data.support_cfg_id] if not self.cfg then print("社团派单配置不存在:", self.data.support_cfg_id) return end if self.data.role_list[1] and self.data.role_list[1].name then self.lb1_tmp.text = string.format("感谢您协助拼单:%s",HtmlColorTxt(Trim(self.cfg.name), GuildModel.SpellListColor[self.cfg.color])) end else self.cfg = self.model:GetGuildSupportCfg(self.data.support_cfg_id) if not self.cfg then print("协助配置不存在 Id:", self.data.support_cfg_id) return end local goods_cfg1 = self.cfg.thank_reward if goods_cfg1 and goods_cfg1[1] then local typeId, lock = GoodsModel:getInstance():GetMappingTypeId(goods_cfg1[1][1],goods_cfg1[1][2]) self.awardItem1:SetData(typeId,goods_cfg1[1][3]) end local goods_cfg2 = self.cfg.support_reward if goods_cfg2 and goods_cfg2[1] then local typeId, lock = GoodsModel:getInstance():GetMappingTypeId(goods_cfg2[1][1],goods_cfg2[1][2]) self.awardItem2:SetData(typeId,goods_cfg2[1][3]) end local boss_id = self.data.boss_id if not boss_id then for i,v in ipairs(self.data.extra_value) do if v.key == 1 then boss_id = v.value end end end local boss_type_name = "" local monster_name = "" if self.data.support_cfg_id == GuildSupportInfoItem.CFG_TYPE.MONEY_BOSS or self.data.support_cfg_id == GuildSupportInfoItem.CFG_TYPE.DESERTED_BOSS then --Boss形象 local monster = ConfigItemMgr.Instance:GetMonsterDataItem(boss_id) if not monster then print('----HC GuildSupportThankView.lua -- 没有找到怪物配置=') return end local boss_type = BossModel:GetInstance():GetBossTypeByBossId( boss_id ) boss_type_name = self.model:GetSupportTypeName(boss_type) or "" monster_name = monster.name end local support_text = GuildModel.SupportTypeStr[self.data.support_cfg_id] or "协助击杀" if self.view_type == GuildModel.SupportType.Thank then self.lb1_tmp.text = string.format("以下成员%s%s:%s",support_text,boss_type_name,HtmlColorTxt(monster_name, ColorUtil.PURPLE_DARK)) else if self.data.role_list[1] and self.data.role_list[1].name then self.lb1_tmp.text = string.format("感谢您%s%s:%s",support_text,boss_type_name,HtmlColorTxt(monster_name, ColorUtil.PURPLE_DARK)) end end end self:UpdateItemList() self:UpdateThankBtnAndAddBtnPos() if self.view_type ~= GuildModel.SupportType.Thank then self:UpdateAwardList() else for k,v in pairs(self.award_item_list) do v:SetVisible(false) end end end function GuildSupportThankView:BtnCloseEvt()--关闭按钮回调 self:Close() end function GuildSupportThankView:UpdateItemList( ) local info = self.data.role_list if not info or #info == 0 then return end if #info == 1 then self.one_data = info[1] self.oneItemCon_obj:SetActive(true) self:UpdateOneItemInfo() return else self.oneItemCon_obj:SetActive(false) self.one_data = nil end local item local offer_x = 90 local offer_y = 0 for k, v in ipairs(info) do item = self.item_list[k] if not item then item = GuildSupportThankItem.New(self.itemCon) self.item_list[k] = item end item:SetData(v, k) item:SetPosition(1, -GuildSupportThankItem.Height*(k - 1) - 1) item:SetVisible(true) end SetSizeDeltaY(self.itemCon,GuildSupportThankItem.Height*#info) end function GuildSupportThankView:UpdateOneItemInfo( ) if not self.one_data or not self.one_data.name then return end --以下就是玩家的个人数据 local is_friend = SocialityModel.Instance:IsRelaviveType(self.one_data.role_id, Config.ConfigSocial.RelativeType.friend) local is_black = SocialityModel.Instance:IsRelaviveType(self.one_data.role_id, Config.ConfigSocial.RelativeType.black) self.oneFriendBtn_obj:SetActive(not is_friend and not is_black) self.name_tmp.text = self.one_data.name if not self.vipItem then self.vipItem = RoleVipItem.New(self.vip) end self.vipItem:SetData(self.one_data.vip_flag, self.one_data.sup_vip_type) if not self.roleItem then self.roleItem = HeadRoleItem.New(self.headCon) self.roleItem:SetItemSize(85,85) end local role_lv = WordManager:GetRoleLevel(self.one_data.level, self.one_data.turn) local head_data = { vo = { id = self.one_data.role_id, server_id = self.one_data.server_num, -- career = self.one_data.career, sex = self.one_data.sex, turn = self.one_data.turn, picture_ver = self.one_data.picture_ver, picture = self.one_data.picture, profile_photo_id = self.one_data.profile_photo_id, dress_board_id = self.one_data.dress_board_id or self.one_data.dress_id, level = self.one_data.level, empty_head = false, -- 是否是空数据头像 } } self.roleItem:SetData(head_data) local function callback( ... ) SetSizeDeltaX(self.name,self.name_tmp.preferredWidth+2) end if self.one_data.sex then lua_resM:setImageSprite(self, self.sex_img, "common_asset", self.one_data.sex == 1 and "com_boy" or "com_girl", true,callback) end end function GuildSupportThankView:UpdateAwardList( ) for k,v in pairs(self.award_item_list) do v:SetVisible(false) end local data = self.cfg.support_reward if self.data.type == GuildModel.SupportThankType.SpellList then--社团派单走这里 data = stringtotable(self.cfg.order_reward) end if not data or TableSize(data) == 0 then return end -- print("huangcong:CompetingListCon [50]data: ",data) -- PrintTable(data) local len = #data for i=1, len do local goods_cfg = data[i] if goods_cfg then local good_id,is_locked = GoodsModel:getInstance():GetMappingTypeId(goods_cfg[1],goods_cfg[2]) local item = self.award_item_list[i] if not item then item = UIObjPool:PopItem(UIObjPool.UIType.AwardItem,self.awardCon) item:SetItemSize(78,78) self.award_item_list[i] = item end item:SetPosition(88*(i-1),-1) item:SetVisible(true) item:SetData(good_id, goods_cfg[3], nil,nil,is_locked,nil,nil) end end self.awardCon.sizeDelta = Vector2(88*len,80) local sum_x = 88*len local size_x = 385--y66 if sum_x < size_x then local offer_x = (size_x - sum_x)/2 + 5 for i,v in ipairs(self.award_item_list) do local pos = v:GetPosition() v:SetPosition(pos.x+offer_x,pos.y) end end end -- 更新发起感谢和一键加好友按钮的位置和显示 function GuildSupportThankView:UpdateThankBtnAndAddBtnPos( ) if self.need_add_friend then self.addFriendBtn_obj:SetActive(true) SetAnchoredPositionX(self.thankBtn, -98) else self.addFriendBtn_obj:SetActive(false) SetAnchoredPositionX(self.thankBtn, -10) end end