---@class KLUnionCampaignPanel:UIKmlLuaPanelBase ---@field view KLUnionCampaignPanelView ---@field cfg cfg_unionLevel_column local KLUnionCampaignPanel = class(UIKmlLuaPanelBase) local this = KLUnionCampaignPanel ---创建时调用一次 function this:Init() self.level = nil SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_GET_UNION_INFO) end ---创建或者刷新界面数据时调用 function this:Refresh() end ---注册UI事件和服务器消息 function this:RegistEvents() GUI:AddOnClickEvent(self.view.btnAgree, self, self.AgreeOnClick) GUI:AddOnClickEvent(self.view.btnRefuse, self, self.RefuseOnClick) GUI:AddOnClickEvent(self.view.btnClose, self, self.CloseSelf) SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_GET_UNION_INFO, self.RES_GET_UNION_INFO, self) SL:RegisterLUAEvent(LUA_EVENT_UNION_CAMPAIGN_DATA, self.SetData, self) SL:RegisterLUAEvent(LUA_EVENT_UNION_CAMPAIGN_VOTE_CHANGE, self.UpdateVoteNum, self) end function this:RES_GET_UNION_INFO(id, message) local tipdes ="在投票结束时,若同意人数多于反对人数则".."".."弹劾成功".. ""..",当前盟主将变为普通成员,且战盟变为".."".."无盟主状态".. "" GUI:Text_setString(self.view.txtDesc, tipdes) self.level = tonumber(message.unionlevel) local cfg = SL:GetConfig("cfg_unionLevel", self.level, "unionLevel") self.cfg = cfg local own = SL:GetBagItemCount(cfg.campaignVoteCast[1]) local str = string.format("%s", own >= cfg.campaignVoteCast[2] and "#1BE419" or "#9b1818", cfg.campaignVoteCast[2]) GUI:Item_UpdataData(self.view.itemAgree, { ["itemid"] = cfg.campaignVoteCast[1] }) GUI:Text_setString(self.view.txtAgree, str) GUI:Item_UpdataData(self.view.itemRefuse, { ["itemid"] = self.cfg.campaignVoteCast[1] }) GUI:Text_setString(self.view.txtRefuse, str) if message.leaderid ~= "0" then local leaderInfo = message.memberinfos[message.leaderid] GUI:Text_setString(self.view.txtName, "是否同意弹劾当前盟主" .. string.format("%s", leaderInfo.name)) else GUI:Text_setString(self.view.txtName, "是否同意弹劾当前盟主") end self:SetData() end function this:SetData() self:UpdateVoteNum() self:UnSchedule() local endTime = InfoManager.unionElectionInfo:GetCampaignEndTime() if endTime then endTime = tonumber(endTime) --local delta = endTime - SL:server local nowTime = SL:GetMetaValue(EMetaVarGetKey.SERVER_TIME) local deltaTime = endTime - tonumber(nowTime) local preStr = "弹劾结束倒计时:" if deltaTime > 0 then local takeABreak = false self.schedule = SL:Schedule(self.schedule, 0, 1, deltaTime // 1000 + 2, function() local nowTime_ = SL:GetMetaValue(EMetaVarGetKey.SERVER_TIME) local deltaTime_ = endTime - tonumber(nowTime_) if deltaTime_ <= 0 then deltaTime_ = 0 if takeABreak == false then takeABreak = true else SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_GET_UNION_IMPEACH_INFO) SL:onLUAEvent(LUA_EVENT_CHANGE_UNION_FUNCTION, "infoToggle") GUI:UIPanel_Close(self.filePath) return end end GUI:Text_setString(self.view.txtCountDown, preStr .. InfoManager.unionElectionInfo.FormatTimeStr(deltaTime_)) end) else deltaTime = 0 GUI:Text_setString(self.view.txtCountDown, preStr .. InfoManager.unionElectionInfo.FormatTimeStr(deltaTime)) end end end function this:UpdateVoteNum() GUI:Text_setString(self.view.txtAgreeNum, tostring(InfoManager.unionElectionInfo:GetCampaignAgreeNum())) GUI:Text_setString(self.view.txtDisagreeNum, tostring(InfoManager.unionElectionInfo:GetCampaignOpposeNum())) end function this:AgreeOnClick() if not self.level then return end ---弹劾发起者不可投票 if SL:GetMetaValue("UID") == tonumber(InfoManager.unionElectionInfo.campaignData.initiator) then return end GUI:UIPanel_Open("dev/outui/Union/Panel/KLUnionLeaderOperate/KLUnionLeaderOperatePanel", _, _, { type = EUnionLeaderOperateType.Campaign, unionLevel = self.level, isAgree = true }) end function this:RefuseOnClick() if not self.level then return end ---弹劾发起者不可投票 if SL:GetMetaValue("UID") == tonumber(InfoManager.unionElectionInfo.campaignData.initiator) then return end GUI:UIPanel_Open("dev/outui/Union/Panel/KLUnionLeaderOperate/KLUnionLeaderOperatePanel", _, _, { type = EUnionLeaderOperateType.Campaign, unionLevel = self.level, isAgree = false }) end function this:CloseSelf() GUI:UIPanel_Close(self.filePath) GUI:UIPanel_Close("dev/ui/Union/Panel/KLUnionToggleList/KLUnionToggleListPanel") SL.ShowMainPanel() end function this:Close() self:UnSchedule() end function this:UnSchedule() if self.schedule then SL:UnSchedule(self.schedule) end self.schedule = nil end return this