UIRoleMain1Ctr.lua 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708
  1. local UIRoleMain1Ctr = class("UIRoleMain1Ctr", require("UICtrBase"))
  2. local canAdvence = false
  3. local activationList = {}
  4. local isLeader = false
  5. local curOwnIndex = 1
  6. local battledPartnerCount = 0
  7. local battleStatus = false
  8. local allRecruitDscs
  9. local sortedPartnerDatas
  10. function UIRoleMain1Ctr:Init(view)
  11. self.view = view
  12. end
  13. function UIRoleMain1Ctr:SetData(data)
  14. self.asyncIdx = 0
  15. if data == nil then return end
  16. self.data = data
  17. isLeader = data == 1
  18. self:SetCurOwnerIndexById(data)
  19. end
  20. function UIRoleMain1Ctr:GetAsyncIdx()
  21. self.asyncIdx = self.asyncIdx + 1
  22. return self.asyncIdx
  23. end
  24. function UIRoleMain1Ctr:GetData()
  25. return self.data
  26. end
  27. function UIRoleMain1Ctr:SetCurOwnerIndexById(id)
  28. if id == 1 then
  29. curOwnIndex = 1
  30. else
  31. sortedPartnerDatas = nil
  32. if sortedPartnerDatas == nil then
  33. self:GetSlotSortPartnerDatas()
  34. end
  35. for k,v in pairs(sortedPartnerDatas) do
  36. if v.id == id then
  37. curOwnIndex = k + 1
  38. end
  39. end
  40. end
  41. end
  42. function UIRoleMain1Ctr:GetIsLeader()
  43. return isLeader
  44. end
  45. function UIRoleMain1Ctr:GetCurSLotIndex()
  46. if isLeader then
  47. return 1
  48. else
  49. local logicData = self:GetHeroLogicData()
  50. --if logicData.isBattle then
  51. return logicData.id
  52. --end
  53. end
  54. return nil
  55. end
  56. function UIRoleMain1Ctr:PartnerLvUpReq(id)
  57. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_HERO_LEVEL_UP_REQ, {hero_id = id})
  58. end
  59. function UIRoleMain1Ctr:PartnerAdvenceLvUpReq(id)
  60. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_HERO_ADVANCE_REQ, {hero_id = id})
  61. end
  62. function UIRoleMain1Ctr:PartnerBattleReq(id, isBattle)
  63. battleStatus = isBattle
  64. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_HERO_BATTLE_REQ, {hero_id = id, is_battle = isBattle})
  65. end
  66. function UIRoleMain1Ctr:GetBattleStatus()
  67. return battleStatus
  68. end
  69. function UIRoleMain1Ctr:GetHeroLogicData()
  70. if isLeader then
  71. return ManagerContainer.DataMgr.UserData:GetHeroData()
  72. else
  73. return ManagerContainer.DataMgr.PartnerData:GetPartnerDataByUniqueId(self.data)
  74. end
  75. end
  76. function UIRoleMain1Ctr:GetHeroJobType()
  77. local jobType
  78. if isLeader then
  79. local logicData = ManagerContainer.DataMgr.UserData:GetHeroData()
  80. local jobData = ManagerContainer.CfgMgr:GetJobDataById(logicData.configId)
  81. jobType = jobData.JobType
  82. else
  83. local logicData = ManagerContainer.DataMgr.PartnerData:GetPartnerDataByUniqueId(self.data)
  84. local cfgData = ManagerContainer.CfgMgr:GetPartnerDataById(logicData.configId)
  85. jobType = cfgData.JobType
  86. end
  87. return jobType
  88. end
  89. function UIRoleMain1Ctr:GetHeroStepData()
  90. local logicData = ManagerContainer.DataMgr.PartnerData:GetPartnerDataByUniqueId(self.data)
  91. local cfgData = ManagerContainer.CfgMgr:GetPartnerDataById(logicData.configId)
  92. return ManagerContainer.CfgMgr:GetParterProgressById(cfgData.ParterJob)
  93. end
  94. function UIRoleMain1Ctr:GetPartnerLogicDataByPostId(slot)
  95. local partnerDatas = ManagerContainer.DataMgr.PartnerData:GetPartnerDatas()
  96. for _,v in pairs(partnerDatas) do
  97. if v.post == slot then
  98. return v
  99. end
  100. end
  101. return nil
  102. end
  103. function UIRoleMain1Ctr:GetSlotSortPartnerDatas()
  104. local partnerDatas = ManagerContainer.DataMgr.PartnerData:GetPartnerDatas()
  105. sortedPartnerDatas = {}
  106. for _,v in pairs(partnerDatas) do
  107. sortedPartnerDatas[#sortedPartnerDatas + 1] = v
  108. end
  109. table.sort(sortedPartnerDatas, function (a, b)
  110. if a.owned and b.owned then
  111. return a.post < b.post
  112. else
  113. if a.owned and not b.owned then
  114. return true
  115. elseif not a.owned and b.owned then
  116. return false
  117. else
  118. return a.post < b.post
  119. end
  120. end
  121. end)
  122. end
  123. function UIRoleMain1Ctr:GetSortedPartnerDatas()
  124. if sortedPartnerDatas == nil then
  125. self:GetSlotSortPartnerDatas()
  126. end
  127. return sortedPartnerDatas
  128. end
  129. function UIRoleMain1Ctr:GetHeroLogicId()
  130. local logicData = self:GetHeroLogicData()
  131. return logicData.id
  132. end
  133. function UIRoleMain1Ctr:GetPartnerCurMaxLv()
  134. local logicData = self:GetHeroLogicData()
  135. local cfgData = ManagerContainer.CfgMgr:GetPartnerDataById(logicData.configId)
  136. local stepData = ManagerContainer.CfgMgr:GetParterProgressById(cfgData.ParterJob)
  137. if stepData == nil then
  138. canAdvence = false
  139. return logicData.baseLevel
  140. end
  141. local advenceMaxLv = logicData.advanceLevel < #stepData.AddLv and stepData.AddLv[logicData.advanceLevel + 1] or stepData.AddLv[#stepData.AddLv]
  142. local curMaxLv = logicData.strengthLevel == 0 and advenceMaxLv or (advenceMaxLv + stepData.BreachAddLv[logicData.strengthLevel])
  143. canAdvence = advenceMaxLv == logicData.baseLevel and logicData.advanceLevel < #stepData.AddLv
  144. if #stepData.AddLv <= logicData.advanceLevel then
  145. advenceMaxLv = nil
  146. end
  147. return curMaxLv, advenceMaxLv
  148. end
  149. function UIRoleMain1Ctr:GetPartnerNextMaxLv()
  150. local logicData = self:GetHeroLogicData()
  151. local cfgData = ManagerContainer.CfgMgr:GetPartnerDataById(logicData.configId)
  152. local stepData = ManagerContainer.CfgMgr:GetParterProgressById(cfgData.ParterJob)
  153. return stepData.AddLv[logicData.advanceLevel + 1]
  154. end
  155. function UIRoleMain1Ctr:GetPartmerLastMaxLv()
  156. local logicData = self:GetHeroLogicData()
  157. local stepData = ManagerContainer.CfgMgr:GetParterProgressById(logicData.configId)
  158. return stepData.AddLv[logicData.advanceLevel]
  159. end
  160. function UIRoleMain1Ctr:CanAdvence()
  161. return canAdvence
  162. end
  163. local function IsActivationPartner(partnerId, activationList)
  164. for _,v in pairs(activationList) do
  165. if v.configId == partnerId then
  166. return v
  167. end
  168. end
  169. return nil
  170. end
  171. function UIRoleMain1Ctr:GetSlotsList()
  172. return ManagerContainer.DataMgr.UserData:GetAllSlotInfos()
  173. end
  174. function UIRoleMain1Ctr:GetActivationPartnerCount()
  175. local activationPartners = ManagerContainer.DataMgr.PartnerData:GetPartnerDatas()
  176. local index = 0
  177. for k,v in pairs(activationPartners) do
  178. index = index + 1
  179. end
  180. return index
  181. end
  182. function UIRoleMain1Ctr:GetBattlePartnerCount()
  183. return battledPartnerCount
  184. end
  185. function UIRoleMain1Ctr:RefreshPartnersLists()
  186. activationList = {}
  187. battledPartnerCount = 0
  188. local activationPartners = ManagerContainer.DataMgr.PartnerData:GetPartnerDatas()
  189. local partnerDatas = ManagerContainer.CfgMgr:GetAllPartnerDatas()
  190. for k,v in pairs(partnerDatas) do
  191. local data = IsActivationPartner(k, activationPartners)
  192. if data ~= nil and data.owned and data.isBattle then
  193. activationList[#activationList + 1] = {id = v.ParterId, NatureId = v.NatureId, baseLevel = data.base_level}
  194. battledPartnerCount = battledPartnerCount + 1
  195. end
  196. end
  197. CommonUtil.ArraySortSelections(activationList, Enum.TableSortRule.Down, "status", "baseLevel")
  198. return activationList
  199. end
  200. function UIRoleMain1Ctr:SendCurEquipDress(index, id)
  201. if isLeader then
  202. local oldSlot = CommonUtil.TableClone(ManagerContainer.DataMgr.UserData:GetCurSlotInfos(1))
  203. ManagerContainer.LuaUIMgr:SetOldSlot(oldSlot)
  204. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_EQUIP_UP_REQ, {hero_id = 1, slot_index = index, equip_id = id})
  205. else
  206. local logicData = self:GetHeroLogicData()
  207. --if logicData.isBattle then
  208. local slots = ManagerContainer.DataMgr.UserData:GetSlotInfosByHeroId(logicData.id)
  209. local oldSlot = CommonUtil.TableClone(slots)
  210. ManagerContainer.LuaUIMgr:SetOldSlot(oldSlot)
  211. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_EQUIP_UP_REQ, {hero_id = ManagerContainer.DataMgr.UserData:GetSlotIndexByHeroId(logicData.id), slot_index = index, equip_id = id})
  212. --end
  213. end
  214. end
  215. function UIRoleMain1Ctr:SendFightPowerReq(id)
  216. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_HERO_FIGH_POWER_REQ, {hero_id = id})
  217. end
  218. function UIRoleMain1Ctr:SendOneKeyEquipDress()
  219. if isLeader then
  220. local oldSlot = CommonUtil.TableClone(ManagerContainer.DataMgr.UserData:GetCurSlotInfos(1))
  221. ManagerContainer.LuaUIMgr:SetOldSlot(oldSlot)
  222. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_EQUIP_UP_REQ, {hero_id = 1, slot_index = 0})
  223. else
  224. local logicData = self:GetHeroLogicData()
  225. --if logicData.isBattle then
  226. local slots = ManagerContainer.DataMgr.UserData:GetSlotInfosByHeroId(logicData.id)
  227. local oldSlot = CommonUtil.TableClone(slots)
  228. ManagerContainer.LuaUIMgr:SetOldSlot(oldSlot)
  229. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_EQUIP_UP_REQ, {hero_id = ManagerContainer.DataMgr.UserData:GetSlotIndexByHeroId(logicData.id), slot_index = 0})
  230. --end
  231. end
  232. end
  233. function UIRoleMain1Ctr:SendCurEquipPutOff(index, id)
  234. if isLeader then
  235. local oldSlot = CommonUtil.TableClone(ManagerContainer.DataMgr.UserData:GetCurSlotInfos(1))
  236. ManagerContainer.LuaUIMgr:SetOldSlot(oldSlot)
  237. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_EQUIP_DOWN_REQ, {hero_id = 1, sub_index = index})
  238. else
  239. local logicData = self:GetHeroLogicData()
  240. --if logicData.isBattle then
  241. local slots = ManagerContainer.DataMgr.UserData:GetSlotInfosByHeroId(logicData.id)
  242. local oldSlot = CommonUtil.TableClone(slots)
  243. ManagerContainer.LuaUIMgr:SetOldSlot(oldSlot)
  244. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_EQUIP_DOWN_REQ, {hero_id = ManagerContainer.DataMgr.UserData:GetSlotIndexByHeroId(logicData.id), sub_index = index})
  245. --end
  246. end
  247. end
  248. function UIRoleMain1Ctr:SendOneKeyEquipPutOff()
  249. if isLeader then
  250. local oldSlot = CommonUtil.TableClone(ManagerContainer.DataMgr.UserData:GetCurSlotInfos(1))
  251. ManagerContainer.LuaUIMgr:SetOldSlot(oldSlot)
  252. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_EQUIP_DOWN_REQ, {hero_id = 1})
  253. else
  254. local logicData = self:GetHeroLogicData()
  255. --if logicData.isBattle then
  256. local slots = ManagerContainer.DataMgr.UserData:GetSlotInfosByHeroId(logicData.id)
  257. local oldSlot = CommonUtil.TableClone(slots)
  258. ManagerContainer.LuaUIMgr:SetOldSlot(oldSlot)
  259. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_EQUIP_DOWN_REQ, {hero_id = ManagerContainer.DataMgr.UserData:GetSlotIndexByHeroId(logicData.id)})
  260. --end
  261. end
  262. end
  263. function UIRoleMain1Ctr:SendOneKeyUp()
  264. local slotIdx = nil
  265. if isLeader then
  266. slotIdx = 1
  267. else
  268. local logicData = self:GetHeroLogicData()
  269. slotIdx = logicData.id
  270. end
  271. local canForge, list, lackCoin, lackEquip = ManagerContainer.DataMgr.EquipData:GetForgeStatus(slotIdx, true)
  272. if not canForge and lackCoin then
  273. CommonUtil.ItemNotEnoughHandle(Enum.ItemType.Coin)
  274. return
  275. end
  276. if not canForge and lackEquip then
  277. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(Enum.ActionNotiveType.MetaLack)
  278. return
  279. end
  280. if isLeader then
  281. local oldSlot = CommonUtil.TableClone(ManagerContainer.DataMgr.UserData:GetCurSlotInfos(1))
  282. ManagerContainer.LuaUIMgr:SetOldSlot(oldSlot)
  283. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_EQUIP_LEVEL_UP_ALL_REQ, {hero_id = 1})
  284. else
  285. local logicData = self:GetHeroLogicData()
  286. --if logicData.isBattle then
  287. local slots = ManagerContainer.DataMgr.UserData:GetSlotInfosByHeroId(logicData.id)
  288. local oldSlot = CommonUtil.TableClone(slots)
  289. ManagerContainer.LuaUIMgr:SetOldSlot(oldSlot)
  290. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_EQUIP_LEVEL_UP_ALL_REQ, {hero_id = ManagerContainer.DataMgr.UserData:GetSlotIndexByHeroId(logicData.id)})
  291. --end
  292. end
  293. end
  294. function UIRoleMain1Ctr:GetSlotIndex()
  295. local logicData = self:GetHeroLogicData()
  296. return ManagerContainer.DataMgr.UserData:GetSlotIndexByHeroId(logicData.id)
  297. end
  298. function UIRoleMain1Ctr:HasEquipOn()
  299. local slots = nil
  300. if isLeader then
  301. slots = ManagerContainer.DataMgr.UserData:GetCurSlotInfos(1)
  302. else
  303. local logicData = self:GetHeroLogicData()
  304. --if not logicData.isBattle then return false end
  305. slots = ManagerContainer.DataMgr.UserData:GetSlotInfosByHeroId(logicData.id)
  306. end
  307. if slots == nil or #slots == 0 then
  308. return false
  309. end
  310. for _, v in pairs(slots) do
  311. if v.equip_id > 0 then
  312. return true
  313. end
  314. end
  315. return false
  316. end
  317. function UIRoleMain1Ctr:SendRecruit(configId)
  318. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_HERO_ACTIVE_REQ, {hero_id = configId})
  319. end
  320. function UIRoleMain1Ctr:GetCurRecruitCondDsc()
  321. if allRecruitDscs == nil then
  322. self:GetAllRecruitCondDsc()
  323. end
  324. local curLevel = ManagerContainer.LuaBattleMgr:GetCurLevelUniqueId()
  325. for i = 1, #allRecruitDscs do
  326. local num = tonumber(allRecruitDscs[i])
  327. if num > curLevel then
  328. --local levelData = ManagerContainer.CfgMgr:GetLevelDataById(num)
  329. return ManagerContainer.CfgMgr:GetLeveNameById(num)
  330. end
  331. end
  332. --local levelData = ManagerContainer.CfgMgr:GetLevelDataById(tonumber(allRecruitDscs[#allRecruitDscs]))
  333. return ManagerContainer.CfgMgr:GetLeveNameById(tonumber(allRecruitDscs[#allRecruitDscs]))
  334. end
  335. function UIRoleMain1Ctr:GetAllRecruitCondDsc()
  336. local val = GlobalConfig.Instance:GetConfigStrValue(267)
  337. allRecruitDscs = CommonUtil.DeserializeGlobalStrToTable(val)
  338. end
  339. function UIRoleMain1Ctr:GetSkillById(skillId)
  340. local hero = self:GetHeroLogicData()
  341. if hero == nil then
  342. return nil
  343. end
  344. if hero.skills == nil then
  345. return nil
  346. end
  347. for i = 1, #hero.skills do
  348. if hero.skills[i].skillId == skillId then
  349. return hero.skills[i]
  350. end
  351. end
  352. return nil
  353. end
  354. function UIRoleMain1Ctr:GetModelRawImageTex()
  355. if self.view == nil then return nil end
  356. return self.view:GetModelRawImageTex()
  357. end
  358. function UIRoleMain1Ctr:SetCurOwnerIndex(index)
  359. curOwnIndex = index
  360. end
  361. local function IndexOffset(curIndex, offset)
  362. local max = 6
  363. local num = curIndex + offset
  364. local index = num
  365. if num <= 0 then
  366. index = max
  367. elseif num > max then
  368. index = 1
  369. end
  370. return index
  371. end
  372. function UIRoleMain1Ctr:GetCurOwnerIndex()
  373. return curOwnIndex
  374. end
  375. function UIRoleMain1Ctr:SwichParterHero(offset)
  376. local curIndex = curOwnIndex
  377. curOwnIndex = IndexOffset(curIndex, offset)
  378. if curOwnIndex == 1 then
  379. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.SWICH_PARTNER_VIEW, 1)
  380. else
  381. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.SWICH_PARTNER_VIEW, sortedPartnerDatas[curOwnIndex - 1].id)
  382. end
  383. end
  384. function UIRoleMain1Ctr:GetSkillList()
  385. local logicData = self:GetHeroLogicData()
  386. local cfgData = ManagerContainer.CfgMgr:GetPartnerDataById(logicData.configId)
  387. local skillList = ManagerContainer.CfgMgr:GetParterSkillTreeByFeature(cfgData.JobType, cfgData.ParterId)
  388. if skillList then
  389. table.sort(skillList, function(a, b)
  390. return a.Pos < b.Pos
  391. end)
  392. end
  393. self.skillList = skillList
  394. return skillList
  395. end
  396. function UIRoleMain1Ctr:GetSkillItemInfoByIndex(itemIndex)
  397. return self.skillList and self.skillList[itemIndex + 1] or nil
  398. end
  399. function UIRoleMain1Ctr:OnOneKeyCardUp()
  400. local logicData = self:GetHeroLogicData()
  401. local jobType = self:GetHeroJobType()
  402. if jobType == nil then return end
  403. local slot = ManagerContainer.DataMgr.UserData:GetSlotInfoById(self.data)
  404. local slotList = slot.slot_list
  405. if slotList == nil then
  406. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("CardHandling")
  407. return
  408. end
  409. local noEquip = true
  410. local result = false
  411. local hasEmpty, hasCard = false, false
  412. local slotCards = {}
  413. for i = 1, 6 do
  414. local emptySlot = 0
  415. if slotList[i] ~= nil and slotList[i].equip_id > 0 then
  416. noEquip = false
  417. local cardList = slotList[i].card_id_list
  418. local cardSlotCount = ManagerContainer.RedPointMgr.HeroRPCtr:GetCardSlotCountByType(i)
  419. local idxes = {}
  420. for j = 1, cardSlotCount do
  421. if cardList[j] == 0 or cardList[j] == nil then
  422. idxes[#idxes + 1] = j
  423. emptySlot = emptySlot + 1
  424. end
  425. end
  426. if emptySlot > 0 then
  427. hasEmpty = true
  428. local list = ManagerContainer.DataMgr.CardData:GetAllCardDatasByType(i)
  429. local cardDatas = CommonUtil.ArrayFilterSelections(list, Enum.FilterType.AND, {"Profession"}, {jobType})
  430. if list ~= nil and cardDatas ~= nil then
  431. if not hasCard then
  432. hasCard = #list > #cardDatas
  433. end
  434. end
  435. if cardDatas ~= nil and next(cardDatas) then
  436. local data = {}
  437. data.slot_id = i
  438. data.card_slot_info = {}
  439. slotCards[#slotCards + 1] = data
  440. CommonUtil.ArraySortSelections(cardDatas, Enum.TableSortRule.Down, "CardType", "CardLevel", "FightPower", "cfgId")
  441. local cardIdx = 1
  442. local cfgId, count
  443. for j = 1, emptySlot do
  444. if idxes[j] and cardDatas[cardIdx] then
  445. if cfgId ~= cardDatas[cardIdx].cfgId then
  446. cfgId = cardDatas[cardIdx].cfgId
  447. count = cardDatas[cardIdx].num
  448. end
  449. result = true
  450. local data1 = {key = idxes[j], value = cardDatas[cardIdx].cfgId}
  451. data.card_slot_info[#data.card_slot_info + 1] = data1
  452. count = count - 1
  453. if count <= 0 then
  454. cardIdx = cardIdx + 1
  455. end
  456. end
  457. end
  458. end
  459. end
  460. end
  461. end
  462. if noEquip then
  463. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("CardHandling")
  464. return
  465. end
  466. if result then
  467. local data2 = {}
  468. data2.hero_id = logicData.id
  469. data2.eqiup_slot_data = slotCards
  470. local slots = ManagerContainer.DataMgr.UserData:GetSlotInfosByHeroId(logicData.id)
  471. local oldSlot = CommonUtil.TableClone(slots)
  472. ManagerContainer.LuaUIMgr:SetOldSlot(oldSlot)
  473. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_CARD_EQUIP_ALL_REQ, data2)
  474. ManagerContainer.RedPointMgr.HeroRPCtr:RefreshRoleCardSlotRP(self.data)
  475. else
  476. if hasEmpty then
  477. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(hasCard and "NoCardTips2" or "NoCardTips")
  478. end
  479. end
  480. end
  481. function UIRoleMain1Ctr:OnOneKeyCardForge()
  482. local slot = ManagerContainer.DataMgr.UserData:GetSlotInfoById(self.data)
  483. local slotList = slot.slot_list
  484. if slotList == nil then return end
  485. local costId = Enum.ItemIds.Coin
  486. --local costCount = ManagerContainer.DataMgr.CardData:GetComposeOnceCostNum()
  487. local remainRes = CommonUtil.GetOwnResCountByItemId(costId)
  488. --if CommonUtil.ResLackErrorNotice(costId, costCount) then
  489. -- return
  490. --end
  491. local forgeResult = false
  492. local resultType = 0
  493. local hasMvpResult = false
  494. local forgeRepeat = {}
  495. for i = 1, 6 do
  496. if slotList[i] ~= nil then
  497. local cardList = slotList[i].card_id_list
  498. for j = 1, #cardList do
  499. local cfgId = cardList[j]
  500. if cfgId > 0 then
  501. local result, remainRes1, hasMvp = ManagerContainer.DataMgr.CardData:CanCurCardUp(cfgId, 1, remainRes, true)
  502. if result then
  503. forgeResult = true
  504. remainRes = remainRes1
  505. if hasMvp then
  506. hasMvpResult = hasMvp
  507. end
  508. forgeRepeat[#forgeRepeat + 1] = {key = i, value = j}
  509. else
  510. if resultType == 0 or resultType == 3 then
  511. resultType = remainRes1
  512. end
  513. end
  514. end
  515. end
  516. end
  517. end
  518. if forgeResult then
  519. if hasMvpResult then
  520. local data = {"CardForgeMvpTip", nil, forgeRepeat, self, self.ForgeResultFunc}
  521. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINoticeTips, data)
  522. return
  523. else
  524. self:ForgeResultFunc(forgeRepeat)
  525. end
  526. else
  527. if resultType == 1 then
  528. ManagerContainer.LuaUIMgr:ErrorNoticeDisplayWithParam(CommonUtil.GetItemNotEnoughInfo(Enum.ItemIds.Coin))
  529. elseif resultType == 2 then
  530. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("LackCard")
  531. elseif resultType == 3 then
  532. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("154")
  533. end
  534. end
  535. end
  536. function UIRoleMain1Ctr:ForgeResultFunc(forgeRepeat)
  537. local protoData = {}
  538. protoData.hero_id = self.data
  539. protoData.data = forgeRepeat
  540. local slots = ManagerContainer.DataMgr.UserData:GetSlotInfosByHeroId(self.data)
  541. local oldSlot = CommonUtil.TableClone(slots)
  542. ManagerContainer.LuaUIMgr:SetOldSlot(oldSlot)
  543. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_CARD_UP_GRADE_ALL_REQ, protoData)
  544. end
  545. function UIRoleMain1Ctr:InsertedCards()
  546. local slot = ManagerContainer.DataMgr.UserData:GetSlotInfoById(self.data)
  547. local slotList = slot.slot_list
  548. if slotList == nil then return false end
  549. local result = false
  550. for i = 1, 6 do
  551. if slotList[i] ~= nil then
  552. local cardList = slotList[i].card_id_list
  553. for _,v in pairs(cardList) do
  554. if v > 0 then
  555. result = true
  556. end
  557. end
  558. end
  559. end
  560. return result
  561. end
  562. function UIRoleMain1Ctr:OnOneKeyCardDown()
  563. local slot = ManagerContainer.DataMgr.UserData:GetSlotInfoById(self.data)
  564. local slotList = slot.slot_list
  565. if slotList == nil then
  566. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("CardHandling")
  567. return
  568. end
  569. local noEquip = true
  570. for i = 1, 6 do
  571. if slotList[i] ~= nil and slotList[i].equip_id > 0 then
  572. noEquip = false
  573. break
  574. end
  575. end
  576. if noEquip then
  577. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("CardHandling")
  578. return
  579. end
  580. local slots = ManagerContainer.DataMgr.UserData:GetSlotInfosByHeroId(self:GetHeroLogicId())
  581. local oldSlot = CommonUtil.TableClone(slots)
  582. ManagerContainer.LuaUIMgr:SetOldSlot(oldSlot)
  583. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_CARD_EQUIP_DOWN_REQ, {hero_id = self.data})
  584. end
  585. function UIRoleMain1Ctr:GetCurHeroSkillEquipSlotData()
  586. local heroData = CommonUtil.GetHeroLogicDataByUid(self.data)
  587. local skillDataSlot = heroData.skillEquipSlot
  588. local curSkillEquipData = (skillDataSlot and skillDataSlot.slotList) and skillDataSlot.slotList[1] or nil
  589. return curSkillEquipData
  590. end
  591. function UIRoleMain1Ctr:SendSkillEquipDownReq()
  592. ManagerContainer.DataMgr.SkillEquipData:SendSkillEquipDownReq(self.data, 1)
  593. end
  594. function UIRoleMain1Ctr:SendSkillEquipUpReq(id)
  595. ManagerContainer.DataMgr.SkillEquipData:SendSkillEquipUpReq(self.data, 1, id)
  596. end
  597. function UIRoleMain1Ctr:OnDispose()
  598. -- if ManagerContainer.DataMgr.SkillsData.skillDirty then
  599. -- ManagerContainer.LuaBattleMgr:UpdateTeamSkills()
  600. -- ManagerContainer.DataMgr.SkillsData.skillDirty = false
  601. -- end
  602. sortedPartnerDatas = nil
  603. allRecruitDscs = nil;
  604. self.skillList = nil
  605. self.data = nil
  606. self.view = nil
  607. end
  608. return UIRoleMain1Ctr