GuildDataMgr.lua 41 KB

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