local UICountryDefectedPanel = UIViewClass() function UICountryDefectedPanel:OnOpened(context) UIUtils.SetLabelText(self.UICommonPopUp.txt_Title, Const_IDS.IDS_CountrySelection_ApplyTitle) self:RegistSystemEvent(EventID.Country_OnGetApplyInfo, self.OnGetApplyInfo) self:RegistSystemEvent(EventID.Country_OnApplyResp, self.OnApplyResp) self:RegistSystemEvent(EventID.Country_OnAcceptInvite, self.OnAcceptInvite) MDL.Country.CountryGetApplyInfoReq() self:SetCountryInfo() end function UICountryDefectedPanel:OnApplyResp() local collection = self.group_Defected[self.curApplyCountry] UIUtils.SetActive(collection.btn_Application, false) UIUtils.SetActive(collection.btn_Accept, false) UIUtils.SetActive(collection.btn_AlreadyApplied, true) --UIUtils.SetLabelText(collection.lab_Desc, Const_IDS.IDS_CountryApply_Applied) end function UICountryDefectedPanel:OnAcceptInvite() for i, collection in ipairs(self.group_Defected) do UIUtils.SetActive(collection.btn_Application, false) UIUtils.SetActive(collection.btn_Accept, false) if i == self.curAcceptInvite then UIUtils.SetActive(collection.img_Joined, true) collection.lab_LimitReached.text = nil UIUtils.SetLabelText(collection.txt_Joined, Const_IDS.IDS_CountryApply_Joined) UIUtils.SetActive(collection.btn_Application, false) UIUtils.SetActive(collection.btn_Accept, false) UIUtils.SetActive(collection.btn_AlreadyApplied, false) else UIUtils.SetActive(collection.img_Joined, false) collection.lab_LimitReached.text = nil end end end function UICountryDefectedPanel:OnGetApplyInfo(msg) for i, v in ipairs(msg.leadGuild) do local collection = self.group_Defected[i] self:SetMainGuildsInfo(collection, v.guildInfo, msg.applyCountryID, msg.invitedCountryID, i) end self:SetTimeInfo(msg.endTime) self.leadGuild = msg.leadGuild end function UICountryDefectedPanel:SetCountryInfo() for i = 1, MDL.Country.CountryType.Qun do CTL.Country.SetCountryImage(self.group_Defected[i], i) end end function UICountryDefectedPanel:SetMainGuildsInfo(collection, list, applyGuildList, invitedCountryID, index) self:SetGuildInfo(collection.group_Main, list[1]) self:SetGuildInfo(collection.group_Sub1, list[2]) self:SetGuildInfo(collection.group_Sub2, list[3]) local info = MDL.Country.GetMyGuildInfo() UIUtils.SetActive(collection.img_Joined, false) collection.lab_LimitReached.text = nil if info and info.country > 0 then UIUtils.SetActive(collection.btn_Application, false) UIUtils.SetActive(collection.btn_Accept, false) if index == info.country then UIUtils.SetActive(collection.img_Joined, true) collection.lab_LimitReached.text = nil UIUtils.SetLabelText(collection.txt_Joined, Const_IDS.IDS_CountryApply_Joined) -- UIUtils.SetLabelText(collection.lab_LimitReached, Const_IDS.IDS_CountryApply_Joined) elseif #list == 3 then UIUtils.SetLabelText(collection.lab_LimitReached, Const_IDS.IDS_CountryApply_GuildNumLimit) end elseif #list == 3 then UIUtils.SetLabelText(collection.lab_LimitReached, Const_IDS.IDS_CountryApply_GuildNumLimit) UIUtils.SetActive(collection.btn_Application, false) UIUtils.SetActive(collection.btn_Accept, false) elseif applyGuildList and table.containValue(applyGuildList, index) then UIUtils.SetActive(collection.btn_Application, false) UIUtils.SetActive(collection.btn_Accept, false) UIUtils.SetActive(collection.btn_AlreadyApplied, true) elseif invitedCountryID and table.containValue(invitedCountryID, index) then UIUtils.SetActive(collection.btn_Application, false) UIUtils.SetActive(collection.btn_Accept, true) else UIUtils.SetActive(collection.btn_Application, true) UIUtils.SetActive(collection.btn_Accept, false) end end function UICountryDefectedPanel:SetGuildInfo(collection, data) if data then collection.lab_GuildName.text = data.guildName collection.lab_ServerName.text = CTL.CrossServer.GetServerShowStr(data.serverId) UTL.Item.SetAtlasSprite(collection.ico_GuildBg, "UI_Guild", DataSheetManager.GuildEmblem:GetDataByID(data.guildEmblemFrame).Image) collection.txt_TitleGuildName.text = data.guildEmblemContent UIUtils.SetActive(collection.img_Country, true) UIUtils.SetActive(collection.group_Empty, false) UIUtils.SetActive(collection.group_SubGuildIcon, true) else UIUtils.SetActive(collection.group_Empty, true) UIUtils.SetActive(collection.group_SubGuildIcon, false) UIUtils.SetLabelText(collection.lab_GuildName, Const_IDS.IDS_GuildApply_Label7) end end function UICountryDefectedPanel:SetTimeInfo(timeStamp) local time = MDL.Country.GetCurStateTime().stageEnd - UTL.Time.GetServerTimestamp() CTL.Country.SetCdTime(self.txt_Time, time, Const_IDS.IDS_CountryApply_ApplyCountdown) self:StartRepeatFunc(self.CloseSelf, time, 1) end function UICountryDefectedPanel:CloseSelf() self:CloseView() end function UICountryDefectedPanel:OnButtonClicked(comp) if comp == self.UICommonPopUp.btn_Close then self:CloseView() else for i, v in ipairs(self.group_Defected) do if v.btn_Application == comp then self:ClickApplication(i) elseif v.btn_Accept == comp then self:ClickAccept(i) elseif v.group_Main.btn == comp then self:ClickOpenGuildInfoView(i, 1) break elseif v.group_Sub1.btn == comp then self:ClickOpenGuildInfoView(i, 2) break elseif v.group_Sub2.btn == comp then self:ClickOpenGuildInfoView(i, 3) break end end end end function UICountryDefectedPanel:ClickApplication(index) local selectGuilds = self.leadGuild[index].guildInfo if #selectGuilds < 3 then if MDL.Guild.CheckLeader(1) then local countryName = string.FormatByIdsId(Const_IDS.IDS_CountryApply_ApplyConfirm, CTL.Country.GetCountryFullName(index)) UTL.MessageBox.ShowOKCancelBox("", countryName, function() MDL.Country.CountryApplyReq(index) self.curApplyCountry = index end ) else CTL.Tips.AddTipsMsgAndPlaySound(Const_IDS.IDS_Guild_OnlyLead) end else CTL.Tips.AddTipsMsgAndPlaySound(Const_IDS.IDS_CountryApply_GuildNumLimit) end end function UICountryDefectedPanel:ClickAccept(index) local selectGuilds = self.leadGuild[index].guildInfo if #selectGuilds < 3 then if MDL.Guild.CheckLeader(1) then local countryName = string.FormatByIdsId(Const_IDS.IDS_CountryApply_AgreeConfirm, CTL.Country.GetCountryFullName(index)) UTL.MessageBox.ShowOKCancelBox("", countryName, function() MDL.Country.CountryAcceptInviteReq(index) self.curAcceptInvite = index end ) else CTL.Tips.AddTipsMsgAndPlaySound(Const_IDS.IDS_Guild_OnlyLead) end else CTL.Tips.AddTipsMsgAndPlaySound(Const_IDS.IDS_CountryApply_GuildNumLimit) end end function UICountryDefectedPanel:ClickOpenGuildInfoView(countryIdIndex, index) local selectGuilds = self.leadGuild[countryIdIndex].guildInfo local info = selectGuilds[index] if info then MDL.Country.CountryGetTargetGuildInfoReq(info.guildId) end end return UICountryDefectedPanel