UnionElectionInfo.lua 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. ---@class UnionElectionInfo
  2. UnionElectionInfo = class()
  3. local this = UnionElectionInfo
  4. ---@class UnionProto.UnionInfo
  5. ---@field unionId number @行会id
  6. ---@field unionName string @行会名字
  7. ---@field unionLevel number @行会等级
  8. ---@field unionExp number @行会经验
  9. ---@field unionCapital number @ 行会资金
  10. ---@field grade string @战盟评分
  11. ---@field announcement string @招募公告
  12. ---@field unionArmband number @行会臂章
  13. ---@field leaderOnTime number @盟主上位时间
  14. ---@field unionMemberInfo UnionProto.UnionMemberInfo[] @成员信息
  15. ---@class UnionProto.UnionMemberInfo
  16. ---@field name string @名称
  17. ---@field memberId number @成员id
  18. ---@field level number @等级
  19. ---@field position number @1表示盟主,2表示副盟主,3表示战斗队长,4表示精英,5表示成员
  20. ---@field onlineState number @1表示在线,0表示不在线
  21. ---@field time number @离线时间
  22. ---@field fightValue number @ 战力
  23. ---@field devote number @ 贡献值
  24. ---@field career number @需要职业 战士1 法师2 弓箭手3
  25. ---@class UnionProto.ViewUnionRes
  26. ---@field unionInfo UnionProto.UnionInfo
  27. function this:ctor()
  28. end
  29. function this:Reset()
  30. self.electionData = nil
  31. self.replaceData = nil
  32. self.campaignData = nil
  33. end
  34. function this:Init()
  35. self:InitData()
  36. self:RegistMessages()
  37. end
  38. function this:InitData()
  39. end
  40. function this:RegistMessages()
  41. --竞选与取代
  42. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_UNION_RUN_FOR_LEADER_DATA , self.RES_UNION_RUN_FOR_LEADER_DATA , self)
  43. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_PLAYER_RUN_FOR_LEADER_VOTE, self.RES_PLAYER_RUN_FOR_LEADER_VOTE, self)
  44. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_PLAYER_RUN_FOR_LEADER, self.RES_PLAYER_RUN_FOR_LEADER, self)
  45. --弹劾
  46. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_SEND_UNION_IMPEACH_INFO, self.RES_SEND_UNION_IMPEACH_INFO, self)
  47. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_UNION_IMPEACH_LEADER, self.RES_UNION_IMPEACH_LEADER, self)
  48. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_UNION_IMPEACH_VOTE, self.RES_UNION_IMPEACH_VOTE, self)
  49. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_GET_UNION_INFO, self.RES_GET_UNION_INFO, self)
  50. end
  51. function this:RES_GET_UNION_INFO(_, message)
  52. self.MyUnionInfo = message
  53. end
  54. --更新竞选数据
  55. function this:RES_UNION_RUN_FOR_LEADER_DATA(id, data)
  56. if data.isreplace == nil then
  57. self.electionData = nil
  58. self.replaceData = nil
  59. else
  60. if data.isreplace == false then
  61. self.electionData = data
  62. else
  63. self.replaceData = data
  64. end
  65. end
  66. SL:onLUAEvent(LUA_EVENT_ELECTION_DATA_CHANGE, data.isreplace)
  67. end
  68. --更新投票数据
  69. function this:RES_PLAYER_RUN_FOR_LEADER_VOTE(id, data)
  70. local rid = tostring(data["1"])
  71. local ticket = data["2"]
  72. local dataList = self:GetElectionDataList()
  73. if dataList then
  74. if dataList[rid] then
  75. dataList[rid].count = dataList[rid].count + ticket
  76. else
  77. dataList[rid] = {}
  78. dataList[rid].count = ticket
  79. end
  80. SL:onLUAEvent(LUA_EVENT_ELECTION_DATA_CHANGE, false)
  81. end
  82. end
  83. --发起竞选/取代成功后跳转对应功能
  84. function this:RES_PLAYER_RUN_FOR_LEADER(id, message)
  85. if message == 2 or message == "2" then
  86. SL:onLUAEvent(LUA_EVENT_CHANGE_UNION_FUNCTION, "replaceToggle")
  87. else
  88. SL:onLUAEvent(LUA_EVENT_CHANGE_UNION_FUNCTION, "electionToggle")
  89. end
  90. end
  91. --更新战盟弹劾数据
  92. function this:RES_SEND_UNION_IMPEACH_INFO(id, message)
  93. self.campaignData = message
  94. SL:onLUAEvent(LUA_EVENT_UNION_CAMPAIGN_DATA)
  95. end
  96. --发起弹劾盟主成功后跳转弹劾页面
  97. function this:RES_UNION_IMPEACH_LEADER(id, message)
  98. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_GET_UNION_IMPEACH_INFO)
  99. SL:onLUAEvent(LUA_EVENT_CHANGE_UNION_FUNCTION, "campaignToggle")
  100. end
  101. --弹劾盟主投票数据变化
  102. function this:RES_UNION_IMPEACH_VOTE(id, message)
  103. if self.campaignData then
  104. if tonumber(message) == 1 then
  105. if not self.campaignData.agreelist then
  106. self.campaignData.agreelist = {}
  107. end
  108. table.insert(self.campaignData.agreelist, 1)
  109. else
  110. if not self.campaignData.disagreelist then
  111. self.campaignData.disagreelist = {}
  112. end
  113. table.insert(self.campaignData.disagreelist, 1)
  114. end
  115. end
  116. SL:onLUAEvent(LUA_EVENT_UNION_CAMPAIGN_VOTE_CHANGE)
  117. end
  118. --竞选人列表
  119. function this:GetElectionDataList()
  120. if self.electionData and self.electionData.ridlist and next(self.electionData.ridlist) then
  121. if self.MyUnionInfo and self.MyUnionInfo.memberinfos then
  122. local list = {}
  123. for i, v in pairs(self.electionData.ridlist) do
  124. if self.MyUnionInfo.memberinfos[i] then
  125. list[i] = v
  126. end
  127. end
  128. return list
  129. end
  130. return nil
  131. else
  132. return nil
  133. end
  134. end
  135. --竞选结束时间
  136. function this:GetElectionEndTime()
  137. return self.electionData and self.electionData.endtime or nil
  138. end
  139. --取代人列表
  140. function this:GetReplaceDataList()
  141. if self.replaceData and self.replaceData.ridlist and next(self.replaceData.ridlist) then
  142. if self.MyUnionInfo and self.MyUnionInfo.memberinfos then
  143. local list = {}
  144. for i, v in pairs(self.replaceData.ridlist) do
  145. if self.MyUnionInfo.memberinfos[i] then
  146. list[i] = v
  147. end
  148. end
  149. return list
  150. end
  151. return nil
  152. else
  153. return nil
  154. end
  155. end
  156. --取代结束时间
  157. function this:GetReplaceEndTime()
  158. return self.replaceData and self.replaceData.endtime or nil
  159. end
  160. --获取弹劾数据
  161. function this:GetCampaignData()
  162. return self.campaignData
  163. end
  164. --获取弹劾赞成的票数
  165. function this:GetCampaignAgreeNum()
  166. return self.campaignData and table.count(self.campaignData.agreelist) or 0
  167. end
  168. --获取弹劾反对的票数
  169. function this:GetCampaignOpposeNum()
  170. return self.campaignData and table.count(self.campaignData.disagreelist) or 0
  171. end
  172. --取代结束时间
  173. function this:GetCampaignEndTime()
  174. return self.campaignData and self.campaignData.endtime or nil
  175. end
  176. --获取加入战盟的时间(分钟)
  177. function this:GetJoinUnionTime()
  178. if table.isNullOrEmpty(self.MyUnionInfo) then
  179. return 0
  180. end
  181. for id, info in pairs(self.MyUnionInfo.memberinfos) do
  182. if id == tostring(SL:MeData_GetId()) then
  183. local time = (Time.GetServerTime() - tonumber(info.jointime)) // 1000
  184. return time//60
  185. end
  186. end
  187. return 0
  188. end
  189. --单位毫秒
  190. function this.FormatTimeStr(time)
  191. time = time // 1000
  192. local s = time % 60
  193. local m = time // 60 % 60
  194. local h = time // 3600 % 24
  195. return string.format("%d时%d分%d秒", h, m, s);
  196. end