local UIGuildAlliesLobby = UIViewClass() local LobbyStrategyID = 1 local NormalID = 1 local DecentID = 2 local SuperID = 3 ------------------------- 系统函数 -------------------------------- function UIGuildAlliesLobby:OnCreated() self:RegistSystemEvent(EventID.UI_GuildAlliesLobby_Refresh, self.RefreshUI) self:RegistSystemEvent(EventID.BagItem_Update, self.RefreshPanel) self:RegistSystemEvent(EventID.UI_RefreshCurrency, self.RefreshPanel) self.curGuildAllies = nil end function UIGuildAlliesLobby:OnOpened(context) self.curGuildAllies = context UIUtils.SetLabelText(self.UICommonPopUp.txt_Title, Const_IDS["IDS_GuildAllies_Lobby"]) self:SetSelectStrategyIndex(true) self:RefreshUI() end function UIGuildAlliesLobby:OnBackButtonPressed() self:OnButtonClicked(self.UICommonPopUp.btn_Close) end function UIGuildAlliesLobby:OnButtonClicked(comp) if comp == self.UICommonPopUp.btn_Close then self:CloseView() elseif comp == self.group_LowRankLobby.btn_LowRankLobby then self:Visit(NormalID) elseif comp == self.group_MidRankLobby.btn_MidRankLobby then self:Visit(DecentID) elseif comp == self.group_HighRankLobby.btn_HighRankLobby then self:Visit(SuperID) else for i, v in ipairs (self.group_StrategyTabs) do if comp == v.btn_select then self.selectStrategyIndex = i self:RefreshStrategySelected() self:RefreshPanel() break end end end end function UIGuildAlliesLobby:DoVisit(visitType) local strategyCfg = DataSheetManager.GuildAlliesStrategy:GetDataByID_sortID(LobbyStrategyID, visitType) 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 visitType ~= NormalID then 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 end if self.selectStrategyIndex == self.perfectStrategyIndex then if GameAppInfo.IsJapanesePackage() and visitType == SuperID 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_SuperGift, string.FormatByIdsId(Const_IDS.IDS_JP_MoneyConsumption_GoCanvassing, strategyCfg.Cost_Table[2].CostItemNum) .. costDragonSuffix, function() CTL.GuildAllies.PopGuildAlliesBox(strategyCfg, MDL.GuildAllies.RequestGuildAlliesVisit, {self.curGuildAllies.ID, visitType, self.selectStrategyIndex}) end) else CTL.GuildAllies.PopGuildAlliesBox(strategyCfg, MDL.GuildAllies.RequestGuildAlliesVisit, {self.curGuildAllies.ID, visitType, self.selectStrategyIndex}) end else if GameAppInfo.IsJapanesePackage() and visitType == SuperID 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_SuperGift, string.FormatByIdsId(Const_IDS.IDS_JP_MoneyConsumption_GoCanvassing, strategyCfg.Cost_Table[2].CostItemNum) .. costDragonSuffix, function() MDL.GuildAllies.RequestGuildAlliesVisit(1, self.curGuildAllies.ID, visitType, self.selectStrategyIndex) end) else MDL.GuildAllies.RequestGuildAlliesVisit(1, self.curGuildAllies.ID, visitType, self.selectStrategyIndex) end end end ------------------------------------------------------------------- function UIGuildAlliesLobby:RefreshUI() self:RefreshStrategySelected() self:RefreshPanel() self:SetSelectStrategyIndex(false) end function UIGuildAlliesLobby:RefreshPanel() UIUtils.SetLabel(self.txt_Number, self.curGuildAllies.friendliness) --获取策略结果 local strategyResultType = MDL.GuildAllies.GetCurrentStrategyResultType(self.selectStrategyIndex) -- 低级 local strategyCfg = DataSheetManager.GuildAlliesStrategy:GetDataByID_sortID(LobbyStrategyID, NormalID) local lowerLobby = self.group_LowRankLobby CTL.GuildAllies.SetTextFriendlinessBenefitByStrategy(lowerLobby.txt_FriendshipNumber, strategyCfg,strategyResultType) UTL.Item.ItemIconWithoutBg(lowerLobby.img_DefenceIcon, strategyCfg.RewardItemId) CTL.GuildAllies.SetTextGuildMoney(lowerLobby.txt_DefenceNumber, strategyCfg) CTL.GuildAllies.SetTextItem(lowerLobby.txt_Number, strategyCfg.Cost_Table[1].CostItemID, strategyCfg.Cost_Table[1].CostItemNum) UTL.Item.ItemIconWithoutBg(lowerLobby.img_EXPIcon, strategyCfg.Cost_Table[1].CostItemID) -- 中级 strategyCfg = DataSheetManager.GuildAlliesStrategy:GetDataByID_sortID(LobbyStrategyID, DecentID) local midLobby = self.group_MidRankLobby CTL.GuildAllies.SetTextFriendlinessBenefitByStrategy(midLobby.txt_FriendshipNumber, strategyCfg,strategyResultType) UTL.Item.ItemIconWithoutBg(midLobby.img_DefenceIcon, strategyCfg.RewardItemId) CTL.GuildAllies.SetTextGuildMoney(midLobby.txt_DefenceNumber, strategyCfg) CTL.GuildAllies.SetTextItem(midLobby.txt_Number, strategyCfg.Cost_Table[1].CostItemID, strategyCfg.Cost_Table[1].CostItemNum) CTL.GuildAllies.SetTextMoney(midLobby.txt_MoneyNum, strategyCfg.Cost_Table[2].CostItemID, strategyCfg.Cost_Table[2].CostItemNum) UTL.Item.ItemIconWithoutBg(midLobby.img_EXPIcon, strategyCfg.Cost_Table[1].CostItemID) UTL.Item.ItemIconWithoutBg(midLobby.img_MoneyIcon, strategyCfg.Cost_Table[2].CostItemID) -- 高级 strategyCfg = DataSheetManager.GuildAlliesStrategy:GetDataByID_sortID(LobbyStrategyID, SuperID) local highLobby = self.group_HighRankLobby CTL.GuildAllies.SetTextFriendlinessBenefitByStrategy(highLobby.txt_FriendshipNumber, strategyCfg,strategyResultType) UTL.Item.ItemIconWithoutBg(highLobby.img_DefenceIcon, strategyCfg.RewardItemId) CTL.GuildAllies.SetTextGuildMoney(highLobby.txt_DefenceNumber, strategyCfg) CTL.GuildAllies.SetTextItem(highLobby.txt_Number, strategyCfg.Cost_Table[1].CostItemID, strategyCfg.Cost_Table[1].CostItemNum) CTL.GuildAllies.SetTextMoney(highLobby.txt_MoneyNum, strategyCfg.Cost_Table[2].CostItemID, strategyCfg.Cost_Table[2].CostItemNum) UTL.Item.ItemIconWithoutBg(highLobby.img_EXPIcon, strategyCfg.Cost_Table[1].CostItemID) UTL.Item.ItemIconWithoutBg(highLobby.img_MoneyIcon, strategyCfg.Cost_Table[2].CostItemID) self:RefreshStrategyState() end function UIGuildAlliesLobby:RefreshStrategySelected() for i, v in ipairs (self.group_StrategyTabs) do UIUtils.SetActive(v.img_Selected, self.selectStrategyIndex == i) v.txt_Strategy:SetState(self.selectStrategyIndex == i and 0 or 1) end end --点开页面时,默认选中策略逻辑修改 --有高级结果时,默认选中高级结果 --无高级结果时,默认选中最左方的未知结果 function UIGuildAlliesLobby:SetSelectStrategyIndex(isChange) local unknownResult = {} local perfectResultIndex = -1 for i, v in ipairs (self.group_StrategyTabs) do if not MDL.GuildAllies.GetVisitBtnIsChooseByPos(i) then table.insert(unknownResult,i) else local isPrefect = MDL.GuildAllies.GetVisitBtnIsPerfectByPos(i) if isPrefect then perfectResultIndex = i end end end if perfectResultIndex > 0 then if isChange then self.selectStrategyIndex = perfectResultIndex end self.perfectStrategyIndex = perfectResultIndex else if #unknownResult > 0 then if isChange then self.selectStrategyIndex = unknownResult[1] end self.unknownResult = unknownResult else self.selectStrategyIndex = 1 logging.error(LTAG.ERROR,"逻辑出问题了,不应该出现这个情况 unknownResult 是空的") end end end --检测是否有更好的结果,有更好的提示,否则游说 function UIGuildAlliesLobby:Visit(visitType) --获取策略结果 local strategyResultType = MDL.GuildAllies.GetCurrentStrategyResultType(self.selectStrategyIndex) --选中普通结果时,提示是否更换策略 if strategyResultType == CTL.GuildAllies.StrategyResultType.Normal then UTL.MessageBox.ShowOKCancelBox("", Const_IDS.IDS_GuildAllies_StrategyConfirm, --若已有高级结果,则选中高级结果,若无则选中最左方的未知结果 function () if self.perfectStrategyIndex and self.perfectStrategyIndex > 0 then self.selectStrategyIndex = self.perfectStrategyIndex elseif self.unknownResult and #self.unknownResult > 0 then self.selectStrategyIndex = self.unknownResult[1] end self:RefreshUI() end, function() self:DoVisit(visitType) end) --选中未知结果时,如果已有最佳结果,提示是否更换策略 elseif strategyResultType == CTL.GuildAllies.StrategyResultType.Unknown and self.perfectStrategyIndex and self.perfectStrategyIndex >0 then UTL.MessageBox.ShowOKCancelBox("", Const_IDS.IDS_GuildAllies_StrategyConfirm, function () if self.perfectStrategyIndex then self.selectStrategyIndex = self.perfectStrategyIndex self:RefreshUI() end end, function() self:DoVisit(visitType) end) else return self:DoVisit(visitType) end end function UIGuildAlliesLobby:RefreshStrategyState() for i, v in ipairs (self.group_StrategyTabs) do if not MDL.GuildAllies.GetVisitBtnIsChooseByPos(i) then UIUtils.SetActive(v.img_Rise, false) UIUtils.SetActive(v.img_Fall, false) else UIUtils.SetActive(v.img_Rise, MDL.GuildAllies.GetVisitBtnIsPerfectByPos(i)) UIUtils.SetActive(v.img_Fall, not MDL.GuildAllies.GetVisitBtnIsPerfectByPos(i)) end end end return UIGuildAlliesLobby