GuildDataMgr.lua 41 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097
  1. local GuildDataMgr = class('GuildDataMgr', require('DataBase'))
  2. local GuildData = require('Guild/GuildData')
  3. local REQ_GUILD_CD = 1000
  4. function GuildDataMgr:ctor()
  5. self.lastSendMsgTimeMap = nil -- 发送消息的冷却时间,避免操作过快
  6. self.curGuildData = nil -- 自身公会数据
  7. self.recommendGuildDatas = nil -- 推荐公会列表
  8. self.searchGuildDatas = nil -- 查询的公会列表数据
  9. self.searchString = nil
  10. self.checkGuildData = nil -- 查看的公会列表数据
  11. end
  12. function GuildDataMgr:Clear()
  13. self.lastSendMsgTimeMap = nil
  14. self.curGuildData = nil
  15. self.recommendGuildDatas = nil
  16. self.searchGuildDatas = nil
  17. self.searchString = nil
  18. self.checkGuildData = nil
  19. self:DisposeGuildHuntBattle()
  20. end
  21. function GuildDataMgr:Destroy()
  22. self:UnRegisterNetEvents()
  23. self.lastSendMsgTimeMap = nil
  24. self.curGuildData = nil
  25. self.recommendGuildDatas = nil
  26. self.searchGuildDatas = nil
  27. self.searchString = nil
  28. self.checkGuildData = nil
  29. self:DisposeGuildHuntBattle()
  30. end
  31. function GuildDataMgr:RegisterNetEvents()
  32. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_ONLINE_PLAYER_GUILD_ACK, self.OnGuildLoginAck, self)
  33. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_BUILD_GUILD_ACK, self.OnGuildCreateAck, self)
  34. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_APPLY_GUILD_ACK, self.OnGuildEnterApplyAck, self)
  35. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_GUILD_INFO_ACK, self.OnGuildInfoAck, self)
  36. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_GET_SELF_GUILD_INFO_ACK, self.OnGuildSelfInfoAck, self)
  37. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_RECOMMEND_GUILD_INFO_ACK, self.OnGuildRecommendListAck, self)
  38. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_SEARCH_GUILD_ACK, self.OnGuildSearchListAck, self)
  39. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_GUILD_MEMBER_INFO_ACK, self.OnGuildMemberMoreInfoAck, self)
  40. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_GUILD_LOG_INFO_ACK, self.OnGuildLogInfoAck, self)
  41. -- 公会管理操作
  42. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_GUILD_APPLY_DATA_ACK, self.OnGuildApplyDataAck, self)
  43. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_APPLY_INFO_HANDLE_ACK, self.OnApplyInfoHandleAck, self)
  44. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_APPLY_INFO_HANDLE_NTF, self.OnApplyInfoHandleNtf, self)
  45. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_SET_GUILD_INFO_ACK, self.OnSetGuildInfoAck, self)
  46. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_DISBAND_GUILD_ACK, self.OnDisbandGuildAck, self)
  47. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_QUIT_GUILD_ACK, self.OnQuitGuildAck, self)
  48. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_QUIT_GUILD_CD_NTF, self.OnQuitGuildCDNtf, self)
  49. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_GUILD_RE_NOTICE_ACK, self.OnGuildReNoticeAck, self)
  50. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_GUILD_RENAME_ACK, self.OnGuildRenameAck, self)
  51. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_GUILD_NAME_CHANGE_NTF, self.OnGuildRenameNtf, self)
  52. -- 公会人员操作
  53. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_CHANGE_MEMBER_TITLE_ACK, self.OnChangeMemeberPostAck, self)
  54. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_CHANGE_MEMBER_TITLE_NTF, self.OnChangeMemeberPostNtf, self)
  55. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_KICK_GUILD_MEMBER_ACK, self.OnKickGuildMemberAck, self)
  56. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_KICK_GUILD_MEMBER_NTF, self.OnKickGuildMemberNtf, self)
  57. -- 公会狩猎
  58. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_GUILD_BOSS_INFO_ACK, self.OnGuildBossInfoAck, self)
  59. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_GUILD_BOSS_LOG_ACK, self.OnGuildBossLogAck, self)
  60. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_GUILD_BOSS_CHALLENGE_ACK, self.OnGuildBossChallengeAck, self)
  61. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_GUILD_BOSS_SUMMON_ACK, self.OnGuildBossSummonAck, self)
  62. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_GUILD_BOSS_EXTRA_REWARD_ACK, self.OnGuildBossMasterRewardAck, self)
  63. end
  64. function GuildDataMgr:UnRegisterNetEvents()
  65. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_ONLINE_PLAYER_GUILD_ACK)
  66. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_BUILD_GUILD_ACK)
  67. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_APPLY_GUILD_ACK)
  68. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_GUILD_INFO_ACK)
  69. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_GET_SELF_GUILD_INFO_ACK)
  70. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_RECOMMEND_GUILD_INFO_ACK)
  71. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_SEARCH_GUILD_ACK)
  72. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_GUILD_MEMBER_INFO_ACK)
  73. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_GUILD_LOG_INFO_ACK)
  74. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_GUILD_APPLY_DATA_ACK)
  75. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_APPLY_INFO_HANDLE_ACK)
  76. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_APPLY_INFO_HANDLE_NTF)
  77. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_SET_GUILD_INFO_ACK)
  78. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_DISBAND_GUILD_ACK)
  79. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_QUIT_GUILD_ACK)
  80. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_QUIT_GUILD_CD_NTF)
  81. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_GUILD_RE_NOTICE_ACK)
  82. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_GUILD_RENAME_ACK)
  83. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_GUILD_NAME_CHANGE_NTF)
  84. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_CHANGE_MEMBER_TITLE_ACK)
  85. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_CHANGE_MEMBER_TITLE_NTF)
  86. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_KICK_GUILD_MEMBER_ACK)
  87. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_KICK_GUILD_MEMBER_NTF)
  88. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_GUILD_BOSS_INFO_ACK)
  89. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_GUILD_BOSS_LOG_ACK)
  90. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_GUILD_BOSS_CHALLENGE_ACK)
  91. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_GUILD_BOSS_SUMMON_ACK)
  92. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_GUILD_BOSS_EXTRA_REWARD_ACK)
  93. end
  94. function GuildDataMgr:IsCanSend(key, cdTime)
  95. local curTime = ManagerContainer.LuaTimerMgr:CurLuaServerTime()
  96. if not self.lastSendMsgTimeMap then
  97. self.lastSendMsgTimeMap = {}
  98. self.lastSendMsgTimeMap[key] = curTime
  99. return true
  100. end
  101. local lastTime = self.lastSendMsgTimeMap[key]
  102. if lastTime then
  103. local cd = cdTime or REQ_GUILD_CD
  104. if (curTime - lastTime) < cd then
  105. return false
  106. end
  107. end
  108. self.lastSendMsgTimeMap[key] = curTime
  109. return true
  110. end
  111. function GuildDataMgr:CheckErrorCode(data)
  112. if ManagerContainer.NetManager:IsErrorData(data) then
  113. if data and data.error then
  114. if data.error == Enum.NetErrorCode.ERROR_GUILD_NOT_IN_GUILD then
  115. if self:HasGuild() then
  116. if self.curGuildData then
  117. self.curGuildData:ClearGuildData()
  118. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.GUILD_QUIT_SUCCESS)
  119. end
  120. end
  121. elseif data.error == Enum.NetErrorCode.ERROR_GUILD_IN_GUILD then
  122. if not self:HasGuild() then
  123. ManagerContainer.DataMgr.GuildDataMgr:SendGuildLoginReq()
  124. end
  125. end
  126. end
  127. return true
  128. end
  129. return false
  130. end
  131. function GuildDataMgr:OnGuildLoginAck(data)
  132. --LogError("[wboy] GuildDataMgr:OnGuildLoginAck " .. Inspect(data))
  133. if self:CheckErrorCode(data) then
  134. return
  135. end
  136. if not self.curGuildData then
  137. self.curGuildData = GuildData:new()
  138. end
  139. self.curGuildData:SetNotifyData(data.data)
  140. self.curGuildData:SetNextCDTime(data.next_join)
  141. if data.msgRec then
  142. local chatData = ManagerContainer.DataMgr.ChatData
  143. if chatData then
  144. local len = #data.msgRec
  145. if len > 0 then
  146. for i = 1, #data.msgRec do
  147. chatData:AddNewChatData(data.msgRec[i])
  148. end
  149. chatData:SortWorldChats()
  150. end
  151. end
  152. end
  153. ManagerContainer.DataMgr.GuildWarDataMgr:SetOpenState(data.in_guild_battle)
  154. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.GUILD_LOGIN_SUCCESS)
  155. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.GuildHuntBoss, data.boss)
  156. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.GuildDemonBoss, data.boss)
  157. end
  158. function GuildDataMgr:OnGuildCreateAck(data)
  159. LogError("[wboy] GuildDataMgr:OnGuildCreateAck " .. Inspect(data))
  160. if self:CheckErrorCode(data) then
  161. return
  162. end
  163. if self:HasGuild() then
  164. LogError("[wboy]Already in the guild, Build Guild Ack ?")
  165. end
  166. if not self.curGuildData then
  167. self.curGuildData = GuildData:new()
  168. end
  169. self.curGuildData:SetBriefData(data.guild_brief)
  170. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.GUILD_CREATE_SUCCESS)
  171. end
  172. function GuildDataMgr:OnGuildEnterApplyAck(data)
  173. -- LogError("[wboy] GuildDataMgr:OnGuildEnterApplyAck " .. Inspect(data))
  174. if self:CheckErrorCode(data) then
  175. return
  176. end
  177. local id = data.guild_id
  178. if not self.checkGuildData or not self.checkGuildData:IsSameGuild(id) then return end
  179. local isSubmit = ((data.op_type == 1) and true or false)
  180. self.checkGuildData:SetSubmitApply(isSubmit)
  181. if self.searchGuildDatas then
  182. for k, v in pairs(self.searchGuildDatas) do
  183. if v:IsSameGuild(id) then
  184. v:SetSubmitApply(isSubmit)
  185. end
  186. end
  187. end
  188. if self.recommendGuildDatas then
  189. for k, v in pairs(self.recommendGuildDatas) do
  190. if v:IsSameGuild(id) then
  191. v:SetSubmitApply(isSubmit)
  192. end
  193. end
  194. end
  195. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.GUILD_SUBMIT_APPLY_CHANGED)
  196. self:ReportEnterApple(true)
  197. end
  198. function GuildDataMgr:ReportEnterApple(success)
  199. if not SDKMgr.Instance:IsReportAction() then
  200. return
  201. end
  202. --local datas = System.Collections.Generic.Dictionary_object_object()
  203. --datas:Add('event', 'mj_guild')
  204. --datas:Add('is_achieve', (success and 1 or 0))
  205. --SDKMgr.Instance:ReportAction(datas)
  206. LogError("----------加入工会----------");
  207. local sdkrptMgr = ManagerContainer.SDKEventReportMgr
  208. sdkrptMgr:SendEvent(sdkrptMgr.EventType.Join_guild)
  209. end
  210. function GuildDataMgr:OnKickGuildMemberAck(data)
  211. -- LogError("[wboy] GuildDataMgr:OnKickGuildMemberAck " .. Inspect(data))
  212. if self:CheckErrorCode(data) then
  213. return
  214. end
  215. local uid = data.uid
  216. if not self.curGuildData then return end
  217. local changed = self.curGuildData:KickMember(uid)
  218. if changed then
  219. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.GUILD_MEMBER_MORE_INFO_CHANGED, self.curGuildData:GetId())
  220. end
  221. end
  222. function GuildDataMgr:OnKickGuildMemberNtf(data)
  223. -- LogError("[wboy] GuildDataMgr:OnKickGuildMemberNtf " .. Inspect(data))
  224. if self:CheckErrorCode(data) then
  225. return
  226. end
  227. local id = data.guild_id
  228. local uid = data.uid
  229. if not self.curGuildData then return end
  230. if not self.curGuildData:IsSameGuild(id) then return end
  231. if ManagerContainer.DataMgr.UserData:GetUserId() ~= uid then return end
  232. self.curGuildData:ClearGuildData()
  233. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.GUILD_KICKOUT_SUCCESS)
  234. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('GuildTips_025')
  235. ManagerContainer.DataMgr.ChatData:ClearGuildChatData()
  236. --清除本次上线公会BOSS和魔王BOSS红点消息
  237. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.GuildDemonBoss, false)
  238. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.GuildHuntBoss, false)
  239. end
  240. function GuildDataMgr:OnGuildApplyDataAck(data)
  241. -- LogError("[wboy] GuildDataMgr:OnGuildApplyDataAck " .. Inspect(data))
  242. if self:CheckErrorCode(data) then
  243. return
  244. end
  245. if not self.curGuildData then return end
  246. self.curGuildData:SetAuditApplyData(data.uid_list)
  247. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.GUILD_GET_AUDIT_APPLY_BASE_LIST_CHANGED)
  248. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.GuildAuditApply, self.curGuildData:GetIsHasApply())
  249. end
  250. function GuildDataMgr:OnApplyInfoHandleAck(data)
  251. -- LogError("[wboy] GuildDataMgr:OnApplyInfoHandleAck " .. Inspect(data))
  252. if self:CheckErrorCode(data) then
  253. return
  254. end
  255. local id = data.guild_id
  256. if not self.curGuildData then return end
  257. if not self.curGuildData:IsSameGuild(id) then return end
  258. local handleType = data.handle_type
  259. local status, errorCode = self.curGuildData:SetAuditApplyHandle(handleType, data.uid_list)
  260. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.GuildAuditApply, self.curGuildData:GetIsHasApply())
  261. if status == 1 then
  262. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.GUILD_GET_AUDIT_APPLY_LIST_CHANGED)
  263. elseif status == 2 then
  264. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.GUILD_GET_AUDIT_APPLY_LIST_CHANGED)
  265. end
  266. if errorCode and errorCode ~= 0 then
  267. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(errorCode)
  268. else
  269. if handleType == Enum.GuildAduitApplyHandleType.AllAllow then
  270. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('GuildTips_029')
  271. elseif handleType == Enum.GuildAduitApplyHandleType.AllRefuse then
  272. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('GuildTips_031')
  273. elseif handleType == Enum.GuildAduitApplyHandleType.One then
  274. if status == 1 then
  275. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('GuildTips_028')
  276. elseif status == 2 then
  277. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('GuildTips_026')
  278. end
  279. end
  280. end
  281. end
  282. function GuildDataMgr:OnApplyInfoHandleNtf(data)
  283. -- LogError("[wboy] GuildDataMgr:OnApplyInfoHandleNtf " .. Inspect(data))
  284. if self:CheckErrorCode(data) then
  285. return
  286. end
  287. if data.apply_result ~= 1 then return end
  288. local uid = data.uid
  289. if ManagerContainer.DataMgr.UserData:GetUserId() ~= uid then return end
  290. local id = data.guild_id
  291. if self.curGuildData then
  292. if self:HasGuild() and not self.curGuildData:IsSameGuild(id) then
  293. LogError('[wboy] current guild is ' .. self.curGuildData:GetId() .. ',but new Guild is ' .. tostring(id))
  294. end
  295. else
  296. self.curGuildData = GuildData:new()
  297. end
  298. self.curGuildData:SetNotifyData(data.data)
  299. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.GUILD_ENTER_SUCCESS)
  300. end
  301. function GuildDataMgr:OnSetGuildInfoAck(data)
  302. -- LogError("[wboy] GuildDataMgr:OnSetGuildInfoAck " .. Inspect(data))
  303. if self:CheckErrorCode(data) then
  304. return
  305. end
  306. if not self.curGuildData then return end
  307. if self.curGuildData:SetGuildBadge(data.guild_badge) then
  308. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.GUILD_BADGE_CHANGED)
  309. end
  310. if self.curGuildData:SetGuildRecuitInfo(data.join_type, data.join_level, data.recruit_notice) then
  311. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.GUILD_RECUIT_CHANGED)
  312. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('GuildTips_036')
  313. end
  314. end
  315. function GuildDataMgr:OnDisbandGuildAck(data)
  316. -- LogError("[wboy] GuildDataMgr:OnDisbandGuildAck " .. Inspect(data))
  317. if self:CheckErrorCode(data) then
  318. return
  319. end
  320. if not self:HasGuild() then return end
  321. if not self.curGuildData then return end
  322. self.curGuildData:ClearGuildData()
  323. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.GUILD_DISBAND_SUCCESS)
  324. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('GuildTips_008')
  325. ManagerContainer.DataMgr.ChatData:ClearGuildChatData()
  326. --清除本次上线公会BOSS和魔王BOSS红点消息
  327. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.GuildDemonBoss, false)
  328. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.GuildHuntBoss, false)
  329. end
  330. function GuildDataMgr:OnQuitGuildAck(data)
  331. -- LogError("[wboy] GuildDataMgr:OnQuitGuildAck " .. Inspect(data))
  332. if ManagerContainer.NetManager:IsErrorData(data) then
  333. return
  334. end
  335. if not self:HasGuild() then return end
  336. if not self.curGuildData then return end
  337. self.curGuildData:ClearGuildData()
  338. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.GUILD_QUIT_SUCCESS)
  339. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('GuildTips_007')
  340. ManagerContainer.DataMgr.ChatData:ClearGuildChatData()
  341. --清除本次上线公会BOSS和魔王BOSS红点消息
  342. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.GuildDemonBoss, false)
  343. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.GuildHuntBoss, false)
  344. end
  345. function GuildDataMgr:OnQuitGuildCDNtf(data)
  346. -- LogError("[wboy] GuildDataMgr:OnQuitGuildCDNtf " .. Inspect(data))
  347. if self:CheckErrorCode(data) then
  348. return
  349. end
  350. if not self.curGuildData then return end
  351. if self.curGuildData:SetGuildQuitData(data.quit_num, data.next_join) then
  352. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.GUILD_QUIT_CD_CHANGED)
  353. end
  354. end
  355. function GuildDataMgr:OnGuildReNoticeAck(data)
  356. -- LogError("[wboy] GuildDataMgr:OnGuildReNoticeAck " .. Inspect(data))
  357. if self:CheckErrorCode(data) then
  358. return
  359. end
  360. if not self:HasGuild() then return end
  361. if not self.curGuildData then return end
  362. if self.curGuildData:SetGuildNotice(data.guild_notice) then
  363. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.GUILD_NOTICE_CHANGED)
  364. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('GuildTips_011')
  365. end
  366. end
  367. function GuildDataMgr:OnGuildRenameAck(data)
  368. -- LogError("[wboy] GuildDataMgr:OnGuildRenameAck " .. Inspect(data))
  369. if self:CheckErrorCode(data) then
  370. return
  371. end
  372. if not self:HasGuild() then return end
  373. if not self.curGuildData then return end
  374. if self.curGuildData:SetGuildName(data.guild_name) then
  375. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.GUILD_NAME_CHANGED)
  376. end
  377. end
  378. function GuildDataMgr:OnGuildRenameNtf(data)
  379. -- LogError("[wboy] GuildDataMgr:OnGuildRenameNtf " .. Inspect(data))
  380. if self:CheckErrorCode(data) then
  381. return
  382. end
  383. if not self:HasGuild() then return end
  384. if not self.curGuildData then return end
  385. if not self.curGuildData:IsSameGuild(data.guild_id) then return end
  386. if self.curGuildData:SetGuildName(data.guild_name) then
  387. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.GUILD_NAME_CHANGED)
  388. end
  389. end
  390. function GuildDataMgr:OnChangeMemeberPostAck(data)
  391. -- LogError("[wboy] GuildDataMgr:OnChangeMemeberPostAck " .. Inspect(data))
  392. if self:CheckErrorCode(data) then
  393. return
  394. end
  395. if not self:HasGuild() then return end
  396. if not self.curGuildData then return end
  397. local uid = data.uid
  398. local post = data.title
  399. local lastPost = self.curGuildData:GetGuildMemberPost(uid, post)
  400. local changed = self.curGuildData:ChangeMemberPost(uid, post)
  401. if changed then
  402. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.GUILD_MEMBER_MORE_INFO_CHANGED, self.curGuildData:GetId())
  403. if post == Enum.GuildPostType.President then
  404. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('GuildTips_016')
  405. else
  406. if lastPost == Enum.GuildPostType.None then
  407. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('GuildTips_018')
  408. elseif lastPost == Enum.GuildPostType.VicePresident then
  409. if post == Enum.GuildPostType.None then
  410. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('GuildTips_020')
  411. else
  412. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('GuildTips_018')
  413. end
  414. end
  415. end
  416. end
  417. end
  418. function GuildDataMgr:OnChangeMemeberPostNtf(data)
  419. -- LogError("[wboy] GuildDataMgr:OnChangeMemeberPostNtf " .. Inspect(data))
  420. if self:CheckErrorCode(data) then
  421. return
  422. end
  423. if not self:HasGuild() then return end
  424. if not self.curGuildData then return end
  425. if not self.curGuildData:IsSameGuild(data.guild_id) then return end
  426. local changed = false
  427. if data.uid_list then
  428. for i = 1, #data.uid_list do
  429. local change = data.uid_list[i]
  430. if self.curGuildData:ChangeMemberPost(change.key, change.value) then
  431. changed = true
  432. end
  433. end
  434. end
  435. if changed then
  436. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.GUILD_MEMBER_MORE_INFO_CHANGED, self.curGuildData:GetId())
  437. end
  438. end
  439. function GuildDataMgr:OnGuildInfoAck(data)
  440. -- LogError("[wboy] GuildDataMgr:OnGuildInfoAck " .. Inspect(data))
  441. if self:CheckErrorCode(data) then
  442. return
  443. end
  444. local guildData = GuildData:new()
  445. guildData:SetBaseData(data.guild_Base)
  446. guildData:SetMemberBriefDatas(data.mem_brief)
  447. guildData:SetRoleGuildData(data.role_guild, data.total_active)
  448. guildData:SetSubmitApply(data.apply)
  449. self.checkGuildData = guildData
  450. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.GUILD_OTHER_MORE_INFO_CHANGED)
  451. end
  452. function GuildDataMgr:OnGuildSelfInfoAck(data)
  453. -- LogError("[wboy] GuildDataMgr:OnGuildSelfInfoAck " .. Inspect(data))
  454. if self:CheckErrorCode(data) then
  455. return
  456. end
  457. if not self.curGuildData then
  458. self.curGuildData = GuildData:new()
  459. end
  460. self.curGuildData:SetBaseData(data.guild_Base)
  461. self.curGuildData:SetMemberBriefDatas(data.mem_brief)
  462. self.curGuildData:SetRoleGuildData(data.role_guild, data.total_active)
  463. self.curGuildData:SetHasApply(data.apply_list)
  464. self.curGuildData:SetGuildWarInfo(data.guild_battle_state, data.next_state_begin, data.cp_num, data.guild_battle_rank)
  465. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.GUILD_SELF_MORE_INFO_CHANGED)
  466. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.GuildAuditApply, self.curGuildData:GetIsHasApply())
  467. end
  468. function GuildDataMgr:OnGuildRecommendListAck(data)
  469. -- LogError("[wboy] GuildDataMgr:OnGuildRecommendListAck " .. Inspect(data))
  470. if self:CheckErrorCode(data) then
  471. return
  472. end
  473. if not self.recommendGuildDatas then
  474. self.recommendGuildDatas = {}
  475. end
  476. local len1 = #self.recommendGuildDatas
  477. local len2 = 0
  478. local notifyDatas = data.data
  479. if notifyDatas then
  480. len2 = #notifyDatas
  481. for i = 1, len2 do
  482. local notifyData = notifyDatas[i]
  483. local guildData = nil
  484. if i <= len1 then
  485. guildData = self.recommendGuildDatas[i]
  486. guildData:Dispose()
  487. else
  488. guildData = GuildData:new()
  489. self.recommendGuildDatas[i] = guildData
  490. end
  491. guildData:SetNotifyData(notifyData)
  492. end
  493. end
  494. for i = len2 + 1, len1 do
  495. self.recommendGuildDatas[i] = nil
  496. end
  497. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.GUILD_RECOMMEND_LIST_CHANGED)
  498. end
  499. function GuildDataMgr:OnGuildSearchListAck(data)
  500. -- LogError("[wboy] GuildDataMgr:OnGuildSearchListAck " .. Inspect(data))
  501. if self:CheckErrorCode(data) then
  502. return
  503. end
  504. self.searchString = data.search_string
  505. if not self.searchGuildDatas then
  506. self.searchGuildDatas = {}
  507. end
  508. local len1 = #self.searchGuildDatas
  509. local len2 = 0
  510. local notifyDatas = data.data
  511. if notifyDatas then
  512. len2 = #notifyDatas
  513. for i = 1, len2 do
  514. local notifyData = notifyDatas[i]
  515. local guildData = nil
  516. if i <= len1 then
  517. guildData = self.searchGuildDatas[i]
  518. guildData:Dispose()
  519. else
  520. guildData = GuildData:new()
  521. self.searchGuildDatas[i] = guildData
  522. end
  523. guildData:SetNotifyData(notifyData)
  524. end
  525. end
  526. for i = len2 + 1, len1 do
  527. self.searchGuildDatas[i] = nil
  528. end
  529. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.GUILD_SEARCH_LIST_CHANGED)
  530. end
  531. function GuildDataMgr:OnGuildMemberMoreInfoAck(data)
  532. -- LogError("[wboy] GuildDataMgr:OnGuildMemberMoreInfoAck " .. Inspect(data))
  533. if self:CheckErrorCode(data) then
  534. return
  535. end
  536. local id = data.guild_id
  537. if self.curGuildData and self.curGuildData:IsSameGuild(id) then
  538. self.curGuildData:SetMemberInfoDatas(data.member_data)
  539. end
  540. if self.checkGuildData and self.checkGuildData:IsSameGuild(id) then
  541. self.checkGuildData:SetMemberInfoDatas(data.member_data)
  542. end
  543. if self.recommendGuildDatas then
  544. for _, value in pairs(self.recommendGuildDatas) do
  545. if value and value:IsSameGuild(id) then
  546. value:SetMemberInfoDatas(data.member_data)
  547. break
  548. end
  549. end
  550. end
  551. if self.searchGuildDatas then
  552. for _, value in pairs(self.searchGuildDatas) do
  553. if value and value:IsSameGuild(id) then
  554. value:SetMemberInfoDatas(data.member_data)
  555. break
  556. end
  557. end
  558. end
  559. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.GUILD_MEMBER_MORE_INFO_CHANGED, id)
  560. end
  561. function GuildDataMgr:OnGuildLogInfoAck(data)
  562. -- LogError("[wboy] GuildDataMgr:OnGuildLogInfoAck " .. Inspect(data))
  563. if self:CheckErrorCode(data) then
  564. return
  565. end
  566. if not self:HasGuild() then return end
  567. if not self.curGuildData then return end
  568. local changed, startChanged, endChanged = self.curGuildData:SetLogs(data.log, data.is_end)
  569. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.GUILD_LOG_CHANGED, changed, startChanged, endChanged)
  570. end
  571. function GuildDataMgr:OnGuildBossInfoAck(data)
  572. --LogError("[wboy] GuildDataMgr:OnGuildBossInfoAck " .. Inspect(data))
  573. if self:CheckErrorCode(data) then
  574. return
  575. end
  576. if not self:HasGuild() then return end
  577. if not self.curGuildData then return end
  578. self.curGuildData:SetHuntBossList(data.boss_data, data.boss_fight, data.elite_boss_cd)
  579. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.GUILD_HUNT_BOSS_LIST_CHANGED)
  580. end
  581. function GuildDataMgr:OnGuildBossLogAck(data)
  582. --LogError("[wboy] GuildDataMgr:OnGuildBossLogAck " .. Inspect(data))
  583. if self:CheckErrorCode(data) then
  584. return
  585. end
  586. if not self:HasGuild() then return end
  587. if not self.curGuildData then return end
  588. self.curGuildData:SetHuntBossLogs(data.boss_id, data.logs, data.is_end)
  589. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.GUILD_HUNT_BOSS_BATTLE_LOG_CHANGED, data.boss_id)
  590. end
  591. function GuildDataMgr:OnGuildBossChallengeAck(data)
  592. -- LogError("[wboy] GuildDataMgr:OnGuildBossChallengeAck " .. Inspect(data))
  593. if self:CheckErrorCode(data) then
  594. return
  595. end
  596. if not self:HasGuild() then return end
  597. if not self.curGuildData then return end
  598. if self.huntBattleInfo and self.huntBattleInfo.bossId == data.boss_id then
  599. local rewards = {}
  600. for i = 1, #data.reward do
  601. local reward = data.reward[i]
  602. rewards[#rewards + 1] = {cfgId = reward.key, num = reward.value}
  603. end
  604. self.huntBattleInfo.rewards = rewards
  605. end
  606. self:OpenHuntBattleRewardView()
  607. end
  608. function GuildDataMgr:OnGuildBossSummonAck(data)
  609. -- LogError("[wboy] GuildDataMgr:OnGuildBossSummonAck " .. Inspect(data))
  610. if self:CheckErrorCode(data) then
  611. return
  612. end
  613. if not self:HasGuild() then return end
  614. if not self.curGuildData then return end
  615. self.curGuildData:SetHuntBossInfo(data.boss_id, data.guild_active, data.fight_start, data.fight_count)
  616. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.GUILD_ACTIVE_CHANGED)
  617. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.GUILD_HUNT_BOSS_SUMMON_CHANGED, data.boss_id)
  618. end
  619. function GuildDataMgr:OnGuildBossMasterRewardAck(data)
  620. -- LogError("[wboy] GuildDataMgr:OnGuildBossMasterRewardAck " .. Inspect(data))
  621. if self:CheckErrorCode(data) then
  622. return
  623. end
  624. if not self:HasGuild() then return end
  625. if not self.curGuildData then return end
  626. self.curGuildData:SetHuntBossMasterReward(data.boss_id, data.brief, data.max_dam)
  627. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.GUILD_HUNT_MASTER_REWARD_CHANGED, data.boss_id)
  628. end
  629. --- 登录的时候获得公会的基础信息,用于其它功能
  630. function GuildDataMgr:SendGuildLoginReq()
  631. if not self:IsCanSend(1) then return false end
  632. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_ONLINE_PLAYER_GUILD_REQ)
  633. return true
  634. end
  635. --- 发送创建公会请求
  636. function GuildDataMgr:SendBuildGuildReq(name, badge)
  637. if not self:IsCanSend(2) then return false end
  638. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_BUILD_GUILD_REQ, {guild_name = name, guild_badge = badge})
  639. return true
  640. end
  641. --- 发送申请加入或取消申请公会请求
  642. function GuildDataMgr:SendGuildApplyReq(guildId, isSubmit)
  643. if not self:IsCanSend(3) then return false end
  644. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_APPLY_GUILD_REQ, {guild_id = guildId, op_type = (isSubmit and 1 or 2)})
  645. return true
  646. end
  647. function GuildDataMgr:SendGetGuildMoreInfoReq(guildId)
  648. if not self:IsCanSend(4) then return false end
  649. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_GUILD_INFO_REQ, {guild_id = guildId})
  650. return true
  651. end
  652. --- 获得公会推荐列表
  653. function GuildDataMgr:SendGetRecommendListReq()
  654. if not self:IsCanSend(5) then return false end
  655. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_RECOMMEND_GUILD_INFO_REQ)
  656. return true
  657. end
  658. --- 查询公会
  659. function GuildDataMgr:SendSearchGuildReq(text)
  660. if not self:IsCanSend(6) then return false end
  661. self.searchGuildDatas = nil
  662. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_SEARCH_GUILD_REQ, {search_string = text})
  663. return true
  664. end
  665. function GuildDataMgr:SendGetGuildSelfInfoReq()
  666. if not self:IsCanSend(7) then return false end
  667. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_GET_SELF_GUILD_INFO_REQ)
  668. return true
  669. end
  670. function GuildDataMgr:SendGetGuildMemberInfoReq(guildId, uids)
  671. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_GUILD_MEMBER_INFO_REQ, {guild_id = guildId, uid_list = uids})
  672. return true
  673. end
  674. function GuildDataMgr:SendGetAuditApplyListReq()
  675. if not self:IsCanSend(9) then return false end
  676. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_GUILD_APPLY_DATA_REQ)
  677. return true
  678. end
  679. function GuildDataMgr:SendApplyInfoHandleReq(apply, handleType)
  680. if not self:IsCanSend(10) then return false end
  681. local sendData = {apply = apply, handle_type = handleType}
  682. if handleType ~= Enum.GuildAduitApplyHandleType.One then
  683. if self.curGuildData then
  684. local uids = self.curGuildData:GetAuditApplyUids()
  685. sendData.uid_list = uids
  686. end
  687. end
  688. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_APPLY_INFO_HANDLE_REQ, sendData)
  689. return true
  690. end
  691. --- 发送设置公会信息请求
  692. function GuildDataMgr:SendSetGuildInfoReq(badge, recruitType, recruitLevel, recruitNotice)
  693. if not self:IsCanSend(11) then return false end
  694. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_SET_GUILD_INFO_REQ, {guild_badge = badge, join_level = recruitLevel, join_type = recruitType, recruit_notice = recruitNotice})
  695. return true
  696. end
  697. --- 发送解散公会请求
  698. function GuildDataMgr:SendDisbandGuildReq()
  699. if not self:IsCanSend(12) then return false end
  700. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_DISBAND_GUILD_REQ)
  701. return true
  702. end
  703. --- 发送退出公会请求
  704. function GuildDataMgr:SendQuitGuildReq()
  705. if not self:IsCanSend(13) then return false end
  706. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_QUIT_GUILD_REQ)
  707. return true
  708. end
  709. function GuildDataMgr:SendChangeNoticeReq(newNotice)
  710. if not self:IsCanSend(14) then return false end
  711. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_GUILD_RE_NOTICE_REQ, {guild_notice = newNotice})
  712. return true
  713. end
  714. function GuildDataMgr:SendGuildChangeNameReq(newName)
  715. if not self:IsCanSend(15) then return false end
  716. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_GUILD_RENAME_REQ, {guild_name = newName})
  717. return true
  718. end
  719. function GuildDataMgr:SendGetGuildLogInfoReq(startTime)
  720. -- if not self:IsCanSend(16) then return false end
  721. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_GUILD_LOG_INFO_REQ, {log_time = startTime})
  722. return true
  723. end
  724. --- 发送改变公会人员职位请求
  725. function GuildDataMgr:SendChangeMemberTitleReq(uid, post)
  726. if not self:IsCanSend(17) then return false end
  727. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_CHANGE_MEMBER_TITLE_REQ, {uid = uid, title = post})
  728. return true
  729. end
  730. --- 发送踢出公会请求
  731. function GuildDataMgr:SendKickGuildMemeberReq(uid)
  732. if not self:IsCanSend(18) then return false end
  733. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_KICK_GUILD_MEMBER_REQ, {uid = uid})
  734. return true
  735. end
  736. function GuildDataMgr:SendGuildHuntBossListInfoReq()
  737. if not self:IsCanSend(19) then return false end
  738. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_GUILD_BOSS_INFO_REQ)
  739. return true
  740. end
  741. function GuildDataMgr:SendGuildHuntBossLogReq(bossId, logTime)
  742. if not self:IsCanSend(20) then return false end
  743. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_GUILD_BOSS_LOG_REQ, { boss_id = bossId, log_time = logTime })
  744. return true
  745. end
  746. function GuildDataMgr:SendGuildHuntBossChallengeReq(bossId, damage, battleTime)
  747. if not self:IsCanSend(21) then return false end
  748. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_GUILD_BOSS_CHALLENGE_REQ, { boss_id = bossId, damage = damage, battle_time = battleTime })
  749. return true
  750. end
  751. function GuildDataMgr:SendGuildHuntBossSummonReq(bossId)
  752. if not self:IsCanSend(22) then return false end
  753. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_GUILD_BOSS_SUMMON_REQ, { boss_id = bossId })
  754. return true
  755. end
  756. function GuildDataMgr:SendGuildMasterRewardReq(bossId)
  757. if not self:IsCanSend(23) then return false end
  758. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_GUILD_BOSS_EXTRA_REWARD_REQ, { boss_id = bossId })
  759. return true
  760. end
  761. function GuildDataMgr:GetRecommendGuildDatas()
  762. return self.recommendGuildDatas
  763. end
  764. --- 由于除了推荐界面,其它地方不使用该数据,所以会清理数据
  765. function GuildDataMgr:ClearRecommendGuildDatas()
  766. self.recommendGuildDatas = nil
  767. end
  768. function GuildDataMgr:GetSearchGuildDatas()
  769. return self.searchGuildDatas
  770. end
  771. function GuildDataMgr:ResetSearchGuildDatas(searchString)
  772. self.searchGuildDatas = {}
  773. self.searchString = searchString
  774. end
  775. --- 由于除了推荐界面,其它地方不使用该数据,所以会清理数据
  776. function GuildDataMgr:ClearSearchGuildDatas()
  777. self.searchGuildDatas = nil
  778. self.searchString = nil
  779. end
  780. --- 获得当前公会数据的状态
  781. ---@return Enum.GuildDataState
  782. function GuildDataMgr:GetGuildDataState()
  783. if self.curGuildData == nil then
  784. return Enum.GuildDataState.NoData
  785. end
  786. if self.curGuildData:GetBriefData() then
  787. return Enum.GuildDataState.HasGuild
  788. end
  789. return Enum.GuildDataState.NoGuild
  790. end
  791. function GuildDataMgr:GetGuildDataStateErrorCode()
  792. if self.curGuildData == nil then
  793. return 'GuildTips_037'
  794. end
  795. if self.curGuildData:GetBriefData() then
  796. return nil
  797. end
  798. return 'GuildTips_037'
  799. end
  800. --- 是否有公会
  801. function GuildDataMgr:HasGuild()
  802. return self:GetGuildDataState() == Enum.GuildDataState.HasGuild
  803. end
  804. function GuildDataMgr:GetCurGuildData()
  805. return self.curGuildData
  806. end
  807. function GuildDataMgr:GetCheckGuildData()
  808. return self.checkGuildData
  809. end
  810. function GuildDataMgr:ClearCheckGuildData()
  811. self.checkGuildData = nil
  812. end
  813. ----------------------------- 公会狩猎 -----------------------------
  814. function GuildDataMgr:StartGuildHuntBattle(bossId)
  815. local huntBattleInfo = self.huntBattleInfo
  816. if huntBattleInfo and huntBattleInfo.isBattling then
  817. return
  818. end
  819. local bossCfgData = ManagerContainer.CfgMgr:GetGuildHuntBossCfgById(bossId)
  820. if not bossCfgData then return end
  821. if not huntBattleInfo then
  822. huntBattleInfo = {}
  823. self.huntBattleInfo = huntBattleInfo
  824. end
  825. huntBattleInfo.bossId = bossId
  826. huntBattleInfo.hurtValue = 0
  827. local teams = ManagerContainer.DataMgr.UserData:GetTeamData(true)
  828. local ourActors = System.Array.CreateInstance(Enum.TypeInfo.ActorData, #teams)
  829. for i = 1 , #teams do
  830. local actor = ManagerContainer.LuaActorDataMgr:GetActorsById(teams[i].uid,teams[i].id)
  831. --增加对应压制mark
  832. ManagerContainer.DataMgr.UserData:SetActorPveMark(teams[i].uid,actor)
  833. ourActors[i - 1] = actor
  834. end
  835. local enemyActors = System.Array.CreateInstance(Enum.TypeInfo.ActorData, 1)
  836. local npcId = bossCfgData.SummonId
  837. local npcCfgData = ManagerContainer.CfgMgr:GetNpcCfgById(npcId)
  838. local actor = ManagerContainer.LuaActorDataMgr:CreateNpc(10001, npcId, 1, npcCfgData.BaseLv)
  839. actor.IsBoss = (npcCfgData.NpcType == 2)
  840. actor.IgnoreLife = true
  841. enemyActors[0] = actor
  842. local battleEndCondList = System.Array.CreateInstance(Enum.TypeInfo.BattleEndCondition, 3)
  843. battleEndCondList[0] = BattleEndCondition.New(Constants.EndBattle_By_UndeadCount,Constants.ResultType_Normal)
  844. battleEndCondList[1] = BattleEndCondition.New(Constants.EndBattle_By_BattleTime,bossCfgData.BattleTime,Constants.ResultType_Special,true)
  845. battleEndCondList[2] = BattleEndCondition.New(Constants.EndBattle_By_TeamTotalDamage,bossCfgData.EndBattleDamage,Constants.ResultType_Special,true)
  846. ManagerContainer.LuaGameMgr:EnterGuildHuntBattle(bossCfgData.SummonScence, nil, bossCfgData.BattleTime, ourActors, enemyActors, battleEndCondList)
  847. end
  848. function GuildDataMgr:StopGuildHuntBattle(isPlayRecord, battleTime)
  849. if isPlayRecord then
  850. self:ExitHuntBattle()
  851. return
  852. end
  853. if self.huntBattleInfo then
  854. if self.huntBattleInfo.timeOut then
  855. self.huntBattleInfo.timeOut:Stop()
  856. self.huntBattleInfo.timeOut = nil
  857. end
  858. self.huntBattleInfo.timeOut = Timer.New(function()
  859. self:ExitHuntBattle()
  860. end, 10)
  861. self.huntBattleInfo.timeOut:Start()
  862. end
  863. local bossId = self:GetHuntBattleBossId()
  864. local bossCfgData = ManagerContainer.CfgMgr:GetGuildHuntBossCfgById(bossId)
  865. local hurtValue = Mathf.Floor(self:GetRecordHurtValue())
  866. if bossCfgData then
  867. if hurtValue > bossCfgData.EndBattleDamage then
  868. hurtValue = bossCfgData.EndBattleDamage
  869. end
  870. end
  871. self:SendGuildHuntBossChallengeReq(bossId, hurtValue, Mathf.Round(battleTime))
  872. end
  873. function GuildDataMgr:DisposeGuildHuntBattle()
  874. if self.huntBattleInfo and self.huntBattleInfo.timeOut then
  875. self.huntBattleInfo.timeOut:Stop()
  876. self.huntBattleInfo.timeOut = nil
  877. end
  878. self.huntBattleInfo = nil
  879. end
  880. function GuildDataMgr:RecordHurtValueChanged(hurtValue)
  881. if not hurtValue or hurtValue <= 0 then return end
  882. if not self.huntBattleInfo then return end
  883. self.huntBattleInfo.hurtValue = self.huntBattleInfo.hurtValue + hurtValue
  884. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.GUILD_HUNT_BOSS_HURT_CHANGED)
  885. end
  886. function GuildDataMgr:GetRecordHurtValue()
  887. if not self.huntBattleInfo then return 0 end
  888. return self.huntBattleInfo.hurtValue or 0
  889. end
  890. function GuildDataMgr:GetHuntBattleBossId()
  891. if not self.huntBattleInfo then return nil end
  892. return self.huntBattleInfo.bossId
  893. end
  894. function GuildDataMgr:OpenHuntBattleRewardView()
  895. if self.huntBattleInfo and self.huntBattleInfo.timeOut then
  896. self.huntBattleInfo.timeOut:Stop()
  897. self.huntBattleInfo.timeOut = nil
  898. end
  899. local rewards = self.huntBattleInfo and self.huntBattleInfo.rewards or {}
  900. local data = require('ExecuteSequenceData'):new()
  901. data:AppendUIListener(Enum.UIPageName.UIPOPGot, UIEventNames.UI_FILLCONTENT_COMPELETED, 5)
  902. data:AppendFuncAfterListener(false, ManagerContainer.LuaUIMgr, ManagerContainer.LuaUIMgr.Open, Enum.UIPageName.UIPOPGot, {rewards = rewards})
  903. data:AppendUIListener(Enum.UIPageName.UIPOPGot, UIEventNames.UI_PAGE_OUT_END_NTF)
  904. data:AppendFunc(true, self, self.ExitHuntBattle)
  905. ManagerContainer.ExecuteSequenceMgr:Execute(data)
  906. end
  907. function GuildDataMgr:ExitHuntBattle()
  908. if self:HasGuild() then
  909. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIGuildHunt, self:GetHuntBattleBossId(), Enum.UIPageName.UIMainCity1)
  910. else
  911. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIMainCity1, nil, false)
  912. if not ManagerContainer.LuaUIMgr:HasOpenPage(Enum.UIPageName.UIMain) then
  913. ManagerContainer.LuaUIMgr:Back2NormalBattleMain(Enum.MainViewPageType.Town)
  914. end
  915. end
  916. self:DisposeGuildHuntBattle()
  917. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_SHUT_TIMEBATTLE)
  918. end
  919. return GuildDataMgr