local UIGuildAlliesMainPanelNew = UIViewClass() local HeroPicPath = ConstAssetPathConfig.HeroPicPath local HeroIconPath = ConstAssetPathConfig.ItemIconPath ------------------------- 系统函数 -------------------------------- function UIGuildAlliesMainPanelNew:OnCreated() self:RegistSystemEvent(EventID.UI_GuildAlliesMainPanelNew_Refresh, self.RefreshPanel) self:RegistSystemEvent(EventID.UI_GuildAlliesMainPanelNew_RefreshTarget, self.RefreshTarget) self:RegistSystemEvent(EventID.UI_CloseAndRecoverView, self.OnCloseAndRecoverView) self.curGuildAllies = nil end function UIGuildAlliesMainPanelNew:OnOpened(context) UIUtils.SetLabelText(self.UITemplateTitlePanel.lab_Title, Const_IDS["IDS_GuildAllies_FunctionName"]) self.curGuildAllies = context MDL.GuildAllies.RequestGuildAllies(self.curGuildAllies.ID, true) end function UIGuildAlliesMainPanelNew:OnBackButtonPressed() self:OnButtonClicked(self.UITemplateTitlePanel.btn_close) end function UIGuildAlliesMainPanelNew:OnButtonClicked(comp) if comp == self.btn_Check then UIManager.OpenView(Const_UI_Lua.UIEnum.UIFriendshipRank, self.curGuildAllies) elseif comp == self.btn_Lobby then -- 游说 UIManager.OpenView(Const_UI_Lua.UIEnum.UIGuildAlliesLobby, self.curGuildAllies) elseif comp == self.btn_Discord then -- 离间 UIManager.OpenView(Const_UI_Lua.UIEnum.UIGuildAlliesBadBlood, self.curGuildAllies) elseif comp == self.UITemplateTitlePanel.btn_close then self:CloseView(true) elseif comp == self.UITemplateTitlePanel.btn_Home then CTL.HomeMain.CloseViewBackHomeMain() elseif comp == self.btn_BackToMap then self:CloseView(true) UIManager.OpenAndPushAll(Const_UI_Lua.UIEnum.UIGuildAlliesMapView, self.curGuildAllies) elseif comp == self.UITemplateTitlePanel.btn_Info then CTL.GuildAllies.OpenGuildAlliesDesc() elseif comp == self.btn_MyAllies then -- 我的盟友 UIManager.OpenView(Const_UI_Lua.UIEnum.UIGuildAlliesMyAllies) elseif comp == self.btn_Visit then -- 设定目标 if not CTL.GuildAllies.HasPermissionByTitle() then CTL.Tips.AddTipsMsg(Const_IDS["IDS_Guild_CommonFail4"]) return end -- 目标设置是否达到上限 if MDL.GuildAllies.GetCurTargetCount() >= CTL.GuildAllies.OperateLimit() then CTL.Tips.AddTipsMsg(Const_IDS["IDS_GuildAllies_TargetNumLimit"]) else UTL.MessageBox.ShowOKCancelBox("", string.FormatByIdsId(Const_IDS["IDS_GuildAllies_SetTargetConfirm"], UIUtils.GetLocalizedTxt(Const_IDS[self.curGuildAllies.AlliesName])), function() if not CTL.GuildAllies.HasPermissionByTitle() then CTL.Tips.AddTipsMsg(Const_IDS["IDS_Guild_CommonFail4"]) return end MDL.GuildAllies.RequestSetGuildTarget(self.curGuildAllies.ID) end ) end elseif comp == self.btn_MeetingCancel then -- 解除目标 if not CTL.GuildAllies.HasPermissionByTitle() then CTL.Tips.AddTipsMsg(Const_IDS["IDS_Guild_CommonFail4"]) return end MDL.GuildAllies.RequestCancelGuildTarget(self.curGuildAllies.ID) elseif comp == self.btn_Align then -- 结盟 if not CTL.GuildAllies.HasPermissionByTitle() then CTL.Tips.AddTipsMsg(Const_IDS["IDS_Guild_CommonFail4"]) return end UIManager.OpenView(Const_UI_Lua.UIEnum.UIGuildAlliesAlign, self.curGuildAllies) end end function UIGuildAlliesMainPanelNew:OnCellInit(scrollRect, index, cellTable, data) if scrollRect == self.loop_GuildMain then local guildAllies = MDL.GuildAllies.GetGuildAlliesByPos(data) if not guildAllies then return end UIUtils.SetImageByAssetBundle(cellTable.img_HeroHead, string.format(HeroIconPath, guildAllies.HeroHead)) UIUtils.SetActive(cellTable.group_Hands, guildAllies.isTarget) UIUtils.SetActive(cellTable.group_Selected, self.curGuildAllies and self.curGuildAllies.ID == guildAllies.ID or false) UIUtils.SetActive(cellTable.group_Allies, MDL.GuildAllies.IsMyAllyByPowerId(guildAllies.ID)) UIUtils.SetLabelText(cellTable.txt_Name, Const_IDS[guildAllies.AlliesName]) UIUtils.SetLabelText(cellTable.txt_Area, Const_IDS[guildAllies.CityName]) cellTable.TextGradient:SetState(guildAllies.BigAllies == 1 and 1 or 0) end end function UIGuildAlliesMainPanelNew:OnCellClicked(scrollRect, index, cellTable, target, data) if scrollRect == self.loop_GuildMain then -- 切换选中状态 local guildAllies = MDL.GuildAllies.GetGuildAlliesByPos(data) if guildAllies then MDL.GuildAllies.RequestGuildAllies(guildAllies.ID, true) end end end ------------------------------------------------------------------- function UIGuildAlliesMainPanelNew:RefreshPanel(guildAllies) local showGuildAllies = guildAllies and guildAllies or self.curGuildAllies if not showGuildAllies then return end if self.loop_GuildMain.Count == 0 then local showGuildList = MDL.GuildAllies.GetGuildAlliesShowList() local moveIndex = 0 for i = 1, #showGuildList do self.loop_GuildMain:AddData(i, 0) local guildAllies = showGuildList[i] if guildAllies.ID == self.curGuildAllies.ID then moveIndex = i -1 end end self.loop_GuildMain:MoveIndex(moveIndex) else for i = 1, self.loop_GuildMain.Count do self.loop_GuildMain:UpdateIndex(i - 1) end end self:RefreshSelected(showGuildAllies) end function UIGuildAlliesMainPanelNew:RefreshTarget(updateIndex) self.loop_GuildMain:MoveIndex(updateIndex - 1) self:RefreshPanel() end function UIGuildAlliesMainPanelNew:RefreshSelected(newGuildAllies) if newGuildAllies then local oldGuildAllies = self.curGuildAllies self.curGuildAllies = newGuildAllies self.context = newGuildAllies if oldGuildAllies then local _, pos = MDL.GuildAllies.GetGuildAlliesAndPosByID(oldGuildAllies.ID) self.loop_GuildMain:UpdateIndex(pos - 1) end local _, newPos = MDL.GuildAllies.GetGuildAlliesAndPosByID(self.curGuildAllies.ID) self.loop_GuildMain:UpdateIndex(newPos - 1) --这里设置图片的初始位置 然后再根据Pivot 设置偏移位置 self.img_HeroDisplay.transform:SetLocalPosition(-150, -60, 0) UIUtils.SetActive(self.img_HeroDisplay, true) UIUtils.SetSpritePivotPos(self.img_HeroDisplay, string.format(HeroPicPath, self.curGuildAllies.HeroPic), 1.35) ---self.img_HeroDisplay:SetNativeSize() UIUtils.SetActive(self.btn_Visit, not self.curGuildAllies.isTarget) UIUtils.SetActive(self.btn_MeetingCancel, self.curGuildAllies.isTarget) for i, v in ipairs(self.group_GuildRank) do local memberInfo = MDL.GuildAllies.GetGuildAllyMemberByPos(i) if memberInfo then local guildRank = self.group_GuildRank[i] local isFirst = i == 1 and self.curGuildAllies.BigAllies == 1 --是否为首席 UIUtils.SetActive(guildRank.img_Chief,isFirst) if CTL.GuildAllies.IsRobotGuild(memberInfo.guildId) then UIUtils.SetLabelText(guildRank.txt_GuildName, Const_IDS[memberInfo.guildName]) UIUtils.SetActive(guildRank.group_GuildInitiate, false) else UIUtils.SetActive(guildRank.group_GuildInitiate, true) UIUtils.SetLabel(guildRank.txt_GuildName, memberInfo.guildName) UIUtils.SetLabel(guildRank.txt_GuildInitiate, memberInfo.emblemContent) UTL.Item.SetAtlasSprite(guildRank.img_GuildIcon, "UI_Guild", DataSheetManager.GuildEmblem:GetDataByID(memberInfo.emblemFrame).Image) end UIUtils.SetLabel(guildRank.txt_FriendshipData, memberInfo.friendliness) CTL.GuildAllies.SetTextBuff(self.curGuildAllies.State_Table[memberInfo.allyIndex].StateAttr, guildRank.group_Buff_1.img_BuffIcon, guildRank.group_Buff_1.txt_BuffName, guildRank.group_Buff_1.txt_BuffNumber, guildRank.group_Buff_2.img_BuffIcon, guildRank.group_Buff_2.txt_BuffName, guildRank.group_Buff_2.txt_BuffNumber) end end local myMember = MDL.GuildAllies.GetMyGuildMember() local myRank = self.group_MyRank if myMember then CTL.GuildAllies.SetAllyPosImage(myRank.img_Medal, MDL.GuildAllies.GetMyGuildMemberIndex()) CTL.GuildAllies.SetAllyPosText(myRank.txt_RankNumber, MDL.GuildAllies.GetMyGuildMemberIndex()) UTL.Item.SetAtlasSprite(myRank.img_GuildIcon, "UI_Guild", DataSheetManager.GuildEmblem:GetDataByID(myMember.emblemFrame).Image) UIUtils.SetLabel(myRank.txt_GuildInitiate, myMember.emblemContent) UIUtils.SetLabel(myRank.txt_GuildName, myMember.guildName) UIUtils.SetLabel(myRank.txt_FriendshipData, myMember.friendliness) CTL.GuildAllies.SetRankImage(myRank.img_Quality, myMember.allyIndex) if self.curGuildAllies.State_Table[myMember.allyIndex] then UIUtils.SetActive(myRank.group_Buff_1.gameObject, true) UIUtils.SetActive(myRank.group_Buff_2.gameObject, true) UIUtils.SetActive(myRank.group_Buff_Empty, false) CTL.GuildAllies.SetTextBuff(self.curGuildAllies.State_Table[myMember.allyIndex].StateAttr, myRank.group_Buff_1.img_BuffIcon, myRank.group_Buff_1.txt_BuffName, myRank.group_Buff_1.txt_BuffNumber, myRank.group_Buff_2.img_BuffIcon, myRank.group_Buff_2.txt_BuffName, myRank.group_Buff_2.txt_BuffNumber) else UIUtils.SetActive(myRank.group_Buff_1.gameObject, false) UIUtils.SetActive(myRank.group_Buff_2.gameObject, false) UIUtils.SetActive(myRank.group_Buff_Empty, true) end else UIUtils.SetActive(myRank.img_Medal, false) UIUtils.SetActive(myRank.txt_RankNumber, true) UIUtils.SetLabelText(myRank.txt_RankNumber, Const_IDS["IDS_GuildBoss_EmptyText"]) local myGuildInfo = MDL.Guild.GetGuildMemberInfo() UTL.Item.SetAtlasSprite(myRank.img_GuildIcon, "UI_Guild", DataSheetManager.GuildEmblem:GetDataByID(myGuildInfo.listInfo.emblemFrame).Image) UIUtils.SetLabel(myRank.txt_GuildInitiate, myGuildInfo.listInfo.emblemContent) UIUtils.SetLabel(myRank.txt_GuildName, MDL.Guild.GetMyGuildInfo().guildName) UIUtils.SetLabel(myRank.txt_FriendshipData, 0) UIUtils.SetActive(myRank.group_Buff_1.gameObject, false) UIUtils.SetActive(myRank.group_Buff_2.gameObject, false) UIUtils.SetActive(myRank.group_Buff_Empty, true) CTL.GuildAllies.SetRankImage(myRank.img_Quality) end end end return UIGuildAlliesMainPanelNew