local UIGuildAlliesBadBlood = UIViewClass() local DiscordStrategyID = 2 local NormalID = 1 local DecentID = 2 local SuperID = 3 ------------------------- 系统函数 -------------------------------- function UIGuildAlliesBadBlood:OnCreated() self:RegistSystemEvent(EventID.UI_GuildAlliesBadBlood_Refresh, self.RefreshPanel) self:RegistSystemEvent(EventID.BagItem_Update, self.RefreshSelecteOptionItems) self:RegistSystemEvent(EventID.UI_RefreshCurrency, self.RefreshSelecteOptionItems) UIUtils.SetLabelText(self.UICommonPopUp.txt_Title, Const_IDS["IDS_GuildAllies_Banquet"]) self.curGuildAllies = nil self.selectIndex = 1 self.selectGuildId = nil self.curAllyIndex = 0 self:ResetSelectTarget() end function UIGuildAlliesBadBlood:OnOpened(context) self.curGuildAllies = context self:RefreshPanel() end function UIGuildAlliesBadBlood:OnBackButtonPressed() self:OnButtonClicked(self.UICommonPopUp.btn_Close) end function UIGuildAlliesBadBlood:OnButtonClicked(comp) local targetData = MDL.GuildAllies.GetGuildAllyMemberByPos(self.selectIndex) if comp == self.UICommonPopUp.btn_Close then self:CloseView() elseif comp == self.ReactionSwitch then UIUtils.SetActive(self.group_Rank, false) elseif comp == self.group_Target.btn_Change then local isSelfActive = self.group_Rank.gameObject.activeSelf UIUtils.SetActive(self.group_Rank, not isSelfActive) if not isSelfActive then self:RefreshLoop() self.loop_BadBlood_Rank:MoveIndex(self.selectIndex - 1) end elseif comp == self.group_LowRankDiscord.btn_LowRankDiscord then local strategyCfg = DataSheetManager.GuildAlliesStrategy:GetDataByID_sortID(DiscordStrategyID, NormalID) if strategyCfg.Cost_Table[1].CostItemNum > MDL.Bag.GetItemCount(strategyCfg.Cost_Table[1].CostItemID) then local itemData = DataSheetManager.ItemData:GetDataByID(strategyCfg.Cost_Table[1].CostItemID) CTL.Tips.AddTipsMsg(Const_IDS["IDS_Guild_CommonFail1"], UIUtils.GetLocalizedTxt(Const_IDS[itemData.Name])) CTL.Sound.PlayGameSound("UI_invalid") return end CTL.GuildAllies.PopGuildAlliesBox( strategyCfg, MDL.GuildAllies.RequestGuildAlliesTalk, {self.curGuildAllies.ID, targetData.guildId, NormalID, targetData.allyIndex} ) -- 请求之前缓存选中目标军团ID self.selectGuildId = targetData.guildId elseif comp == self.group_MidRankDiscord.btn_MidRankLobby then local strategyCfg = DataSheetManager.GuildAlliesStrategy:GetDataByID_sortID(DiscordStrategyID, DecentID) if strategyCfg.Cost_Table[1].CostItemNum > MDL.Bag.GetItemCount(strategyCfg.Cost_Table[1].CostItemID) then local itemData = DataSheetManager.ItemData:GetDataByID(strategyCfg.Cost_Table[1].CostItemID) CTL.Tips.AddTipsMsg(Const_IDS["IDS_Guild_CommonFail1"], UIUtils.GetLocalizedTxt(Const_IDS[itemData.Name])) CTL.Sound.PlayGameSound("UI_invalid") return end if strategyCfg.Cost_Table[2].CostItemNum > MDL.Currency.GetMoneyCount(strategyCfg.Cost_Table[2].CostItemID) then local itemData = DataSheetManager.ItemData:GetDataByID(strategyCfg.Cost_Table[2].CostItemID) CTL.Tips.AddTipsMsg(Const_IDS["IDS_Guild_CommonFail1"], UIUtils.GetLocalizedTxt(Const_IDS[itemData.Name])) CTL.Sound.PlayGameSound("UI_invalid") return end CTL.GuildAllies.PopGuildAlliesBox( strategyCfg, MDL.GuildAllies.RequestGuildAlliesTalk, {self.curGuildAllies.ID, targetData.guildId, DecentID, targetData.allyIndex} ) -- 请求之前缓存选中目标军团ID self.selectGuildId = targetData.guildId elseif comp == self.group_HighRankDiscord.btn_HighRankDiscord then local strategyCfg = DataSheetManager.GuildAlliesStrategy:GetDataByID_sortID(DiscordStrategyID, SuperID) if strategyCfg.Cost_Table[1].CostItemNum > MDL.Bag.GetItemCount(strategyCfg.Cost_Table[1].CostItemID) then local itemData = DataSheetManager.ItemData:GetDataByID(strategyCfg.Cost_Table[1].CostItemID) CTL.Tips.AddTipsMsg(Const_IDS["IDS_Guild_CommonFail1"], UIUtils.GetLocalizedTxt(Const_IDS[itemData.Name])) CTL.Sound.PlayGameSound("UI_invalid") return end if strategyCfg.Cost_Table[2].CostItemNum > MDL.Currency.GetMoneyCount(strategyCfg.Cost_Table[2].CostItemID) then local itemData = DataSheetManager.ItemData:GetDataByID(strategyCfg.Cost_Table[2].CostItemID) CTL.Tips.AddTipsMsg(Const_IDS["IDS_Guild_CommonFail1"], UIUtils.GetLocalizedTxt(Const_IDS[itemData.Name])) CTL.Sound.PlayGameSound("UI_invalid") return end if GameAppInfo.IsJapanesePackage() then --日本地区高级离间消耗龙玉需要二次弹窗 local costDragonSuffix = "\n" .. UIUtils.GetLocalizedTxt(Const_IDS.IDS_JP_MoneyConsumption_Pay) .. "\n" .. UIUtils.GetLocalizedTxt(Const_IDS.IDS_JP_MoneyConsumption_Time) .. "\n" .. UIUtils.GetLocalizedTxt(Const_IDS.IDS_JP_MoneyConsumption_CannotCancel) UTL.MessageBox.ShowOKCancelBox(Const_IDS.IDS_GuildAllies_SuperBanquet, string.FormatByIdsId(Const_IDS.IDS_JP_MoneyConsumption_SowDiscord, strategyCfg.Cost_Table[2].CostItemNum) .. costDragonSuffix, function() CTL.GuildAllies.PopGuildAlliesBox( strategyCfg, MDL.GuildAllies.RequestGuildAlliesTalk, {self.curGuildAllies.ID, targetData.guildId, SuperID, targetData.allyIndex} ) end) else CTL.GuildAllies.PopGuildAlliesBox( strategyCfg, MDL.GuildAllies.RequestGuildAlliesTalk, {self.curGuildAllies.ID, targetData.guildId, SuperID, targetData.allyIndex} ) end -- 请求之前缓存选中目标军团ID self.selectGuildId = targetData.guildId end end function UIGuildAlliesBadBlood:OnCellInit(scrollRect, index, cellTable, data) if scrollRect == self.loop_BadBlood_Rank then local targetData = MDL.GuildAllies.GetGuildAllyMemberByPos(self.selectIndex) local allyIndex = data.allyIndex if allyIndex == 0 then allyIndex = (self.curAllyIndex > 0 and index + 1 >= self.curAllyIndex) and index + 2 or index + 1 end CTL.GuildAllies.SetAllyPosImage(cellTable.img_Medal, allyIndex) UIUtils.SetActive(cellTable.group_Rank, not cellTable.img_Medal.gameObject.activeSelf) CTL.GuildAllies.SetAllyPosText(cellTable.txt_Rank, allyIndex) UIUtils.SetLabel(cellTable.txt_FriendshipData, data.friendliness) UIUtils.SetActive(cellTable.btn_LowRankDiscord, targetData.guildId ~= data.guildId and MDL.Guild.GetMyGuildInfo().guildId ~= data.guildId) CTL.GuildAllies.SetRankImage(cellTable.img_AllyQualityFrame, data.allyIndex) if CTL.GuildAllies.IsRobotGuild(data.guildId) then UIUtils.SetLabelText(cellTable.txt_GuildName, Const_IDS[data.guildName]) UIUtils.SetActive(cellTable.group_GuildInitiate, false) else UIUtils.SetActive(cellTable.group_GuildInitiate, true) UIUtils.SetLabel(cellTable.txt_GuildName, data.guildName) UIUtils.SetLabel(cellTable.txt_GuildInitiate, data.emblemContent) if DataSheetManager.GuildEmblem:GetDataByID(data.emblemFrame) then UTL.Item.SetAtlasSprite(cellTable.img_GuildIcon, "UI_Guild", DataSheetManager.GuildEmblem:GetDataByID(data.emblemFrame).Image) end end if self.curGuildAllies.State_Table[data.allyIndex] then UIUtils.SetActive(cellTable.group_Buff_1.gameObject, true) UIUtils.SetActive(cellTable.group_Buff_2.gameObject, true) UIUtils.SetActive(cellTable.group_Empty, false) CTL.GuildAllies.SetTextBuff(self.curGuildAllies.State_Table[data.allyIndex].StateAttr, cellTable.group_Buff_1.img_BuffIcon, cellTable.group_Buff_1.txt_BuffName, cellTable.group_Buff_1.txt_BuffNumber, cellTable.group_Buff_2.img_BuffIcon, cellTable.group_Buff_2.txt_BuffName, cellTable.group_Buff_2.txt_BuffNumber) else UIUtils.SetActive(cellTable.group_Buff_1.gameObject, false) UIUtils.SetActive(cellTable.group_Buff_2.gameObject, false) UIUtils.SetActive(cellTable.group_Empty, true) end end end function UIGuildAlliesBadBlood:OnCellClicked(scrollRect, index, cellTable, target, data) if scrollRect == self.loop_BadBlood_Rank then if target == cellTable.btn_LowRankDiscord then local oldIndex = (self.curAllyIndex > 0 and self.selectIndex > self.curAllyIndex) and self.selectIndex - 2 or self.selectIndex - 1 self.selectIndex = (self.curAllyIndex > 0 and index + 1 >= self.curAllyIndex) and index + 2 or index + 1 self.loop_BadBlood_Rank:UpdateIndex(oldIndex) self.loop_BadBlood_Rank:UpdateIndex((self.curAllyIndex > 0 and self.selectIndex > self.curAllyIndex) and self.selectIndex - 2 or self.selectIndex - 1) self:RefreshTarget() UIUtils.SetActive(self.group_Rank, false) end end end ------------------------------------------------------------------- function UIGuildAlliesBadBlood:RefreshPanel() UIUtils.SetLabel(self.txt_Number, self.curGuildAllies.friendliness) -- 选中目标 self:ResetSelectTarget() self:RefreshTarget() self:RefreshSelecteOptionItems() self:RefreshLoop() end function UIGuildAlliesBadBlood:RefreshLoop() self.loop_BadBlood_Rank:ClearCells() local myMember = MDL.GuildAllies.GetMyGuildMember() for i, v in ipairs (MDL.GuildAllies.GetGuildAllyMembers()) do if myMember and v.guildId ~= myMember.guildId then if self.group_Rank.gameObject.activeSelf then self.loop_BadBlood_Rank:AddData(v, 0) end else self.curAllyIndex = i end end end function UIGuildAlliesBadBlood:RefreshSelecteOptionItems() -- 初级 local strategyCfg = DataSheetManager.GuildAlliesStrategy:GetDataByID_sortID(DiscordStrategyID, NormalID) local lowerDiscord = self.group_LowRankDiscord CTL.GuildAllies.SetTextFriendlinessBenefit(lowerDiscord.txt_FriendshipNumber, strategyCfg) UTL.Item.ItemIconWithoutBg(lowerDiscord.img_DefenceIcon, strategyCfg.RewardItemId) CTL.GuildAllies.SetTextGuildMoney(lowerDiscord.txt_BuffNum, strategyCfg) CTL.GuildAllies.SetTextFriendlinessLose(lowerDiscord.txt_LoseNumber, strategyCfg) CTL.GuildAllies.SetTextItem(lowerDiscord.txt_Number, strategyCfg.Cost_Table[1].CostItemID, strategyCfg.Cost_Table[1].CostItemNum) UTL.Item.ItemIconWithoutBg(lowerDiscord.img_EXPIcon, strategyCfg.Cost_Table[1].CostItemID) -- 中级 strategyCfg = DataSheetManager.GuildAlliesStrategy:GetDataByID_sortID(DiscordStrategyID, DecentID) local midDiscord = self.group_MidRankDiscord CTL.GuildAllies.SetTextFriendlinessBenefit(midDiscord.txt_FriendshipNumber, strategyCfg) UTL.Item.ItemIconWithoutBg(midDiscord.img_DefenceIcon, strategyCfg.RewardItemId) CTL.GuildAllies.SetTextGuildMoney(midDiscord.txt_BuffNum, strategyCfg) CTL.GuildAllies.SetTextFriendlinessLose(midDiscord.txt_LoseNumber, strategyCfg) CTL.GuildAllies.SetTextItem(midDiscord.txt_Number, strategyCfg.Cost_Table[1].CostItemID, strategyCfg.Cost_Table[1].CostItemNum) CTL.GuildAllies.SetTextMoney(midDiscord.txt_Money, strategyCfg.Cost_Table[2].CostItemID, strategyCfg.Cost_Table[2].CostItemNum) UTL.Item.ItemIconWithoutBg(midDiscord.img_EXPIcon, strategyCfg.Cost_Table[1].CostItemID) UTL.Item.ItemIconWithoutBg(midDiscord.img_MoneyIcon, strategyCfg.Cost_Table[2].CostItemID) -- 高级 strategyCfg = DataSheetManager.GuildAlliesStrategy:GetDataByID_sortID(DiscordStrategyID, SuperID) local highDiscord = self.group_HighRankDiscord CTL.GuildAllies.SetTextFriendlinessBenefit(highDiscord.txt_FriendshipNumber, strategyCfg) UTL.Item.ItemIconWithoutBg(highDiscord.img_DefenceIcon, strategyCfg.RewardItemId) CTL.GuildAllies.SetTextGuildMoney(highDiscord.txt_BuffNum, strategyCfg) CTL.GuildAllies.SetTextFriendlinessLose(highDiscord.txt_LoseNumber, strategyCfg) CTL.GuildAllies.SetTextItem(highDiscord.txt_Number, strategyCfg.Cost_Table[1].CostItemID, strategyCfg.Cost_Table[1].CostItemNum) CTL.GuildAllies.SetTextMoney(highDiscord.txt_Money, strategyCfg.Cost_Table[2].CostItemID, strategyCfg.Cost_Table[2].CostItemNum) UTL.Item.ItemIconWithoutBg(highDiscord.img_EXPIcon, strategyCfg.Cost_Table[1].CostItemID) UTL.Item.ItemIconWithoutBg(highDiscord.img_MoneyIcon, strategyCfg.Cost_Table[2].CostItemID) end function UIGuildAlliesBadBlood:RefreshTarget() local targetData = MDL.GuildAllies.GetGuildAllyMemberByPos(self.selectIndex) local groupTarget = self.group_Target CTL.GuildAllies.SetAllyPosImage(groupTarget.img_medal, self.selectIndex) CTL.GuildAllies.SetAllyPosText(groupTarget.txt_GuildNum, self.selectIndex) CTL.GuildAllies.SetRankImage(groupTarget.img_GuildQualityFrame, self.selectIndex) UIUtils.SetLabel(groupTarget.txt_FriendshipData, targetData.friendliness) if CTL.GuildAllies.IsRobotGuild(targetData.guildId) then UIUtils.SetLabelText(groupTarget.txt_GuildName, Const_IDS[targetData.guildName]) UIUtils.SetActive(groupTarget.group_GuildInitiate, false) else UIUtils.SetActive(groupTarget.group_GuildInitiate, true) UIUtils.SetLabel(groupTarget.txt_GuildName, targetData.guildName) UIUtils.SetLabel(groupTarget.txt_GuildInitiate, targetData.emblemContent) local guildEmblemCfg = DataSheetManager.GuildEmblem:GetDataByID(targetData.emblemFrame) if guildEmblemCfg then UTL.Item.SetAtlasSprite(groupTarget.img_GuildIcon, "UI_Guild", guildEmblemCfg.Image) end end if self.curGuildAllies.State_Table[targetData.allyIndex] then UIUtils.SetActive(groupTarget.group_Buff_1.gameObject, true) UIUtils.SetActive(groupTarget.group_Buff_2.gameObject, true) UIUtils.SetActive(groupTarget.group_Empty, false) CTL.GuildAllies.SetTextBuff(self.curGuildAllies.State_Table[targetData.allyIndex].StateAttr, groupTarget.group_Buff_1.img_BuffIcon, groupTarget.group_Buff_1.txt_BuffName, groupTarget.group_Buff_1.txt_BuffNumber, groupTarget.group_Buff_2.img_BuffIcon, groupTarget.group_Buff_2.txt_BuffName, groupTarget.group_Buff_2.txt_BuffNumber) else UIUtils.SetActive(groupTarget.group_Buff_1.gameObject, false) UIUtils.SetActive(groupTarget.group_Buff_2.gameObject, false) UIUtils.SetActive(groupTarget.group_Empty, true) end end function UIGuildAlliesBadBlood:ResetSelectTarget() if self.selectGuildId then for i, v in ipairs (MDL.GuildAllies.GetGuildAllyMembers()) do if v.guildId == self.selectGuildId then self.selectIndex = i self.selectGuildId = nil break end end if self.selectGuildId then self.selectGuildId = nil self:InitSelectTarget() end else self:InitSelectTarget() end end function UIGuildAlliesBadBlood:InitSelectTarget() self.selectIndex = 1 local target = MDL.GuildAllies.GetGuildAllyMemberByPos(self.selectIndex) local myMember = MDL.GuildAllies.GetMyGuildMember() if myMember and myMember.guildId == target.guildId then self.selectIndex = 2 end end return UIGuildAlliesBadBlood