HeroRPCtr.lua 52 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475
  1. local HeroRPCtr = class("HeroRPCtr", require("RPBase"))
  2. local HeroSkillRPCtr = require("HeroSkillRPCtr")
  3. local BitUtil = require("BitUtil")
  4. function HeroRPCtr:ctor()
  5. end
  6. --function HeroRPCtr:RefreshRoleUIRedPointNtfById(id)
  7. -- if id == 1 then
  8. -- self:HeroEquipDressRPNotify()
  9. -- self:HeroEquipForgeRPNotify()
  10. -- self:HeroEquipRefineRPNotify()
  11. -- else
  12. -- self:PartnerEquipDressNotify(id)
  13. -- self:PartnerEquipForgeNotify(id)
  14. -- self:PartnerEquipRefineRPNotify(id)
  15. -- end
  16. --end
  17. function HeroRPCtr:Init()
  18. self.heroAttrRP = false
  19. self.heroEquipDressRP = { false, false, false, false, false, false}
  20. self.heroEquipForgeRP = { false, false, false, false, false, false}
  21. self.heroEquipRefineRP = { false, false, false, false, false, false}
  22. self.heroTransferRP = false
  23. self.partnerAttrRP = { [2] = false, [3] = false, [4] = false, [5] = false, [6] = false}
  24. self.partnerEquipDressRP = {
  25. [2] = {false,false,false,false,false,false},
  26. [3] = {false,false,false,false,false,false},
  27. [4] = {false,false,false,false,false,false},
  28. [5] = {false,false,false,false,false,false},
  29. [6] = {false,false,false,false,false,false}
  30. }
  31. self.partnerEquipForgeRP = {
  32. [2] = {false,false,false,false,false,false},
  33. [3] = {false,false,false,false,false,false},
  34. [4] = {false,false,false,false,false,false},
  35. [5] = {false,false,false,false,false,false},
  36. [6] = {false,false,false,false,false,false}
  37. }
  38. self.partnerEquipRefineRP = {
  39. [2] = {false,false,false,false,false,false},
  40. [3] = {false,false,false,false,false,false},
  41. [4] = {false,false,false,false,false,false},
  42. [5] = {false,false,false,false,false,false},
  43. [6] = {false,false,false,false,false,false}
  44. }
  45. self.partnerLvUpRP = {[2] = false, [3] = false, [4] = false, [5] = false, [6] = false}
  46. self.partnerStrengthRP = {[2] = false, [3] = false, [4] = false, [5] = false, [6] = false}
  47. self.partnerTransferRP = {[2] = false, [3] = false, [4] = false, [5] = false, [6] = false}
  48. self.partnerRecruitRP = {[2] = false, [3] = false, [4] = false, [5] = false, [6] = false}
  49. self.fashionNewRP = false
  50. if self.heroSkillRPCtr then
  51. self.heroSkillRPCtr:Dispose()
  52. end
  53. self.heroSkillRPCtr = HeroSkillRPCtr:new()
  54. self.cardSlotState = {0,0,0,0,0,0}
  55. self.roleCardSlotRP = {
  56. [1] = {0,0,0,0,0,0},
  57. [2] = {0,0,0,0,0,0},
  58. [3] = {0,0,0,0,0,0},
  59. [4] = {0,0,0,0,0,0},
  60. [5] = {0,0,0,0,0,0},
  61. [6] = {0,0,0,0,0,0},
  62. }
  63. self.roleCardEmptySlotRP = {
  64. [1] = {false,false,false,false,false,false},
  65. [2] = {false,false,false,false,false,false},
  66. [3] = {false,false,false,false,false,false},
  67. [4] = {false,false,false,false,false,false},
  68. [5] = {false,false,false,false,false,false},
  69. [6] = {false,false,false,false,false,false},
  70. }
  71. self.roleCardSlotUpRP = {
  72. [1] = false,
  73. [2] = false,
  74. [3] = false,
  75. [4] = false,
  76. [5] = false,
  77. [6] = false,
  78. }
  79. self.skillEquipSlotRP = {
  80. [1] = false,
  81. [2] = false,
  82. [3] = false,
  83. [4] = false,
  84. [5] = false,
  85. [6] = false,
  86. }
  87. end
  88. function HeroRPCtr:GetEquipDressRPByUid(uid)
  89. if uid == 1 then
  90. return self.heroEquipDressRP
  91. else
  92. local index = ManagerContainer.DataMgr.UserData:GetSlotIndexByHeroId(uid)
  93. return self.partnerEquipDressRP[index]
  94. end
  95. end
  96. function HeroRPCtr:GetEquipUpgradeRPByUid(uid)
  97. if uid == 1 then
  98. return self.heroEquipForgeRP
  99. else
  100. local index = ManagerContainer.DataMgr.UserData:GetSlotIndexByHeroId(uid)
  101. return self.partnerEquipForgeRP[index]
  102. end
  103. end
  104. function HeroRPCtr:GetEquipRefineRPByUid(uid)
  105. if uid == 1 then
  106. return self.heroEquipRefineRP
  107. else
  108. local index = ManagerContainer.DataMgr.UserData:GetSlotIndexByHeroId(uid)
  109. return self.partnerEquipRefineRP[index]
  110. end
  111. end
  112. function HeroRPCtr:RoleRedPointNotify()
  113. self:HeroRedPointNotify()
  114. self:PartnerRedPointNotify()
  115. self:RefreshRoleCardRP()
  116. self:RefreshRoleSkillEquipRP()
  117. end
  118. function HeroRPCtr:RoleTransferRedPointNotify()
  119. self:HeroTransferNotify()
  120. for i = 2, 6 do
  121. self:PartnerTransferNotify(i)
  122. end
  123. end
  124. function HeroRPCtr:HeroRedPointNotify()
  125. self:HeroAttrRPNotify()
  126. self:HeroTransferNotify()
  127. self:HeroEquipDressRPNotify()
  128. self:HeroEquipForgeRPNotify()
  129. self:HeroEquipRefineRPNotify()
  130. end
  131. function HeroRPCtr:HeroEquipNotify()
  132. self:HeroEquipDressRPNotify()
  133. self:HeroEquipForgeRPNotify()
  134. self:HeroEquipRefineRPNotify()
  135. end
  136. function HeroRPCtr:RefreshRoleCardRP()
  137. for i = 1, 6 do
  138. self:RefreshRoleCardSlotEmptyRP(i)
  139. self:RefreshRoleCardSlotUpRP(i)
  140. end
  141. self:RefreshRoleCardSlotEmptyRPNtf()
  142. self:RefreshRoleCardSlotUpRPNtf()
  143. end
  144. function HeroRPCtr:RefreshRoleSkillEquipRP()
  145. for i = 1, 6 do
  146. self:RefreshRoleSkillEquipSlotRP(i)
  147. end
  148. self:RefreshRoleSkillEquipSlotNtf()
  149. end
  150. function HeroRPCtr:RefreshRoleSkillEquipRPById(id)
  151. self:RefreshRoleSkillEquipSlotRP(id)
  152. self:RefreshRoleSkillEquipSlotNtf()
  153. end
  154. function HeroRPCtr:HeroAttrRPNotify()
  155. self.heroAttrRP = false
  156. local logicData = ManagerContainer.DataMgr.UserData:GetHeroData()
  157. local pointNum = ManagerContainer.DataMgr.UserData:GetRoleDataAttrPoints()
  158. local pointData = ManagerContainer.CfgMgr.QualityPointCfg
  159. local strAttr = SDataUtil.InvConvert(logicData.attrs[Enum.HeroAttrType.STR])
  160. if SDataUtil.IsLess(strAttr, #pointData) and SDataUtil.IsLessEqual(pointData[strAttr].cost, pointNum) then
  161. self.heroAttrRP = true
  162. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.LeaderAttr, true)
  163. return
  164. end
  165. local agiAttr = SDataUtil.InvConvert(logicData.attrs[Enum.HeroAttrType.AGI])
  166. if SDataUtil.IsLess(agiAttr, #pointData) and SDataUtil.IsLessEqual(pointData[agiAttr].cost, pointNum) then
  167. self.heroAttrRP = true
  168. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.LeaderAttr, true)
  169. return
  170. end
  171. local intAttr = SDataUtil.InvConvert(logicData.attrs[Enum.HeroAttrType.INT])
  172. if SDataUtil.IsLess(intAttr, #pointData) and SDataUtil.IsLessEqual(pointData[intAttr].cost, pointNum) then
  173. self.heroAttrRP = true
  174. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.LeaderAttr, true)
  175. return
  176. end
  177. local vitAttr = SDataUtil.InvConvert(logicData.attrs[Enum.HeroAttrType.VIT])
  178. if SDataUtil.IsLess(vitAttr, #pointData) and SDataUtil.IsLessEqual(pointData[vitAttr].cost, pointNum) then
  179. self.heroAttrRP = true
  180. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.LeaderAttr, true)
  181. return
  182. end
  183. local dexAttr = SDataUtil.InvConvert(logicData.attrs[Enum.HeroAttrType.DEX])
  184. if SDataUtil.IsLess(dexAttr, #pointData) and SDataUtil.IsLessEqual(pointData[dexAttr].cost, pointNum) then
  185. self.heroAttrRP = true
  186. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.LeaderAttr, true)
  187. return
  188. end
  189. local lukAttr = SDataUtil.InvConvert(logicData.attrs[Enum.HeroAttrType.LUK])
  190. if SDataUtil.IsLess(lukAttr, #pointData) and SDataUtil.IsLessEqual(pointData[lukAttr].cost, pointNum) then
  191. self.heroAttrRP = true
  192. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.LeaderAttr, true)
  193. return
  194. end
  195. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.LeaderAttr, false)
  196. end
  197. function HeroRPCtr:HeroEquipDressRPNotify()
  198. self.heroEquipDressRP = { false, false, false, false, false, false}
  199. local count = ManagerContainer.DataMgr.EquipData:GetAllEquipCount()
  200. if count == 0 then
  201. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.EquipDress, false, 1)
  202. return
  203. end
  204. local slots = ManagerContainer.DataMgr.UserData:GetCurSlotInfos(1)
  205. if #slots > 0 then
  206. for i = 1, #slots do
  207. local equiDatas
  208. if i == Enum.SlotEquipType.Weapon then
  209. local jobData = ManagerContainer.CfgMgr:GetJobDataById(ManagerContainer.DataMgr.UserData:GetJobCfgId())
  210. equiDatas = ManagerContainer.DataMgr.EquipData:GetAllWeaponEquipDatasFlterJobType(jobData.JobType)
  211. else
  212. equiDatas = ManagerContainer.DataMgr.EquipData:GetAllEquipDatasByType(i)
  213. end
  214. if equiDatas ~= nil then
  215. local slotEquipData = ManagerContainer.CfgMgr:GetEquipById(slots[i].equip_id)
  216. for _,v in pairs(equiDatas) do
  217. local cfgData = ManagerContainer.CfgMgr:GetEquipById(v.cfgId)
  218. if slotEquipData == nil and cfgData.Type == i then
  219. self.heroEquipDressRP[i] = true
  220. elseif slotEquipData ~= nil and cfgData.Type == slotEquipData.Type and cfgData.EquipLevel > slotEquipData.EquipLevel then
  221. self.heroEquipDressRP[i] = true
  222. end
  223. end
  224. else
  225. end
  226. end
  227. else
  228. for i = 1, 6 do
  229. local equiDatas
  230. if i == Enum.SlotEquipType.Weapon then
  231. local jobData = ManagerContainer.CfgMgr:GetJobDataById(ManagerContainer.DataMgr.UserData:GetJobCfgId())
  232. equiDatas = ManagerContainer.DataMgr.EquipData:GetAllWeaponEquipDatasFlterJobType(jobData.JobType)
  233. else
  234. equiDatas = ManagerContainer.DataMgr.EquipData:GetAllEquipDatasByType(i)
  235. end
  236. if equiDatas ~= nil then
  237. for _,v in pairs(equiDatas) do
  238. local cfgData = ManagerContainer.CfgMgr:GetEquipById(v.cfgId)
  239. if cfgData.Type == i then
  240. self.heroEquipDressRP[i] = true
  241. end
  242. end
  243. end
  244. end
  245. end
  246. local state = false
  247. for i = 1,#self.heroEquipDressRP do
  248. if self.heroEquipDressRP[i] then
  249. state = true
  250. end
  251. end
  252. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.EquipDress, state, 1)
  253. end
  254. function HeroRPCtr:HeroEquipForgeRPNotify()
  255. self.heroEquipForgeRP = { false, false, false, false, false, false}
  256. --local unlockState = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(13)
  257. --if not unlockState then
  258. -- return
  259. --end
  260. local canForge, slotsForgeStatus = ManagerContainer.DataMgr.EquipData:GetForgeStatus(1)
  261. self.heroEquipForgeRP = slotsForgeStatus
  262. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.EquipLvUp, canForge, 1)
  263. end
  264. function HeroRPCtr:HeroEquipRefineRPNotify()
  265. self.heroEquipRefineRP = { false, false, false, false, false, false}
  266. --local unlockState = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(17)
  267. --if not unlockState then
  268. -- return
  269. --end
  270. local slots = ManagerContainer.DataMgr.UserData:GetCurSlotInfos(1)
  271. if #slots > 0 then
  272. for i = 1, #slots do
  273. if slots[i].equip_id > 0 then
  274. local refineLv = slots[i].level + 1
  275. local curRefineData = ManagerContainer.CfgMgr:GetEquipRefineDataByLv(refineLv)
  276. if curRefineData ~= nil then
  277. local is1 = CommonUtil.EleInTable(i, curRefineData.Place1)
  278. local index = is1 and 1 or 2
  279. local ownedCoin = ManagerContainer.DataMgr.UserData:GetCurrency(Enum.ItemType.Coin)
  280. local ownedItem = ManagerContainer.DataMgr.BagData:GetItemCountByCfgId( curRefineData["Costitem"..index][1][1])
  281. if curRefineData["Costzeny"..index] <= ownedCoin and curRefineData["Costitem"..index][1][2] <= ownedItem then
  282. self.heroEquipRefineRP[i] = true
  283. end
  284. end
  285. end
  286. end
  287. end
  288. local state = false
  289. for i = 1,#self.heroEquipRefineRP do
  290. if self.heroEquipRefineRP[i] then
  291. state = true
  292. end
  293. end
  294. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.EquipRefine, state, 1)
  295. end
  296. function HeroRPCtr:PartnerRedPointNotify()
  297. for i = 2, 6 do
  298. self:PartnerRedPointNotifyById(i)
  299. self:PartnerRecruitNotifyById(i)
  300. end
  301. end
  302. function HeroRPCtr:PartnerRedPointNotifyById(id)
  303. self:PartnerAttrRPNotify(id)
  304. self:PartnerLvUpNotify(id)
  305. self:PartnerStrengthNotify(id)
  306. self:PartnerTransferNotify(id)
  307. self:PartnerEquipDressNotify(id)
  308. self:PartnerEquipForgeNotify(id)
  309. self:PartnerEquipRefineRPNotify(id)
  310. end
  311. function HeroRPCtr:PartnerEquipNotify()
  312. for i = 2, 6 do
  313. self:PartnerEquipDressNotify(i)
  314. self:PartnerEquipForgeNotify(i)
  315. self:PartnerEquipRefineRPNotify(i)
  316. end
  317. end
  318. function HeroRPCtr:PartnerItemChangeRPNotify()
  319. for i = 2, 6 do
  320. self:PartnerStrengthNotify(i)
  321. self:PartnerEquipRefineRPNotify(i)
  322. end
  323. end
  324. function HeroRPCtr:PartnerRecruitNotify()
  325. for i = 2, 6 do
  326. self:PartnerRecruitNotifyById(i)
  327. self:PartnerAttrRPNotify(i)
  328. end
  329. end
  330. function HeroRPCtr:PartnerAttrRPNotify(id)
  331. self.partnerAttrRP[id] = false
  332. local logicData = ManagerContainer.DataMgr.PartnerData:GetPartnerDataByUniqueId(id)
  333. if not logicData.owned then return end
  334. local pointNum = ManagerContainer.DataMgr.PartnerData:GetRoleDataAttrPoints(id)
  335. local pointData = ManagerContainer.CfgMgr.QualityPointCfg
  336. local strAttr = SDataUtil.InvConvert(logicData.attrs[Enum.HeroAttrType.STR] or 0)
  337. if SDataUtil.IsLess(strAttr, #pointData) and SDataUtil.IsLessEqual(pointData[strAttr].cost, pointNum) then
  338. self.partnerAttrRP[id] = true
  339. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.PtAttr, true)
  340. return
  341. end
  342. local agiAttr = SDataUtil.InvConvert(logicData.attrs[Enum.HeroAttrType.AGI] or 0)
  343. if SDataUtil.IsLess(agiAttr, #pointData) and SDataUtil.IsLessEqual(pointData[agiAttr].cost, pointNum) then
  344. self.partnerAttrRP[id] = true
  345. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.PtAttr, true)
  346. return
  347. end
  348. local intAttr = SDataUtil.InvConvert(logicData.attrs[Enum.HeroAttrType.INT] or 0)
  349. if SDataUtil.IsLess(intAttr, #pointData) and SDataUtil.IsLessEqual(pointData[intAttr].cost, pointNum) then
  350. self.partnerAttrRP[id] = true
  351. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.PtAttr, true)
  352. return
  353. end
  354. local vitAttr = SDataUtil.InvConvert(logicData.attrs[Enum.HeroAttrType.VIT] or 0)
  355. if SDataUtil.IsLess(vitAttr, #pointData) and SDataUtil.IsLessEqual(pointData[vitAttr].cost, pointNum) then
  356. self.partnerAttrRP[id] = true
  357. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.PtAttr, true)
  358. return
  359. end
  360. local dexAttr = SDataUtil.InvConvert(logicData.attrs[Enum.HeroAttrType.DEX] or 0)
  361. if SDataUtil.IsLess(dexAttr, #pointData) and SDataUtil.IsLessEqual(pointData[dexAttr].cost, pointNum) then
  362. self.partnerAttrRP[id] = true
  363. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.PtAttr, true)
  364. return
  365. end
  366. local lukAttr = SDataUtil.InvConvert(logicData.attrs[Enum.HeroAttrType.LUK] or 0)
  367. if SDataUtil.IsLess(lukAttr, #pointData) and SDataUtil.IsLessEqual(pointData[lukAttr].cost, pointNum) then
  368. self.partnerAttrRP[id] = true
  369. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.PtAttr, true)
  370. return
  371. end
  372. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.PtAttr, false)
  373. end
  374. function HeroRPCtr:PartnerLvUpNotify(id)
  375. self.partnerLvUpRP[id] = false
  376. local partnerDatas = ManagerContainer.DataMgr.PartnerData:GetPartnerDatas()
  377. for _, v1 in pairs(partnerDatas) do
  378. if v1.id > 0 and v1.owned and v1.id == id then
  379. local index = ManagerContainer.DataMgr.UserData:GetSlotIndexByHeroId(v1.id)
  380. local cfgData = ManagerContainer.CfgMgr:GetPartnerDataById(v1.configId)
  381. local stepData = ManagerContainer.CfgMgr:GetParterProgressById(cfgData.ParterJob)
  382. local curMaxLv
  383. if stepData ~= nil then
  384. curMaxLv = stepData.AddLv[v1.advanceLevel + 1]
  385. if v1.baseLevel >= curMaxLv and v1.advanceLevel < #stepData.CostMoney then
  386. local canAdvence = curMaxLv == v1.baseLevel and (v1.advanceLevel + 1) < #stepData.AddLv
  387. local ownCoin = ManagerContainer.DataMgr.UserData:GetOwnCoin()
  388. local coinResult = stepData.CostMoney[v1.advanceLevel + 1] <= ownCoin
  389. local ownStone = ManagerContainer.DataMgr.BagData:GetItemByCfgId(Enum.ItemIndex.PartnerStone)
  390. local stoneResult = stepData.CostStone[v1.advanceLevel + 1] <= (ownStone ~= nil and ownStone.num or 0)
  391. if canAdvence and coinResult and stoneResult then
  392. self.partnerLvUpRP[index] = true
  393. end
  394. end
  395. end
  396. if not self.partnerLvUpRP[index] then
  397. if v1.baseLevel < curMaxLv then
  398. local lvData = ManagerContainer.CfgMgr:GetParterAttributeByLv(v1.baseLevel)
  399. local ownCoin = ManagerContainer.DataMgr.UserData:GetOwnCoin()
  400. local coinResult = lvData.Money <= ownCoin
  401. local ownExp = ManagerContainer.DataMgr.UserData:GetHeroExp()
  402. local expResult = lvData.Exp <= ownExp
  403. self.partnerLvUpRP[index] = coinResult and v1.baseLevel < curMaxLv and expResult and (stepData == nil and true or v1.advanceLevel <= #stepData.AddLv)
  404. end
  405. end
  406. end
  407. end
  408. end
  409. function HeroRPCtr:PartnerStrengthNotify(id)
  410. self.partnerStrengthRP[id] = false
  411. local unlockState = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(16)
  412. if not unlockState then
  413. return
  414. end
  415. local partnerDatas = ManagerContainer.DataMgr.PartnerData:GetPartnerDatas()
  416. for _, v1 in pairs(partnerDatas) do
  417. if v1.id > 0 and v1.owned and v1.id == id then
  418. local index = ManagerContainer.DataMgr.UserData:GetSlotIndexByHeroId(v1.id)
  419. local cfgData = ManagerContainer.CfgMgr:GetPartnerDataById(v1.configId)
  420. local stepData = ManagerContainer.CfgMgr:GetParterProgressById(cfgData.ParterJob)
  421. if stepData ~= nil then
  422. if v1.strengthLevel < stepData.BreachTimes then
  423. local canStrength = true
  424. local ownCoin = ManagerContainer.DataMgr.UserData:GetOwnCoin()
  425. local cost = stepData.BreachMoney[v1.strengthLevel + 1]
  426. if cost then
  427. local coinResult = cost <= ownCoin
  428. local resCount = CommonUtil.GetOwnResCountByItemId(stepData.BreachCost[v1.strengthLevel + 1][1])
  429. local resResult = stepData.BreachCost[v1.strengthLevel + 1][2] <= resCount
  430. if canStrength and coinResult and resResult then
  431. self.partnerStrengthRP[index] = true
  432. end
  433. end
  434. end
  435. end
  436. end
  437. end
  438. --ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.PtBreak, self.partnerStrengthRP[id])
  439. end
  440. function HeroRPCtr:PartnerEquipDressNotify(id)
  441. self.partnerEquipDressRP[id] = {false,false,false,false,false,false}
  442. local logicData = ManagerContainer.DataMgr.PartnerData:GetPartnerDataByUniqueId(id)
  443. if not logicData.owned or not logicData.isBattle then
  444. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.EquipDress, false, id)
  445. return
  446. end
  447. local partnerDatas = ManagerContainer.DataMgr.PartnerData:GetPartnerDatas()
  448. for _, v1 in pairs(partnerDatas) do
  449. if v1.id > 0 and v1.owned and v1.id == id then
  450. --equip
  451. local count = ManagerContainer.DataMgr.EquipData:GetAllEquipCount()
  452. if count == 0 then
  453. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.EquipDress, false, id)
  454. return
  455. end
  456. local slots = v1.slot.slot_list
  457. local slotIndex = v1.id
  458. if slots ~= nil and #slots > 0 then
  459. for i = 1, #slots do
  460. local equiDatas
  461. if i == Enum.SlotEquipType.Weapon then
  462. local partnerData = ManagerContainer.CfgMgr:GetPartnerDataById(v1.configId)
  463. equiDatas = ManagerContainer.DataMgr.EquipData:GetAllWeaponEquipDatasFlterJobType(partnerData.JobType)
  464. else
  465. equiDatas = ManagerContainer.DataMgr.EquipData:GetAllEquipDatasByType(i)
  466. end
  467. if equiDatas ~= nil then
  468. local slotEquipData = ManagerContainer.CfgMgr:GetEquipById(slots[i].equip_id)
  469. for _,v in pairs(equiDatas) do
  470. local cfgData = ManagerContainer.CfgMgr:GetEquipById(v.cfgId)
  471. if slotEquipData == nil and cfgData.Type == i then
  472. self.partnerEquipDressRP[slotIndex][i] = true
  473. elseif slotEquipData ~= nil and cfgData.Type == slotEquipData.Type and cfgData.EquipLevel > slotEquipData.EquipLevel then
  474. self.partnerEquipDressRP[slotIndex][i] = true
  475. end
  476. end
  477. end
  478. end
  479. else
  480. for i = 1, 6 do
  481. local equiDatas
  482. if i == Enum.SlotEquipType.Weapon then
  483. local partnerData = ManagerContainer.CfgMgr:GetPartnerDataById(v1.configId)
  484. equiDatas = ManagerContainer.DataMgr.EquipData:GetAllWeaponEquipDatasFlterJobType(partnerData.JobType)
  485. else
  486. equiDatas = ManagerContainer.DataMgr.EquipData:GetAllEquipDatasByType(i)
  487. end
  488. if equiDatas ~= nil then
  489. for _,v in pairs(equiDatas) do
  490. local cfgData = ManagerContainer.CfgMgr:GetEquipById(v.cfgId)
  491. if cfgData.Type == i then
  492. self.partnerEquipDressRP[slotIndex][i] = true
  493. end
  494. end
  495. end
  496. end
  497. end
  498. end
  499. end
  500. local state = false
  501. for i = 1,#self.partnerEquipDressRP[id] do
  502. if self.partnerEquipDressRP[id][i] then
  503. state = true
  504. end
  505. end
  506. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.EquipDress, state, id)
  507. end
  508. function HeroRPCtr:PartnerEquipForgeNotify(id)
  509. self.partnerEquipForgeRP[id] = {false,false,false,false,false,false}
  510. local logicData = ManagerContainer.DataMgr.PartnerData:GetPartnerDataByUniqueId(id)
  511. if not logicData.owned or not logicData.isBattle then
  512. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.EquipLvUp, false, id)
  513. return
  514. end
  515. --local unlockState = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(13)
  516. --if not unlockState then
  517. -- return
  518. --end
  519. local partnerDatas = ManagerContainer.DataMgr.PartnerData:GetPartnerDatas()
  520. for _, v1 in pairs(partnerDatas) do
  521. if v1.id > 0 and v1.owned and v1.id == id then
  522. --equip
  523. local count = ManagerContainer.DataMgr.EquipData:GetAllEquipCount()
  524. if count == 0 then
  525. return
  526. end
  527. local result, status = ManagerContainer.DataMgr.EquipData:GetForgeStatus(v1.id)
  528. self.partnerEquipForgeRP[v1.id] = status
  529. end
  530. end
  531. local state = false
  532. for i = 1,#self.partnerEquipForgeRP[id] do
  533. if self.partnerEquipForgeRP[id][i] then
  534. state = true
  535. end
  536. end
  537. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.EquipLvUp, state, id)
  538. end
  539. function HeroRPCtr:PartnerEquipRefineRPNotify(id)
  540. self.partnerEquipRefineRP[id] = {false,false,false,false,false,false}
  541. local logicData = ManagerContainer.DataMgr.PartnerData:GetPartnerDataByUniqueId(id)
  542. if not logicData.owned or not logicData.isBattle then
  543. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.EquipRefine, false, id)
  544. return
  545. end
  546. --local unlockState = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(17)
  547. --if not unlockState then
  548. -- return
  549. --end
  550. local partnerDatas = ManagerContainer.DataMgr.PartnerData:GetPartnerDatas()
  551. for _, v1 in pairs(partnerDatas) do
  552. if v1.id > 0 and v1.owned and v1.id == id then
  553. local slots = v1.slot.slot_list
  554. local slotIndex = v1.id
  555. if #slots > 0 then
  556. for i = 1, #slots do
  557. if slots[i].equip_id > 0 then
  558. local refineLv = slots[i].level + 1
  559. local curRefineData = ManagerContainer.CfgMgr:GetEquipRefineDataByLv(refineLv)
  560. if curRefineData ~= nil then
  561. local is1 = CommonUtil.EleInTable(i, curRefineData.Place1)
  562. local index = is1 and 1 or 2
  563. local ownedCoin = ManagerContainer.DataMgr.UserData:GetCurrency(Enum.ItemType.Coin)
  564. local ownedItem = ManagerContainer.DataMgr.BagData:GetItemCountByCfgId( curRefineData["Costitem"..index][1][1])
  565. if curRefineData["Costzeny"..index] <= ownedCoin and curRefineData["Costitem"..index][1][2] < ownedItem then
  566. self.partnerEquipRefineRP[slotIndex][i] = true
  567. end
  568. end
  569. end
  570. end
  571. end
  572. end
  573. end
  574. local state = false
  575. for i = 1,#self.partnerEquipRefineRP[id] do
  576. if self.partnerEquipRefineRP[id][i] then
  577. state = true
  578. end
  579. end
  580. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.EquipRefine, state, id)
  581. end
  582. function HeroRPCtr:HeroTransferNotify()
  583. self.heroTransferRP = false
  584. --local lockState = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(11)
  585. --if not lockState then
  586. -- return
  587. --end
  588. local logicData = ManagerContainer.DataMgr.UserData:GetHeroData()
  589. local jobData = ManagerContainer.CfgMgr:GetJobDataById(logicData.configId)
  590. if jobData.ChangeCond then
  591. for i = 1, #jobData.ChangeCond do
  592. local condId = jobData.ChangeCond[i]
  593. local task = ManagerContainer.DataMgr.TaskDataNew:GetChangeJobTaskData(logicData.id, condId)
  594. self.heroTransferRP = task ~= nil and task.state ~= Enum.TaskStateType.NoCompeleted
  595. end
  596. end
  597. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.LeaderTransfer, self.heroTransferRP)
  598. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.Transfer, self.heroTransferRP, 1)
  599. end
  600. function HeroRPCtr:PartnerTransferNotify(id)
  601. self.partnerTransferRP[id] = false
  602. --local lockState = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(12)
  603. --if not lockState then
  604. -- return
  605. --end
  606. self:PartnerTransferNotifyById(id)
  607. end
  608. function HeroRPCtr:PartnerTransferNotifyById(id)
  609. local logicData = ManagerContainer.DataMgr.PartnerData:GetPartnerDataByUniqueId(id)
  610. if logicData == nil then
  611. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.PtTransfer, false, id)
  612. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.Transfer, false, id)
  613. return
  614. end
  615. local jobData = ManagerContainer.CfgMgr:GetPartnerDataById(logicData.configId)
  616. local canTransfer = false
  617. if jobData.ChangeCond then
  618. for i = 1, #jobData.ChangeCond do
  619. local condId = jobData.ChangeCond[i]
  620. local task = ManagerContainer.DataMgr.TaskDataNew:GetChangeJobTaskData(logicData.id, condId)
  621. canTransfer = task ~= nil and task.state ~= Enum.TaskStateType.NoCompeleted
  622. end
  623. end
  624. if jobData.JobStage >= GlobalConfig.Instance:GetConfigIntValue(103) then
  625. canTransfer = false
  626. end
  627. self.partnerTransferRP[id] = canTransfer
  628. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.PtTransfer, canTransfer, id)
  629. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.Transfer, canTransfer, id)
  630. end
  631. function HeroRPCtr:PartnerRecruitNotifyById(id)
  632. self.partnerRecruitRP[id] = false
  633. local logicData = ManagerContainer.DataMgr.PartnerData:GetPartnerDataByUniqueId(id)
  634. if logicData == nil then
  635. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.PtRecruit, false, id)
  636. return
  637. end
  638. local resNum = CommonUtil.GetOwnResCountByItemId(Enum.ItemIds.Recruit)
  639. self.partnerRecruitRP[id] = resNum > 0 and not logicData.owned
  640. if self.partnerRecruitRP[id] then
  641. local userLogicData = ManagerContainer.DataMgr.UserData:GetHeroData()
  642. local jobData = ManagerContainer.CfgMgr:GetJobDataById(userLogicData.configId)
  643. local resCount = CommonUtil.GetOwnResCountByItemId(Enum.ItemIds.Recruit)
  644. local owndCount = ManagerContainer.DataMgr.PartnerData:GetOwnedPartnerCount()
  645. if jobData.JobStage == 1 and resCount >= 1 and owndCount == 0 then
  646. local partnerData = ManagerContainer.CfgMgr:GetPartnerDataById(logicData.configId)
  647. local recommend = Enum.JobRecommend[jobData.JobType]
  648. if partnerData.JobType ~= recommend[1] then
  649. self.partnerRecruitRP[id] = false
  650. end
  651. end
  652. end
  653. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.PtRecruit, self.partnerRecruitRP[id], id)
  654. end
  655. function HeroRPCtr:InitCardSlotState(cardSlotList)
  656. for k,v in pairs(cardSlotList) do
  657. self.cardSlotState[k] = v
  658. end
  659. end
  660. function HeroRPCtr:RoleCardSlotRPNotify(cardSlotList)
  661. local list
  662. for k,v in pairs(cardSlotList) do
  663. local key = v.key
  664. local val = v.value
  665. if val > self.cardSlotState[key] then
  666. local delta = val - self.cardSlotState[key]
  667. list = {}
  668. for i = 0, 3 do
  669. local opened = BitUtil.RshiftNumBandOne(delta, i) == 1
  670. if opened then
  671. list[#list + 1] = i
  672. end
  673. end
  674. self.cardSlotState[key] = val
  675. for k1,v1 in pairs(self.roleCardSlotRP) do
  676. if k1 == 1 then
  677. for k2,v2 in pairs(list) do
  678. v1[key] = v1[key] + delta
  679. end
  680. else
  681. local logicData = ManagerContainer.DataMgr.PartnerData:GetPartnerDataByUniqueId(k1)
  682. if logicData.owned and logicData.isBattle then
  683. for k2,v2 in pairs(list) do
  684. v1[key] = v1[key] + delta
  685. end
  686. end
  687. end
  688. end
  689. self:RefreshRoleCardRP()
  690. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.CardSlot, true)
  691. end
  692. end
  693. end
  694. function HeroRPCtr:RefreshRoleCardSlotRP(id)
  695. if id == nil or id < 1 or id > 6 then return end
  696. --if equipIdx < 1 or equipIdx > 6 then return end
  697. --if self.roleCardSlotRP[id][equipIdx] == 0 then return end
  698. for i = 1, 6 do
  699. self.roleCardSlotRP[id][i] = 0
  700. end
  701. local result = false
  702. for k,v in pairs(self.roleCardSlotRP) do
  703. for k1,v1 in pairs(v) do
  704. if v1 > 0 then
  705. result = true
  706. end
  707. end
  708. end
  709. if not result then
  710. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.CardSlot, false)
  711. end
  712. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.CARDSLOT_REDPOINT_ROLE_UI_NTF)
  713. end
  714. function HeroRPCtr:GetRoleCardSlotRP(id, equipIdx, cardIdx)
  715. if id == nil or id < 1 or id > 6 then return Enum.RedPointEnum.None end
  716. local state = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(20)
  717. if not state then
  718. return Enum.RedPointEnum.None
  719. end
  720. if not equipIdx then
  721. local result = false
  722. for k,v in pairs(self.roleCardSlotRP[id]) do
  723. if v > 0 then
  724. result = true
  725. end
  726. end
  727. return result and Enum.RedPointEnum.CardSlotRP or Enum.RedPointEnum.None
  728. else
  729. if equipIdx < 1 or equipIdx > 6 then return Enum.RedPointEnum.None end
  730. if not cardIdx then
  731. return self.roleCardSlotRP[id][equipIdx] > 0 and Enum.RedPointEnum.CardSlotRP or Enum.RedPointEnum.None
  732. else
  733. if cardIdx < 0 or cardIdx > 3 then return Enum.RedPointEnum.None end
  734. local opened = BitUtil.RshiftNumBandOne(self.roleCardSlotRP[id][equipIdx], cardIdx) == 1
  735. return opened and Enum.RedPointEnum.CardSlotRP or Enum.RedPointEnum.None
  736. end
  737. end
  738. end
  739. function HeroRPCtr:GetCardSlotCountByType(type)
  740. local count = 0
  741. for i = 0, 3 do
  742. local cardSlot = self.cardSlotState[type]
  743. local opened = BitUtil.RshiftNumBandOne(cardSlot, i) == 1
  744. if opened then
  745. count = i + 1
  746. end
  747. end
  748. return count
  749. end
  750. function HeroRPCtr:RefreshRoleCardSlotEmptyRP(id)
  751. self.roleCardEmptySlotRP[id] = {false,false,false,false,false,false}
  752. local state = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(41)
  753. if not state then
  754. return false
  755. end
  756. local logicData, jobType
  757. if id == 1 then
  758. logicData = ManagerContainer.DataMgr.UserData:GetHeroData()
  759. local jobData = ManagerContainer.CfgMgr:GetJobDataById(logicData.configId)
  760. jobType = jobData.JobType
  761. else
  762. logicData = ManagerContainer.DataMgr.PartnerData:GetPartnerDataByUniqueId(id)
  763. local cfgData = ManagerContainer.CfgMgr:GetPartnerDataById(logicData.configId)
  764. jobType = cfgData.JobType
  765. if not logicData.owned or not logicData.isBattle then return end
  766. end
  767. local slot = ManagerContainer.DataMgr.UserData:GetSlotInfoById(id)
  768. local slotList = slot.slot_list
  769. if slotList == nil then return end
  770. for i = 1, 6 do
  771. local emptySlot = 0
  772. if slotList[i] ~= nil and slotList[i].equip_id > 0 then
  773. local cardList = slotList[i].card_id_list
  774. local cardSlotCount = self:GetCardSlotCountByType(i)
  775. for j = 1, cardSlotCount do
  776. if cardList[j] == 0 or cardList[j] == nil then
  777. emptySlot = emptySlot + 1
  778. end
  779. end
  780. if emptySlot > 0 then
  781. local list = ManagerContainer.DataMgr.CardData:GetAllCardDatasByType(i)
  782. local cardDatas = CommonUtil.ArrayFilterSelections(list, Enum.FilterType.AND, {"Profession"}, {jobType})
  783. if cardDatas ~= nil and next(cardDatas) then
  784. self.roleCardEmptySlotRP[id][i] = true
  785. end
  786. end
  787. end
  788. end
  789. end
  790. function HeroRPCtr:RefreshRoleCardSlotEmptyRPNtf()
  791. for _,v in pairs(self.roleCardEmptySlotRP) do
  792. for _,v1 in pairs(v) do
  793. if v1 then
  794. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.CardEmpty, true)
  795. return
  796. end
  797. end
  798. end
  799. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.CardEmpty, false)
  800. end
  801. function HeroRPCtr:GetRoleCardSlotEmptyRP(id, slot)
  802. if not slot then
  803. for _,v in pairs(self.roleCardEmptySlotRP[id]) do
  804. if v then
  805. return true
  806. end
  807. end
  808. else
  809. return self.roleCardEmptySlotRP[id][slot]
  810. end
  811. return false
  812. end
  813. function HeroRPCtr:RefreshRoleCardSlotUpRP(id)
  814. self.roleCardSlotUpRP[id] = false
  815. local state = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(53)
  816. if not state then
  817. return false
  818. end
  819. local logicData
  820. if id == 1 then
  821. logicData = ManagerContainer.DataMgr.UserData:GetHeroData()
  822. else
  823. logicData = ManagerContainer.DataMgr.PartnerData:GetPartnerDataByUniqueId(id)
  824. if not logicData.owned or not logicData.isBattle then return end
  825. end
  826. local slot = ManagerContainer.DataMgr.UserData:GetSlotInfoById(id)
  827. local slotList = slot.slot_list
  828. if slotList == nil then return end
  829. local costId = Enum.ItemIds.Coin
  830. local remainRes = CommonUtil.GetOwnResCountByItemId(costId)
  831. --if remainRes < ManagerContainer.DataMgr.CardData:GetComposeOnceCostNum() then
  832. -- return
  833. --end
  834. for i = 1, 6 do
  835. if slotList[i] ~= nil and slotList[i].equip_id > 0 then
  836. local cardList = slotList[i].card_id_list
  837. for j = 1, #cardList do
  838. local cfgId = cardList[j]
  839. if cfgId > 0 then
  840. local result = ManagerContainer.DataMgr.CardData:CanCurCardUp(cfgId, 1, remainRes, true)
  841. if result then
  842. self.roleCardSlotUpRP[id] = true
  843. return
  844. end
  845. end
  846. end
  847. end
  848. end
  849. end
  850. function HeroRPCtr:RefreshRoleCardSlotUpRPNtf()
  851. for _,v in pairs(self.roleCardSlotUpRP) do
  852. if v then
  853. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.CardLvUp, true)
  854. return
  855. end
  856. end
  857. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.CardLvUp, false)
  858. end
  859. function HeroRPCtr:RefreshRoleSkillEquipSlotRP(id)
  860. self.skillEquipSlotRP[id] = false
  861. local state = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(74)
  862. if not state then
  863. return false
  864. end
  865. local heroData = CommonUtil.GetHeroLogicDataByUid(id)
  866. if not heroData then return end
  867. if heroData.id > 1 and (not heroData.owned or not heroData.isBattle) then return end
  868. local skillEquipSlot = heroData.skillEquipSlot
  869. local slotList = skillEquipSlot.slotList
  870. local skillEquipData = slotList and slotList[1] or nil
  871. if not skillEquipData or skillEquipData.id == 0 then
  872. local equipDatas = ManagerContainer.DataMgr.SkillEquipData:GetSkillEquips()
  873. self.skillEquipSlotRP[id] = #equipDatas > 0
  874. else
  875. local starUpRP = ManagerContainer.DataMgr.SkillEquipData:SkillEquipDataCanLvUp(skillEquipData)
  876. if starUpRP then
  877. self.skillEquipSlotRP[id] = true
  878. return
  879. end
  880. local lvUpRP = ManagerContainer.DataMgr.SkillEquipData:SkillEquipSlotCanLvUp(id)
  881. if lvUpRP then
  882. self.skillEquipSlotRP[id] = true
  883. return
  884. end
  885. end
  886. end
  887. function HeroRPCtr:RefreshRoleSkillEquipSlotNtf()
  888. for _,v in pairs(self.skillEquipSlotRP) do
  889. if v then
  890. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.SkillEquip, true)
  891. return
  892. end
  893. end
  894. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.SkillEquip, false)
  895. end
  896. function HeroRPCtr:GetRoleCardSlotUpRP(id)
  897. local state = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(53)
  898. if not state then
  899. return false
  900. end
  901. return self.roleCardSlotUpRP[id]
  902. end
  903. function HeroRPCtr:GetRoleSkillEuipSlotRP(id)
  904. return self.skillEquipSlotRP[id]
  905. end
  906. function HeroRPCtr:GetHeroRPStatus()
  907. local id = ManagerContainer.DataMgr.UserData:GetId()
  908. local redPointEnum = self:GetRoleCardSlotRP(id)
  909. if redPointEnum == Enum.RedPointEnum.None then
  910. redPointEnum = self:GetHeroSkillUnlockRPStatus(id)
  911. end
  912. if redPointEnum == Enum.RedPointEnum.None then
  913. --装备
  914. redPointEnum = self:GetHeroEquipRPStatus()
  915. end
  916. if redPointEnum == Enum.RedPointEnum.None then
  917. --卡片
  918. local emptyRP = self:GetRoleCardSlotEmptyRP(id)
  919. if emptyRP then
  920. redPointEnum = Enum.RedPointEnum.CardEmptyRP
  921. end
  922. end
  923. if redPointEnum == Enum.RedPointEnum.None then
  924. --卡片
  925. local lvUpRP = self:GetRoleCardSlotUpRP(id)
  926. if lvUpRP then
  927. redPointEnum = Enum.RedPointEnum.CardLvUpRP
  928. end
  929. end
  930. if redPointEnum == Enum.RedPointEnum.None then
  931. --神器
  932. local slotRP = self:GetRoleSkillEuipSlotRP(1)
  933. if slotRP then
  934. redPointEnum = Enum.RedPointEnum.SkillEquip
  935. end
  936. end
  937. if redPointEnum == Enum.RedPointEnum.None then
  938. redPointEnum = self:GetFashionNewRPStatus()
  939. end
  940. return redPointEnum
  941. end
  942. function HeroRPCtr:GetPartnerRPStatus(id)
  943. local redPointEnum = self:GetRoleCardSlotRP(id)
  944. if redPointEnum == Enum.RedPointEnum.None then
  945. redPointEnum = self:GetPartnerRecruitRPStatusById(id)
  946. end
  947. if redPointEnum == Enum.RedPointEnum.None then
  948. redPointEnum = self:GetHeroSkillUnlockRPStatus(id)
  949. end
  950. if redPointEnum == Enum.RedPointEnum.None then
  951. --装备
  952. redPointEnum = self:GetPartnerEquipRPStatusById(id)
  953. end
  954. if redPointEnum == Enum.RedPointEnum.None then
  955. --卡片
  956. local emptyRP = self:GetRoleCardSlotEmptyRP(id)
  957. if emptyRP then
  958. redPointEnum = Enum.RedPointEnum.CardEmptyRP
  959. end
  960. end
  961. if redPointEnum == Enum.RedPointEnum.None then
  962. --卡片
  963. local lvUpRP = self:GetRoleCardSlotUpRP(id)
  964. if lvUpRP then
  965. redPointEnum = Enum.RedPointEnum.CardLvUpRP
  966. end
  967. end
  968. if redPointEnum == Enum.RedPointEnum.None then
  969. --神器
  970. local slotRP = self:GetRoleSkillEuipSlotRP(id)
  971. if slotRP then
  972. redPointEnum = Enum.RedPointEnum.SkillEquip
  973. end
  974. end
  975. return redPointEnum
  976. end
  977. function HeroRPCtr:GetHeroEquipRPStatus()
  978. for _,v in pairs(self.heroEquipDressRP) do
  979. if v then
  980. return Enum.RedPointEnum.EquipDressRP
  981. end
  982. end
  983. for _,v in pairs(self.heroEquipForgeRP) do
  984. if v then
  985. local state = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(13)
  986. if state then
  987. return Enum.RedPointEnum.EquipForgeRP
  988. end
  989. end
  990. end
  991. for _,v in pairs(self.heroEquipRefineRP) do
  992. if v then
  993. local state = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(17)
  994. if state then
  995. return Enum.RedPointEnum.EquipRefineRP
  996. end
  997. end
  998. end
  999. return Enum.RedPointEnum.None
  1000. end
  1001. function HeroRPCtr:GetPartnerEquipRPStatus()
  1002. for _,v in pairs(self.partnerEquipDressRP) do
  1003. for _, v1 in pairs(v) do
  1004. if v1 then
  1005. return Enum.RedPointEnum.EquipDressRP
  1006. end
  1007. end
  1008. end
  1009. for _,v in pairs(self.partnerEquipForgeRP) do
  1010. for _, v1 in pairs(v) do
  1011. if v1 then
  1012. local state = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(13)
  1013. if state then
  1014. return Enum.RedPointEnum.EquipForgeRP
  1015. end
  1016. end
  1017. end
  1018. end
  1019. for _,v in pairs(self.partnerEquipRefineRP) do
  1020. for _, v1 in pairs(v) do
  1021. if v1 then
  1022. local state = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(17)
  1023. if state then
  1024. return Enum.RedPointEnum.EquipRefineRP
  1025. end
  1026. end
  1027. end
  1028. end
  1029. return Enum.RedPointEnum.None
  1030. end
  1031. function HeroRPCtr:GetPartnerEquipRPStatusById(id)
  1032. local index = ManagerContainer.DataMgr.UserData:GetSlotIndexByHeroId(id)
  1033. for _,v in pairs(self.partnerEquipDressRP[index]) do
  1034. if v then
  1035. return Enum.RedPointEnum.EquipDressRP
  1036. end
  1037. end
  1038. for _,v in pairs(self.partnerEquipForgeRP[index]) do
  1039. if v then
  1040. local state = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(13)
  1041. if state then
  1042. return Enum.RedPointEnum.EquipForgeRP
  1043. end
  1044. end
  1045. end
  1046. for _,v in pairs(self.partnerEquipRefineRP[index]) do
  1047. if v then
  1048. local state = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(17)
  1049. if state then
  1050. return Enum.RedPointEnum.EquipRefineRP
  1051. end
  1052. end
  1053. end
  1054. return Enum.RedPointEnum.None
  1055. end
  1056. function HeroRPCtr:GetHeroEquipDressRPStatus()
  1057. for _,v in pairs(self.heroEquipDressRP) do
  1058. if v then
  1059. return Enum.RedPointEnum.EquipDressRP
  1060. end
  1061. end
  1062. return Enum.RedPointEnum.None
  1063. end
  1064. function HeroRPCtr:GetHeroEquipForgeRPStatus()
  1065. local state = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(13)
  1066. if not state then
  1067. return Enum.RedPointEnum.None
  1068. end
  1069. for _,v in pairs(self.heroEquipForgeRP) do
  1070. if v then
  1071. return Enum.RedPointEnum.EquipForgeRP
  1072. end
  1073. end
  1074. return Enum.RedPointEnum.None
  1075. end
  1076. function HeroRPCtr:GetHeroEquipRefineRPStatus()
  1077. local state = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(13)
  1078. if not state then
  1079. return Enum.RedPointEnum.None
  1080. end
  1081. for _,v in pairs(self.heroEquipRefineRP) do
  1082. if v then
  1083. return Enum.RedPointEnum.EquipRefineRP
  1084. end
  1085. end
  1086. return Enum.RedPointEnum.None
  1087. end
  1088. function HeroRPCtr:GetHeroEquipRefineRPStatusByIdx(idx)
  1089. local state = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(17)
  1090. if not state then
  1091. return Enum.RedPointEnum.None
  1092. end
  1093. if self.heroEquipRefineRP[idx] then
  1094. return Enum.RedPointEnum.EquipRefineRP
  1095. end
  1096. return Enum.RedPointEnum.None
  1097. end
  1098. function HeroRPCtr:GetHeroAttrRPStatus()
  1099. return self.heroAttrRP
  1100. end
  1101. function HeroRPCtr:GetHeroEquipDressRPStatusByIdx(idx)
  1102. if self.heroEquipDressRP[idx] then
  1103. return Enum.RedPointEnum.EquipDressRP
  1104. end
  1105. return Enum.RedPointEnum.None
  1106. end
  1107. function HeroRPCtr:GetPartnerEquipDressRPStatusById(id)
  1108. local index = ManagerContainer.DataMgr.UserData:GetSlotIndexByHeroId(id)
  1109. for _,v in pairs(self.partnerEquipDressRP[index]) do
  1110. if v then
  1111. return Enum.RedPointEnum.EquipDressRP
  1112. end
  1113. end
  1114. return Enum.RedPointEnum.None
  1115. end
  1116. function HeroRPCtr:GetPartnerEquipDressRPStatusByIdAndIdx(id, idx)
  1117. local index = ManagerContainer.DataMgr.UserData:GetSlotIndexByHeroId(id)
  1118. if self.partnerEquipDressRP[index][idx] then
  1119. return Enum.RedPointEnum.EquipDressRP
  1120. end
  1121. return Enum.RedPointEnum.None
  1122. end
  1123. function HeroRPCtr:GetpartnerEquipForgeRPStatusById(id)
  1124. local state = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(13)
  1125. if not state then
  1126. return Enum.RedPointEnum.None
  1127. end
  1128. local index = ManagerContainer.DataMgr.UserData:GetSlotIndexByHeroId(id)
  1129. for _,v in pairs(self.partnerEquipForgeRP[index]) do
  1130. if v then
  1131. return Enum.RedPointEnum.EquipForgeRP
  1132. end
  1133. end
  1134. return Enum.RedPointEnum.None
  1135. end
  1136. function HeroRPCtr:GetpartnerEquipRefineRPStatusById(id)
  1137. local state = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(17)
  1138. if not state then
  1139. return Enum.RedPointEnum.None
  1140. end
  1141. local index = ManagerContainer.DataMgr.UserData:GetSlotIndexByHeroId(id)
  1142. for _,v in pairs(self.partnerEquipRefineRP[index]) do
  1143. if v then
  1144. return Enum.RedPointEnum.EquipRefineRP
  1145. end
  1146. end
  1147. return Enum.RedPointEnum.None
  1148. end
  1149. function HeroRPCtr:GetpartnerEquipRefineRPStatusByIdAndIdx(id, idx)
  1150. local state = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(17)
  1151. if not state then
  1152. return Enum.RedPointEnum.None
  1153. end
  1154. local index = ManagerContainer.DataMgr.UserData:GetSlotIndexByHeroId(id)
  1155. if self.partnerEquipRefineRP[index][idx] then
  1156. return Enum.RedPointEnum.EquipRefineRP
  1157. end
  1158. return Enum.RedPointEnum.None
  1159. end
  1160. function HeroRPCtr:GetPartnerLvUpRPStatusById(id)
  1161. return self.partnerLvUpRP[id] or false
  1162. end
  1163. function HeroRPCtr:GetPartnerStrengthRPStatusById(id)
  1164. return self.partnerStrengthRP[id] or false
  1165. end
  1166. function HeroRPCtr:GetHeroTransferRPStatus()
  1167. return self.heroTransferRP
  1168. end
  1169. function HeroRPCtr:GetPartnerTransferRPStatusById(id)
  1170. return self.partnerTransferRP[id]
  1171. end
  1172. function HeroRPCtr:GetPartnerRecruitRPStatusById(id)
  1173. return self.partnerRecruitRP[id] and Enum.RedPointEnum.RecruitRP or Enum.RedPointEnum.None
  1174. end
  1175. function HeroRPCtr:FashionDataNotify()
  1176. --local lockState = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(9)
  1177. --if not lockState then
  1178. -- return
  1179. --end
  1180. -- local fashionMap = ManagerContainer.DataMgr.FashionData:GetFashionMap()
  1181. -- if fashionMap then
  1182. -- for _, value in pairs(fashionMap) do
  1183. -- if value.isNew then
  1184. -- if self.fashionNewRP then
  1185. -- return
  1186. -- end
  1187. -- self.fashionNewRP = true
  1188. -- -- 红点有变化
  1189. -- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_NOTICE, Enum.RedPointEnum.FashionNewRP)
  1190. -- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.NewFashion, true)
  1191. -- return
  1192. -- end
  1193. -- end
  1194. -- end
  1195. -- if not self.fashionNewRP then
  1196. -- return
  1197. -- end
  1198. -- self.fashionNewRP = false
  1199. -- -- 红点有变化
  1200. -- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_NOTICE, Enum.RedPointEnum.FashionNewRP)
  1201. -- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.RED_POINT_MGR_NOTICE, Enum.RPNotifyType.NewFashion, false)
  1202. end
  1203. function HeroRPCtr:GetAttrPointRPStatus(id)
  1204. if id == 1 then
  1205. return self.heroAttrRP
  1206. else
  1207. return self.partnerAttrRP[id]
  1208. end
  1209. end
  1210. function HeroRPCtr:GetFashionNewRPStatus()
  1211. local state = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(9)
  1212. if not state then
  1213. return Enum.RedPointEnum.None
  1214. end
  1215. if self.fashionNewRP then
  1216. return Enum.RedPointEnum.FashionNewRP
  1217. end
  1218. return Enum.RedPointEnum.None
  1219. end
  1220. function HeroRPCtr:SkillUnlockNotify()
  1221. if self.heroSkillRPCtr then
  1222. self.heroSkillRPCtr:SkillUnlockNotify()
  1223. end
  1224. end
  1225. function HeroRPCtr:CancelSkillUnlockNotify(heroId, skillId)
  1226. if self.heroSkillRPCtr then
  1227. self.heroSkillRPCtr:CancelSkillUnlockNotify(heroId, skillId)
  1228. end
  1229. end
  1230. function HeroRPCtr:GetAllSkillUnlockRPStatus()
  1231. local state = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(21)
  1232. if not state then
  1233. return Enum.RedPointEnum.None
  1234. end
  1235. if self.heroSkillRPCtr then
  1236. return self.heroSkillRPCtr:GetAllSkillUnlockRPStatus()
  1237. end
  1238. return Enum.RedPointEnum.None
  1239. end
  1240. function HeroRPCtr:GetHeroSkillUnlockRPStatus(heroId)
  1241. local state = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(21)
  1242. if not state then
  1243. return Enum.RedPointEnum.None
  1244. end
  1245. if self.heroSkillRPCtr then
  1246. return self.heroSkillRPCtr:GetHeroSkillUnlockRPStatus(heroId)
  1247. end
  1248. return Enum.RedPointEnum.None
  1249. end
  1250. function HeroRPCtr:GetSkillUnlockRPStatus(heroId, skillId)
  1251. local state = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(21)
  1252. if not state then
  1253. return Enum.RedPointEnum.None
  1254. end
  1255. if self.heroSkillRPCtr then
  1256. return self.heroSkillRPCtr:GetSkillUnlockRPStatus(heroId, skillId)
  1257. end
  1258. return Enum.RedPointEnum.None
  1259. end
  1260. function HeroRPCtr:Dispose()
  1261. self.heroAttrRP = nil
  1262. self.heroEquipDressRP = nil
  1263. self.heroEquipForgeRP = nil
  1264. self.heroTransferRP = nil
  1265. self.partnerEquipDressRP = nil
  1266. self.partnerEquipForgeRP = nil
  1267. self.partnerLvUpRP = nil
  1268. self.partnerStrengthRP = nil
  1269. self.partnerTransferRP = nil
  1270. self.partnerRecruitRP = nil
  1271. self.fashionNewRP = nil
  1272. if self.heroSkillRPCtr then
  1273. self.heroSkillRPCtr:Dispose()
  1274. end
  1275. self.heroSkillRPCtr = nil
  1276. self.roleCardSlotRP = nil
  1277. self.skillEquipSlotRP = nil
  1278. end
  1279. return HeroRPCtr