KLUnionCampaignPanel.lua 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. ---@class KLUnionCampaignPanel:UIKmlLuaPanelBase
  2. ---@field view KLUnionCampaignPanelView
  3. ---@field cfg cfg_unionLevel_column
  4. local KLUnionCampaignPanel = class(UIKmlLuaPanelBase)
  5. local this = KLUnionCampaignPanel
  6. ---创建时调用一次
  7. function this:Init()
  8. self.level = nil
  9. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_GET_UNION_INFO)
  10. end
  11. ---创建或者刷新界面数据时调用
  12. function this:Refresh()
  13. end
  14. ---注册UI事件和服务器消息
  15. function this:RegistEvents()
  16. GUI:AddOnClickEvent(self.view.btnAgree, self, self.AgreeOnClick)
  17. GUI:AddOnClickEvent(self.view.btnRefuse, self, self.RefuseOnClick)
  18. GUI:AddOnClickEvent(self.view.btnClose, self, self.CloseSelf)
  19. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_GET_UNION_INFO, self.RES_GET_UNION_INFO, self)
  20. SL:RegisterLUAEvent(LUA_EVENT_UNION_CAMPAIGN_DATA, self.SetData, self)
  21. SL:RegisterLUAEvent(LUA_EVENT_UNION_CAMPAIGN_VOTE_CHANGE, self.UpdateVoteNum, self)
  22. end
  23. function this:RES_GET_UNION_INFO(id, message)
  24. local tipdes ="在投票结束时,若同意人数多于反对人数则".."<color=#1add1f>".."弹劾成功".. "</color>"..",当前盟主将变为普通成员,且战盟变为".."<color=#ff2323>".."无盟主状态".. "</color>"
  25. GUI:Text_setString(self.view.txtDesc, tipdes)
  26. self.level = tonumber(message.unionlevel)
  27. local cfg = SL:GetConfig("cfg_unionLevel", self.level, "unionLevel")
  28. self.cfg = cfg
  29. local own = SL:GetBagItemCount(cfg.campaignVoteCast[1])
  30. local str = string.format("<color=%s>%s</color>", own >= cfg.campaignVoteCast[2] and "#1BE419" or "#9b1818",
  31. cfg.campaignVoteCast[2])
  32. GUI:Item_UpdataData(self.view.itemAgree, {
  33. ["itemid"] = cfg.campaignVoteCast[1]
  34. })
  35. GUI:Text_setString(self.view.txtAgree, str)
  36. GUI:Item_UpdataData(self.view.itemRefuse, {
  37. ["itemid"] = self.cfg.campaignVoteCast[1]
  38. })
  39. GUI:Text_setString(self.view.txtRefuse, str)
  40. if message.leaderid ~= "0" then
  41. local leaderInfo = message.memberinfos[message.leaderid]
  42. GUI:Text_setString(self.view.txtName,
  43. "是否同意弹劾当前盟主" .. string.format("<color=#E07907>%s</color>", leaderInfo.name))
  44. else
  45. GUI:Text_setString(self.view.txtName, "是否同意弹劾当前盟主")
  46. end
  47. self:SetData()
  48. end
  49. function this:SetData()
  50. self:UpdateVoteNum()
  51. self:UnSchedule()
  52. local endTime = InfoManager.unionElectionInfo:GetCampaignEndTime()
  53. if endTime then
  54. endTime = tonumber(endTime)
  55. --local delta = endTime - SL:server
  56. local nowTime = SL:GetMetaValue(EMetaVarGetKey.SERVER_TIME)
  57. local deltaTime = endTime - tonumber(nowTime)
  58. local preStr = "弹劾结束倒计时:"
  59. if deltaTime > 0 then
  60. local takeABreak = false
  61. self.schedule = SL:Schedule(self.schedule, 0, 1, deltaTime // 1000 + 2, function()
  62. local nowTime_ = SL:GetMetaValue(EMetaVarGetKey.SERVER_TIME)
  63. local deltaTime_ = endTime - tonumber(nowTime_)
  64. if deltaTime_ <= 0 then
  65. deltaTime_ = 0
  66. if takeABreak == false then
  67. takeABreak = true
  68. else
  69. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_GET_UNION_IMPEACH_INFO)
  70. SL:onLUAEvent(LUA_EVENT_CHANGE_UNION_FUNCTION, "infoToggle")
  71. GUI:UIPanel_Close(self.filePath)
  72. return
  73. end
  74. end
  75. GUI:Text_setString(self.view.txtCountDown, preStr .. InfoManager.unionElectionInfo.FormatTimeStr(deltaTime_))
  76. end)
  77. else
  78. deltaTime = 0
  79. GUI:Text_setString(self.view.txtCountDown, preStr .. InfoManager.unionElectionInfo.FormatTimeStr(deltaTime))
  80. end
  81. end
  82. end
  83. function this:UpdateVoteNum()
  84. GUI:Text_setString(self.view.txtAgreeNum, tostring(InfoManager.unionElectionInfo:GetCampaignAgreeNum()))
  85. GUI:Text_setString(self.view.txtDisagreeNum, tostring(InfoManager.unionElectionInfo:GetCampaignOpposeNum()))
  86. end
  87. function this:AgreeOnClick()
  88. if not self.level then return end
  89. ---弹劾发起者不可投票
  90. if SL:GetMetaValue("UID") == tonumber(InfoManager.unionElectionInfo.campaignData.initiator) then return end
  91. GUI:UIPanel_Open("dev/outui/Union/Panel/KLUnionLeaderOperate/KLUnionLeaderOperatePanel",
  92. _, _, { type = EUnionLeaderOperateType.Campaign, unionLevel = self.level, isAgree = true })
  93. end
  94. function this:RefuseOnClick()
  95. if not self.level then return end
  96. ---弹劾发起者不可投票
  97. if SL:GetMetaValue("UID") == tonumber(InfoManager.unionElectionInfo.campaignData.initiator) then return end
  98. GUI:UIPanel_Open("dev/outui/Union/Panel/KLUnionLeaderOperate/KLUnionLeaderOperatePanel",
  99. _, _, { type = EUnionLeaderOperateType.Campaign, unionLevel = self.level, isAgree = false })
  100. end
  101. function this:CloseSelf()
  102. GUI:UIPanel_Close(self.filePath)
  103. GUI:UIPanel_Close("dev/ui/Union/Panel/KLUnionToggleList/KLUnionToggleListPanel")
  104. SL.ShowMainPanel()
  105. end
  106. function this:Close()
  107. self:UnSchedule()
  108. end
  109. function this:UnSchedule()
  110. if self.schedule then
  111. SL:UnSchedule(self.schedule)
  112. end
  113. self.schedule = nil
  114. end
  115. return this