UIRoleMessageView.lua 54 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571
  1. --[[
  2. 该页面分三大块:玩家页面/角色页面/宠物页面
  3. ]]--
  4. local UIRoleMessageView = require("UIRoleMessage/UIRoleMessageView_Generate")
  5. local RoleViewSystem = require("RoleViewSystem")
  6. local PreviewSystem = require("PreviewSystem")
  7. local PetViewSystem = require("PetViewSystem")
  8. local RoleMessageHeadCtr = require("Common/RoleMessageHeadCtr")
  9. local EquipmentShowSlotItemCtr = require("Common/EquipmentShowSlotItemCtr")
  10. local NickNameCtr = require("Common/NickNameCtr")
  11. local IconItemCtr = require ("Common.IconItemCtr")
  12. local curIndex, lastIndex
  13. local curModel;
  14. local roleViewSystems = nil;
  15. local previewSystem = nil;
  16. local petViewSystem = nil
  17. local isLeader = false;
  18. local partnerId;
  19. local petId;
  20. local _roleHeadName = "RoleMessageHeadOriginal";
  21. local _equipmentSlotName = "EquipmentShowSlotItem";
  22. local _skillSlotName = "SkillSlotOriginal";
  23. local _equipSlotNames = {};
  24. local _data = nil; --获取到的整理好的数据
  25. local pageToggleData = {}
  26. local attrSortList
  27. local attrsShowState = false
  28. local ActiveTitleList = {}
  29. local isShowTitleScroll = false
  30. function UIRoleMessageView:OnAwake(data)
  31. self.controller = require("UIRoleMessage/UIRoleMessageCtr")
  32. self.controller:Init(self)
  33. self.controller:SetData(data)
  34. end
  35. function UIRoleMessageView:AddEventListener()
  36. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.AFTER_REFRESH_NAME, self, self.SetPlayerName);
  37. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.USER_HEADPROTRAIT_CHANGED, self, self.OnChangeHeadEvent)
  38. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.USER_HEADPROTRAIT_DATA_TIDY, self, self.OnHeadDataEvent)
  39. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.SEASON_SELECTION_NTF, self, self.AfterRefreshDanScore)
  40. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.SEASON_OPEN_NTF, self, self.AfterRefreshSeason)
  41. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_Used_New_HeadFrame, self, self.ChangeHeadFrame)
  42. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.FIGHTPOWER_REFRESH, self, self.RefreshTotalFightPower)
  43. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.TITLE_WEARER_DISBOARD_NOTICE, self, self.ChangeTitle)
  44. end
  45. function UIRoleMessageView:FillContent(data, uiBase)
  46. self.uiBase = uiBase
  47. local gameObject = self.uiBase:GetRoot()
  48. if gameObject ~= nil then
  49. self.gameObject = gameObject
  50. self.transform = gameObject.transform
  51. end
  52. self:InitGenerate(self.transform, data)
  53. self:Init()
  54. end
  55. function UIRoleMessageView:Init()
  56. self:InitRoleSystems()
  57. self:Refresh()
  58. isShowTitleScroll = false
  59. self.titleScroll:SetActive(isShowTitleScroll)
  60. self.titleScroll.loopGridView:InitGridView(0, function(gridView, itemIndex, row, column)
  61. return self:GetTitleItemByRowColumn(gridView, itemIndex, row, column)
  62. end, nil)
  63. end
  64. function UIRoleMessageView:InitRoleSystems()
  65. if not petViewSystem then
  66. petViewSystem = PetViewSystem:new()
  67. end
  68. if not roleViewSystems then
  69. roleViewSystems = {}
  70. end
  71. for i = 1, 6 do
  72. local roleViewSystem = RoleViewSystem:new()
  73. roleViewSystems[i] = roleViewSystem
  74. end
  75. end
  76. function UIRoleMessageView:Refresh()
  77. pageToggleData.toggleDefaultIndex = 1
  78. curIndex = 1
  79. attrSortList = {}
  80. for k,v in pairs(Enum.HeroAttrType) do
  81. attrSortList[#attrSortList + 1] = v
  82. end
  83. table.sort(attrSortList, function (a,b)
  84. return a < b
  85. end)
  86. self:ChangeTitle() --刷新称号
  87. self:CreateValues();
  88. self:CreateTargetTables();
  89. -- self.userButton:SetActive(SDKMgr.Instance:CheckHasModul(SDKModulType.USERMANAGER))
  90. self.userButton:SetActive(true)
  91. --开启界面默认选中玩家页面
  92. self.playerMessage.toggle.isOn = true;
  93. self:OnPageToggleClick(self.playerMessage.toggle, 1, true);
  94. --开启界面的时候就控制按钮的显示状态
  95. local _isSelf = self.controller:GetData()._targetTag == 0;
  96. self:SetChangeNameButton(_isSelf)
  97. self:SetBottomButtons(_isSelf);
  98. self.titleBtn:SetActive(_isSelf)
  99. ManagerContainer.LuaEventMgr:RegisterEvent(UIEventNames.EID_PAGE_REDPOINT_NTF, self, self.OnPageRedpointNtf)
  100. if _isSelf then
  101. --ManagerContainer.DataMgr.CompetitionData:SetRefreshSeasonState(true);
  102. --请求赛季信息,赛季信息是在打开赛季界面的时候才会请求,如果玩家在打开赛季之前打开了自己信息界面,必须要先请求一下赛季消息
  103. --ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_COMPETITION_REQ, {competition_id = 0})
  104. ManagerContainer.DataMgr.ArenaData:SendArenaDataReq(Enum.UIPageName.UIRoleMessage)
  105. else
  106. self:SetRPState(false)
  107. end
  108. end
  109. function UIRoleMessageView:RemoveEventListener()
  110. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  111. ManagerContainer.LuaEventMgr:UnregisterEvent(UIEventNames.EID_PAGE_REDPOINT_NTF, self, self.OnPageRedpointNtf)
  112. end
  113. function UIRoleMessageView:AddUIEventListener()
  114. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
  115. CommonUtil.CreateToggleMouduleOnlyBtns(self, pageToggleData, self.bottomRoot, 1, self.OnAttrOrSkillChangeToggleClick, nil, false, true)
  116. self.uiBase:AddButtonEventListener(self.btnClose.button, self, self.OnBtnCloseClick);
  117. self:ToggleAddListener();
  118. self:BottomButtonAddListener(self.controller:GetData()._targetTag == 0);
  119. self:AddPlayerPageUIEventListener();
  120. self:DragModel();
  121. self.uiBase:AddButtonEventListener(self.goToDetailButton.button, self, self.OnGoToDetailClick);
  122. self.uiBase:AddButtonEventListener(self.goToBaseButton.button, self, self.OnGoToBaseClick);
  123. self.uiBase:AddButtonEventListener(self.AnyBtn.button,self, self.OnBtnCloseClick)
  124. self.uiBase:AddButtonEventListener(self.serverButton.button, self, self.OnClickServerBtn)
  125. self.uiBase:AddButtonEventListener(self.userButton.button, self, self.OnClickUserBtn)
  126. self.uiBase:AddButtonEventListener(self.titleBtn.button, self, self.OntitleBtnClick)
  127. self.uiBase:AddButtonEventListener(self.petBaseAttRoot.goToDetailButton.button, self, self.OnClickPetDetailBtn)
  128. self.uiBase:AddButtonEventListener(self.petDetailAttRoot.goToBaseButton.button, self, self.OnClickPetBaseBtn)
  129. self.uiBase:AddButtonEventListener(self.btnPetAttrs.button, self, self.OnPetAttrsClick)
  130. self.uiBase:AddButtonEventListener(self.btnCardBless.button, self, self.OnCardBlessClick)
  131. end
  132. function UIRoleMessageView:OntitleBtnClick()
  133. isShowTitleScroll = not isShowTitleScroll
  134. self.titleScroll:SetActive(isShowTitleScroll)
  135. if isShowTitleScroll then
  136. ActiveTitleList = ManagerContainer.DataMgr.TitleData:GetAllActiveTitleList()
  137. self.titleScroll.loopGridView:RefreshListByIndex(ActiveTitleList and #ActiveTitleList or 0)
  138. end
  139. end
  140. function UIRoleMessageView:GetTitleItemByRowColumn(gridView, itemIndex, row, column)
  141. local item = nil
  142. item = gridView:NewListViewItem('TitleItem')
  143. local itemLua = CommonUtil.BindGridViewItem2Lua(self, 'TitleItem', item.gameObject)
  144. self.uiBase:AddToggleEventListener(itemLua.toggle, self, self.ChangeViewPage, itemIndex)
  145. local activeTitleData = ActiveTitleList[itemIndex + 1]
  146. local titlecfg = ManagerContainer.CfgMgr:GetDesignationCfgById(activeTitleData.titleId)
  147. CommonUtil.LoadIcon(self, titlecfg.ChatSource, function (sprite)
  148. itemLua.img.image.sprite = sprite
  149. end)
  150. self.uiBase:AddButtonUniqueEventListener(itemLua.img.button, self, self.SendChangeTitleMsg,itemIndex)
  151. return item
  152. end
  153. function UIRoleMessageView:SendChangeTitleMsg(button,params)
  154. local itemIndex = params[0]
  155. local titleData = ActiveTitleList[itemIndex + 1]
  156. isShowTitleScroll = false
  157. self.titleScroll:SetActive(isShowTitleScroll)
  158. if titleData.state == 3 then
  159. return
  160. end
  161. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_HEAD_OPERATE_REQ,{operateType = 2,headId = titleData.titleId})
  162. end
  163. function UIRoleMessageView:OnHide()
  164. for i = 1, 6 do
  165. roleViewSystems[i]:Dispose()
  166. end
  167. roleViewSystems = nil
  168. if petViewSystem then
  169. petViewSystem:Dispose()
  170. end
  171. petViewSystem = nil
  172. if previewSystem then
  173. previewSystem:Dispose()
  174. end
  175. previewSystem = nil
  176. end
  177. function UIRoleMessageView:OnShow(data)
  178. self.controller:SetData(data)
  179. self:Refresh()
  180. end
  181. function UIRoleMessageView:OnClose()
  182. self:DeleteGo(self._roleHeads);
  183. self:DeleteGo(self._roleDetailAttr);
  184. self:DeleteGo(self._roleBaseAttrs);
  185. self:DeleteGo(self._equipmentSlots);
  186. self:DeleteGo(self.petBaseAttrsList);
  187. self.baseView.loopVerticalScrollRect:ClearCells()
  188. self.petAddView.loopVerticalScrollRect:ClearCells()
  189. self:RemoveCurModel()
  190. if nil ~= self.SyncCbId then
  191. ManagerContainer.LuaActorAttributeMgr:ClearCb(self.SyncCbId)
  192. end
  193. self.petModel.uIEventTriggerListener.onClick = nil
  194. self.petModel.uIEventTriggerListener.onClick = nil
  195. self.leaderRoleModel.uIEventTriggerListener.onDrag = nil
  196. self.roleModel.uIEventTriggerListener.onDrag = nil
  197. for i = 1, 6 do
  198. roleViewSystems[i]:Dispose()
  199. end
  200. roleViewSystems = nil
  201. if petViewSystem then
  202. petViewSystem:Dispose()
  203. end
  204. petViewSystem = nil
  205. if previewSystem then
  206. previewSystem:Dispose()
  207. end
  208. previewSystem = nil
  209. _data = nil;
  210. end
  211. function UIRoleMessageView:OnDispose()
  212. self.titleScroll.loopGridView:Dispose()
  213. end
  214. --删除实例化出来的对象
  215. function UIRoleMessageView:DeleteGo(_table)
  216. if _table then
  217. for i = #_table, 1, -1 do
  218. --头像删除有bug,此处暂时用立即删除
  219. CommonUtil.DestroyGOImmediate(_table[i].go)
  220. end
  221. end
  222. end
  223. ----公共模块start----
  224. ---事件start
  225. function UIRoleMessageView:OnClickServerBtn()
  226. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIChangeServer)
  227. end
  228. function UIRoleMessageView:OnClickUserBtn()
  229. --if SDKMgr.Instance:CheckHasModul(SDKModulType.USERMANAGER) then
  230. -- SDKMgr.Instance:OpenModul(SDKModulType.USERMANAGER)
  231. --end
  232. SDKMgr.Instance:Logout()
  233. end
  234. --关闭按钮
  235. function UIRoleMessageView:OnBtnCloseClick()
  236. --关闭界面前删除实例化出来的预设物
  237. ManagerContainer.LuaUIMgr:ClosePage(Enum.UIPageName.UIRoleMessage);
  238. end
  239. --改名事件
  240. function UIRoleMessageView:OnChangeNameClick()
  241. local _isSelf = self.controller:GetData()._targetTag == 0;
  242. if _isSelf then
  243. local _openCreate = NickNameCtr:NeedOpenCreate();
  244. NickNameCtr:OpenNickNamePage(_openCreate);
  245. end
  246. end
  247. --改头像
  248. function UIRoleMessageView:OnChangeHeadClick()
  249. local _isSelf = self.controller:GetData()._targetTag == 0;
  250. if _isSelf then
  251. ManagerContainer.DataMgr.HeadProtraitData:SendGetHeadInfo();
  252. end
  253. end
  254. --改头像框
  255. function UIRoleMessageView:OnChangeHeadFrameClick()
  256. local _isSelf = self.controller:GetData()._targetTag == 0;
  257. if _isSelf then
  258. ManagerContainer.DataMgr.HeadFrameDataMgr:SendHeadFrameInfoReq();
  259. end
  260. end
  261. function UIRoleMessageView:OnPageRedpointNtf(pageId,state)
  262. local _isSelf = self.controller:GetData()._targetTag == 0
  263. if pageId == self.uiBase.PageId then
  264. self:SetRPState(_isSelf and state)
  265. elseif not _isSelf then
  266. self:SetRPState(false)
  267. end
  268. end
  269. function UIRoleMessageView:RefreshTotalFightPower()
  270. --如果是自己的话 会有延迟更新战力 需要刷新最新战力
  271. local _isSelf = self.controller:GetData()._targetTag == 0
  272. if _isSelf then
  273. local totalPower = ManagerContainer.DataMgr.UserData:GetTotalFightPower()
  274. self.powerText.text.text = tostring(totalPower) --总战力
  275. end
  276. end
  277. function UIRoleMessageView:SetRPState(vis)
  278. local rpTrans = self.headItem.transform:Find("redPoint31")
  279. if rpTrans ~= nil then
  280. rpTrans.gameObject:SetActive(vis)
  281. end
  282. end
  283. --toggle事件
  284. function UIRoleMessageView:OnAttrOrSkillChangeToggleClick(_params)
  285. --if _params == self._ASChangeToggleIndexCur then return; end
  286. --self._ASChangeToggleIndexCur = _params;
  287. lastIndex = nil
  288. self.attributeRoot.gameObject:SetActive(_params == 1);
  289. self.skillRoot.gameObject:SetActive(_params == 2);
  290. self.petRoot.gameObject:SetActive(_params == 3);
  291. self.noPet:SetActive(_params == 3)
  292. if _params then
  293. if _params == 1 then --属性
  294. if curIndex == 1 then
  295. self:RefreshLeaderModel()
  296. else
  297. self:RefreshPartnerModel()
  298. end
  299. self:SetAttributeState(true);
  300. elseif _params == 2 then --技能
  301. self:SetAttributeState(false);
  302. elseif _params == 3 then --宠物
  303. self:RefreshPetInfo()
  304. end
  305. end
  306. end
  307. --Toggle事件
  308. function UIRoleMessageView:OnPageToggleClick(_toggle, _params, _value)
  309. if _params == self._toggleIndexCur then
  310. return;
  311. else
  312. self._toggleIndexCur = _params;
  313. end
  314. if not _toggle.isOn then return; end
  315. if _params then self:OpenPageByTab(_params); end
  316. end
  317. --toggle添加事件
  318. function UIRoleMessageView:ToggleAddListener()
  319. self.uiBase:AddToggleEventListener(self.playerMessage.toggle, self, self.OnPageToggleClick, 1);
  320. self.uiBase:AddToggleEventListener(self.roleMessage.toggle, self, self.OnPageToggleClick, 2);
  321. --self.uiBase:AddToggleEventListener(self.attributeToggle.toggle, self, self.OnAttrOrSkillChangeToggleClick, 1);
  322. --self.uiBase:AddToggleEventListener(self.skillToggle.toggle, self, self.OnAttrOrSkillChangeToggleClick, 2);
  323. end
  324. --bottom的button添加事件
  325. function UIRoleMessageView:BottomButtonAddListener(_isSelf)
  326. if _isSelf then --如果点开的是我自己的页面
  327. if Constant.OpenPay and not PlatformPack.SpecialFuncShield then
  328. self.giftButton:SetActive(true)
  329. else
  330. self.giftButton:SetActive(false)
  331. end
  332. self.uiBase:AddButtonEventListener(self.giftButton.button, self, self.OnGiftClick)
  333. -- self.uiBase:AddButtonEventListener(self.giftButton.button, function() ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("功能尚未开放,敬请期待!"); end);
  334. self.uiBase:AddButtonEventListener(self.bindButton.button, function() ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("功能尚未开放,敬请期待!"); end);
  335. self.uiBase:AddButtonEventListener(self.settingButton.button, function()
  336. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UISettings); --打开设置界面
  337. end);
  338. else --点开的是别人的页面
  339. local _originalData = self.controller._userData
  340. local _uid = _originalData.uid
  341. local _nickName = _originalData.nickName;
  342. local _headIcon = _data._headIconId;
  343. local jobId = _originalData.jobId
  344. local level = _originalData.level
  345. local sex = _originalData.gender
  346. self.uiBase:AddButtonEventListener(self.talkButton.button, function()
  347. ManagerContainer.LuaUIMgr:PrivateChatOtherPlayer(_uid, _nickName, _headIcon, jobId, level,sex); --打开私聊界面
  348. end);
  349. local _isBlack, _ = self:JudgeIsBlack();
  350. self:SetBlackButtonName(_isBlack);
  351. self.uiBase:AddButtonEventListener(self.shieldButton.button, self, self.OnBlackBtnClick); --改头像
  352. local _isFriend, _ = self:JudgeIsFriend();
  353. self:SetFriendButtonName(_isFriend);
  354. self.uiBase:AddButtonEventListener(self.makeFriendButton.button, self, self.OnMakeFriendBtnClick); --改头像
  355. end
  356. end
  357. ---事件end
  358. ---初始化start
  359. --游戏中一些数值对象
  360. function UIRoleMessageView:CreateValues()
  361. self._toggleIndexCur = 0; --初始的被选中的toggle的index
  362. end
  363. --游戏中用到的对象的table
  364. function UIRoleMessageView:CreateTargetTables()
  365. self._pageTable = {};
  366. table.insert(self._pageTable, self.playerPage);
  367. table.insert(self._pageTable, self.rolePage);
  368. table.insert(self._pageTable, self.petPage);
  369. end
  370. ---初始化end
  371. ---对象显示控制start
  372. --页签控制页面开启关闭
  373. function UIRoleMessageView:OpenPageByTab(_tabIndex)
  374. for i = 1, #self._pageTable do
  375. self._pageTable[i]:SetActive(i == _tabIndex);
  376. end
  377. if _tabIndex == 1 then --展示玩家信息界面
  378. self:ShowPlayerData();
  379. elseif _tabIndex == 2 then --展示角色信息界面
  380. self:ShowRoleData();
  381. end
  382. end
  383. --控制改名按钮的显示
  384. function UIRoleMessageView:SetChangeNameButton(_isSelf)
  385. self.changeNameButton.gameObject:SetActive(_isSelf);
  386. end
  387. --控制底部按钮的显示
  388. function UIRoleMessageView:SetBottomButtons(_isSelf)
  389. self.selfButtons:SetActive(_isSelf);
  390. local isCross = self.controller:IsCrossRole()
  391. self.friendButtons:SetActive(not isCross and not _isSelf);
  392. ManagerContainer.LuaUIMgr:ClearIsAcrossRoleState()
  393. end
  394. ---对象显示控制end
  395. ---数据填充start
  396. --刷新角色
  397. function UIRoleMessageView:RefreshRoleView(roleId, viewData, extGoesShowData)
  398. roleViewSystems[1]:RefreshView(Enum.RoleInEnvType.RoleMainView, roleId, viewData, extGoesShowData, self, self.LoadModelCB)
  399. end
  400. --load 模型
  401. function UIRoleMessageView:LoadModelCB(model)
  402. curModel = model
  403. if previewSystem then
  404. previewSystem:UpdateGo(model)
  405. end
  406. curModel:SetActive(true)
  407. if petViewSystem then
  408. petViewSystem:RolePlayAni(curModel, "s_click")
  409. end
  410. end
  411. --创建previewSystem,同时也隐藏了之前已经load过的模型
  412. function UIRoleMessageView:CreatePreviewSystem()
  413. if not previewSystem then
  414. previewSystem = PreviewSystem:new()
  415. end
  416. previewSystem:SetView(Vector3(-0.116, 1.649, 2.5), Quaternion.Euler(12.174, -182.628, 0.085))
  417. self:RemoveCurModel()
  418. end
  419. function UIRoleMessageView:RemoveCurModel()
  420. if curModel ~= nil then
  421. curModel:SetActive(false)
  422. previewSystem:RemoveGo(curModel)
  423. for i = 1, 6 do
  424. roleViewSystems[i]:Recycle()
  425. end
  426. curModel = nil
  427. end
  428. end
  429. --填充RawImage
  430. function UIRoleMessageView:SetRawImage(_RawImage)
  431. _RawImage.texture = previewSystem:GetRenderTexture()
  432. end
  433. --显示角色
  434. function UIRoleMessageView:ShowRole(_roleId, _viewData, _rawImage)
  435. self:RefreshRoleView(_roleId, _viewData);
  436. self:SetRawImage(_rawImage);
  437. end
  438. ---数据填充end
  439. ----公共模块end----
  440. ----玩家页面start----
  441. ---事件start
  442. --添加事件
  443. function UIRoleMessageView:AddPlayerPageUIEventListener()
  444. --self.uiBase:AddButtonEventListener(self.head.button, self, self.OnChangeHeadClick); --改头像
  445. self.uiBase:AddButtonEventListener(self.changeNameButton.button, self, self.OnChangeNameClick); --改名
  446. end
  447. --添加Model的拖拽事件
  448. function UIRoleMessageView:DragModel()
  449. --一次性把player界面和role界面model的拖拽都设置了吧,反正也不耗
  450. self.leaderRoleModel.uIEventTriggerListener.onDrag = nil;
  451. self.leaderRoleModel.uIEventTriggerListener.onDrag = function()
  452. local deltaX = self.leaderRoleModel.uIEventTriggerListener.currentEventData.delta.x
  453. if curModel then
  454. curModel.transform:Rotate(Vector3.New(0, deltaX > 0 and -7 or 7, 0))
  455. end
  456. end
  457. self.roleModel.uIEventTriggerListener.onDrag = nil;
  458. self.roleModel.uIEventTriggerListener.onDrag = function()
  459. local deltaX = self.roleModel.uIEventTriggerListener.currentEventData.delta.x
  460. if curModel then
  461. curModel.transform:Rotate(Vector3.New(0, deltaX > 0 and -7 or 7, 0))
  462. end
  463. end
  464. self.petModel.uIEventTriggerListener.onDrag = nil
  465. self.petModel.uIEventTriggerListener.onDrag = function()
  466. if curModel then
  467. local deltaX = self.petModel.uIEventTriggerListener.currentEventData.delta.x
  468. curModel.transform:Rotate(Vector3.New(0, deltaX > 0 and -7 or 7, 0))
  469. end
  470. end
  471. self.petModel.uIEventTriggerListener.onClick = nil
  472. self.petModel.uIEventTriggerListener.onClick = function()
  473. if petViewSystem then
  474. petViewSystem:RolePlayAni(curModel, "s_click")
  475. end
  476. end
  477. end
  478. ---事件end
  479. ---数据填充start
  480. --填充玩家的数据到UI
  481. function UIRoleMessageView:ShowPlayerData()
  482. _data = self.controller:GetData()._tidyData._playerData;
  483. self:SetPlayerTopMessage(); --设置顶部信息
  484. self:SetPlayerModel(_data._roleId, _data._viewData, _data._extGoesShowData, self.leaderRoleModel.rawImage); --设置model展示信息
  485. end
  486. --改变了头像,这个只有玩家打开的是自己的信息界面的时候才会调用到,因为只有玩家自己才能改变自己的头像
  487. function UIRoleMessageView:OnChangeHeadEvent()
  488. _data._headIcon = ManagerContainer.DataMgr.UserData:GetUserHeadIcon(); --头像图片
  489. self:RefreshHeadIcon();
  490. end
  491. --获得了排名信息
  492. function UIRoleMessageView:AfterRefreshDanScore()
  493. self:SetDunMessage(ManagerContainer.DataMgr.ArenaData:GetCurDanScore());
  494. end
  495. --刷新了赛季信息
  496. function UIRoleMessageView:AfterRefreshSeason()
  497. local _titleName, _titleIcon, _competitionTitleIcon = ManagerContainer.DataMgr.CompetitionData:GetCurSeasonTitle(); --称号;
  498. self.controller:RefreshTitleIconAndName(_competitionTitleIcon, _titleName);
  499. self:SetTitle(_competitionTitleIcon, _titleName); --称号
  500. end
  501. --更改了头像框
  502. function UIRoleMessageView:ChangeHeadFrame(headFrameIcon)
  503. CommonUtil.LoadIcon(self, headFrameIcon, function (sprite)
  504. self.headItem.frame.image.sprite = sprite
  505. end)
  506. end
  507. function UIRoleMessageView:ChangeTitle()
  508. local _isSelf = self.controller:GetData()._targetTag == 0;
  509. local titleId
  510. if _isSelf then
  511. titleId = ManagerContainer.DataMgr.TitleData:GetCurrWearerTitleId()
  512. else
  513. titleId = self.controller:GetData()._tidyData._titleId
  514. end
  515. local titleCfg = ManagerContainer.CfgMgr:GetDesignationCfgById(titleId)
  516. if not titleCfg then
  517. self.titleName:SetActive(true)
  518. self.titleImg:SetActive(false)
  519. else
  520. self.titleName:SetActive(false)
  521. self.titleImg:SetActive(true)
  522. CommonUtil.LoadIcon(self, titleCfg.ChatSource, function (sprite)
  523. self.titleImg.image.sprite = sprite
  524. end)
  525. end
  526. end
  527. --开启头像设置界面
  528. function UIRoleMessageView:OnHeadDataEvent()
  529. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIChangeHead); --开启改名界面
  530. end
  531. --设置头像
  532. function UIRoleMessageView:RefreshHeadIcon()
  533. if _data._headIcon ~= nil then
  534. --设置头像
  535. CommonUtil.LoadIcon(self, _data._headIcon, function(sprite)
  536. self.headItem.head.image.sprite = sprite
  537. end, self, 'headPortraitIconIdx')
  538. else
  539. self.headItem.head.image.sprite = nil
  540. end
  541. end
  542. --刷新头像
  543. function UIRoleMessageView:RefreshHead()
  544. local _jobIcon = ManagerContainer.CfgMgr:GetJobDataById(_data._jobId).JobIcon;
  545. local _fakerData = {Level = _data._baseLevel, ProfessionIcon = _jobIcon, HeadIcon = _data._headIcon, IsHero = true};
  546. CommonUtil.SetPlayerHeadAndFrame(self, self.headItem, _fakerData, false, _data._headFrameId, self, self.OnChangeHeadFrameClick);
  547. local _isSelf = self.controller:GetData()._targetTag == 0
  548. if not _isSelf then
  549. self:SetRPState(false)
  550. end
  551. end
  552. --设置顶部数据显示
  553. function UIRoleMessageView:SetPlayerTopMessage()
  554. self:RefreshHead();
  555. --[[
  556. self:RefreshHeadIcon();
  557. --设置job
  558. local _jobCfgId = _data._jobId;
  559. local _jobCfgData = ManagerContainer.CfgMgr:GetJobDataById(_jobCfgId);
  560. CommonUtil.LoadIcon(self, _jobCfgData.JobIcon, function (sprite)
  561. self.head.icon.image.sprite = sprite
  562. end, self, 'jobIconIdx');
  563. ]]--
  564. self:SetPlayerName(_data._nickName); --设置昵称
  565. self:SetPlayerVIp(_data._vipLv) --刷新vipicon
  566. --self.expBarBase.textLv.text.text = "LV" .. tostring(_data._baseLevel); --base等级
  567. --self.expBarJob.textLv.text.text = "LV" .. tostring(_data._jobLevel); --job等级
  568. self:SetTitle(_data._titleIcon, _data._titleName); --称号
  569. self.powerText.text.text = tostring(_data._totalPower) --总战力
  570. self:SetAllianceMessage("", _data._allianceName); --TODO:等待工会实现之后接入
  571. self:SetDunMessage(_data._dun);
  572. end
  573. --设置玩家的名字
  574. function UIRoleMessageView:SetPlayerName(_name)
  575. _data._nickName = _name
  576. self.playerNameText.text.text = _name; --设置昵称
  577. end
  578. --设置玩家的VIP等级
  579. function UIRoleMessageView:SetPlayerVIp(vipLv)
  580. self.vipIcon.image.enabled = false
  581. self.vipIcon.image.sprite = nil
  582. if vipLv and vipLv >= 0 then
  583. local vipCfg = ManagerContainer.CfgMgr:GetVipCfgById(vipLv)
  584. if vipCfg then
  585. CommonUtil.LoadIcon(self, vipCfg.SmallIcon, function(sprite)
  586. if sprite then
  587. self.vipIcon.image.sprite = sprite
  588. self.vipIcon.image.enabled = true
  589. end
  590. end)
  591. end
  592. end
  593. end
  594. --设置称号
  595. function UIRoleMessageView:SetTitle(_icon, _name)
  596. if _icon then
  597. self.titleIcon.gameObject:SetActive(true);
  598. CommonUtil.LoadIcon(self, _icon, function (sprite)
  599. self.titleIcon.image.sprite = sprite
  600. end); --设置图片
  601. else
  602. self.titleIcon.gameObject:SetActive(false);
  603. end
  604. self.titleName.text.text = _name;
  605. end
  606. --设置工会信息
  607. function UIRoleMessageView:SetAllianceMessage(_icon, _name)
  608. --TODO:设置工会图片
  609. self.allianceName.text.text = _name; --工会名称
  610. end
  611. --设置段位信息
  612. function UIRoleMessageView:SetDunMessage(_dunScore)
  613. local levelCfg, nextKey = CommonUtil.GetCurDunData(_dunScore);
  614. CommonUtil.LoadIcon(self, levelCfg.LevelIcon, function (sprite)
  615. self.gradeIcon.image.sprite = sprite
  616. end); --设置图片
  617. self.gradeName.text.text = levelCfg.ArenaLevelName; --设置段位名称
  618. end
  619. --设置Model
  620. function UIRoleMessageView:SetPlayerModel(_roleId, _viewData, _extGoesShowData, _rawImage)
  621. self.controller:SetCurPartnerUid(1);
  622. self:CreatePreviewSystem();
  623. self:RefreshRoleView(_roleId, _viewData, _extGoesShowData);
  624. self:SetRawImage(_rawImage);
  625. end
  626. function UIRoleMessageView:SetPartnerModel(id, partnerCfgId, viewData, extGoesShowData)
  627. if partnerCfgId == nil then return nil end
  628. return roleViewSystems[id]:RefreshView(Enum.RoleInEnvType.RoleMainView, partnerCfgId, viewData, extGoesShowData, self, self.LoadModelCB)
  629. end
  630. --更改Model
  631. function UIRoleMessageView:ChangeModel(_id, _roleId, _viewData, _extGoesShowData, _rawImage)
  632. self.controller:SetCurPartnerUid(_id);
  633. if _id == 1 then
  634. self:SetPlayerModel(_roleId, _viewData, _extGoesShowData, _rawImage)
  635. else
  636. self:CreatePreviewSystem();
  637. partnerId = _roleId
  638. self:SetPartnerModel(_id, partnerId, _viewData, _extGoesShowData)
  639. end
  640. end
  641. ---数据填充end
  642. ----玩家页面end----
  643. ----角色页面start----
  644. ---创建常用值start
  645. function UIRoleMessageView:CreateEquipSlotNames()
  646. self._equipmentSlotName = {};
  647. table.insert(self._equipmentSlotName, "FrameNew/ic_equip_hat"); --帽子
  648. table.insert(self._equipmentSlotName, "FrameNew/ic_equip_clothing"); --衣服
  649. table.insert(self._equipmentSlotName, "FrameNew/ic_equip_weapon"); --武器
  650. table.insert(self._equipmentSlotName, "FrameNew/ic_equip_scarf"); --披肩
  651. table.insert(self._equipmentSlotName, "FrameNew/ic_equip_shoes"); --鞋子
  652. table.insert(self._equipmentSlotName, "FrameNew/ic_equip_ring"); --饰品
  653. end
  654. ---创建常用值end
  655. ---事件start
  656. --role界面中的属性界面,点击后开启详细属性
  657. function UIRoleMessageView:OnGoToDetailClick()
  658. self:SetAttributeState(false);
  659. end
  660. --role界面中的属性界面,点击后开启基础属性
  661. function UIRoleMessageView:OnGoToBaseClick()
  662. self:SetAttributeState(true);
  663. end
  664. --判断是否在黑名单中
  665. function UIRoleMessageView:JudgeIsBlack()
  666. local _originalData = self.controller._userData
  667. local _uid = _originalData.uid;
  668. local _isBlack = ManagerContainer.DataMgr.FriendDataMgr:IsBlackPlayer(_uid);
  669. return _isBlack, _uid;
  670. end
  671. --点击屏蔽按钮
  672. function UIRoleMessageView:OnBlackBtnClick()
  673. local _isBlack, _uid = self:JudgeIsBlack();
  674. if _isBlack then
  675. ManagerContainer.DataMgr.FriendDataMgr:RemoveBlackReq(_uid);
  676. else
  677. ManagerContainer.DataMgr.FriendDataMgr:AddBlackReq(_uid);
  678. end
  679. self:SetBlackButtonName(not _isBlack);
  680. end
  681. --判断是否是好友
  682. function UIRoleMessageView:JudgeIsFriend()
  683. local _originalData = self.controller._userData
  684. local _uid = _originalData.uid;
  685. local _isFriend = ManagerContainer.DataMgr.FriendDataMgr:HasInterestPlayer(_uid);
  686. return _isFriend, _uid;
  687. end
  688. --点击交友按钮
  689. function UIRoleMessageView:OnMakeFriendBtnClick()
  690. local _isFriend, _uid = self:JudgeIsFriend();
  691. if _isFriend then --是好友再点就是要删除了
  692. ManagerContainer.DataMgr.FriendDataMgr:DeleteFriendReq(_uid);
  693. else
  694. ManagerContainer.DataMgr.FriendDataMgr:AddFriendReq(_uid);
  695. end
  696. self:SetFriendButtonName(not _isFriend);
  697. end
  698. ---事件end
  699. ---填充对象start
  700. --填充角色界面的信息
  701. function UIRoleMessageView:ShowRoleData()
  702. _data = self.controller:GetData()._tidyData._roleData;
  703. lastIndex = nil
  704. self:SetAttributeState(true);
  705. --self:SetShowAttrOrSkill();
  706. self:CreateRoleHead();
  707. self:CreateBaseAttributesItem();
  708. self:CreateDetailAttributeItem();
  709. self:CreateEquipSlots();
  710. self:CreateSkillSlots();
  711. --开始填充
  712. self:SetHeads();
  713. --默认选中属性toggle
  714. self.attributeToggle.toggle.isOn = true;
  715. self:OnAttrOrSkillChangeToggleClick(1);
  716. end
  717. function UIRoleMessageView:OnLeaderHeadClick()
  718. if 1 == lastIndex then return end
  719. curIndex = 1
  720. lastIndex = curIndex
  721. local _leaderData = self.controller:GetLeaderHeadData();
  722. -- self:ChangeModel(1, _leaderData._roleId, _leaderData._viewData, _leaderData._extGoesShowData, self.roleModel.rawImage);
  723. local totalPower = tonumber(_leaderData.petFightPower) + tonumber(_leaderData._power)
  724. --LogError("_leaderData.petFightPower"..tostring(_leaderData.petFightPower))
  725. --LogError("_leaderData._power"..tostring(_leaderData._power))
  726. self:SetRoleNameAndPower(_leaderData._name, _leaderData._jobICon, tostring(totalPower));
  727. self:SetRoleBaseAttr(_leaderData._baseAttr);
  728. self:SetAddAttrList(_leaderData.addList);
  729. self:SetRoleDetailAttr(_leaderData._detailAttr);
  730. self:SetRoleEquSlot(_leaderData._slots, _leaderData._jobData, 1,1, _leaderData._jobCfgId,_leaderData._name);
  731. self:SetRoleSkillSlot(_leaderData._skills);
  732. self:OnAttrOrSkillChangeToggleClick(pageToggleData.toggleDefaultIndex);
  733. self:CloseAllCheckMark();
  734. self._roleHeads[1].lua.checkMark.gameObject:SetActive(true);
  735. self:RefreshCardSuitBtn()
  736. self:RefreshSkillEquip()
  737. end
  738. function UIRoleMessageView:RefreshLeaderModel()
  739. local _leaderData = self.controller:GetLeaderHeadData();
  740. self:ChangeModel(1, _leaderData._roleId, _leaderData._viewData, _leaderData._extGoesShowData, self.roleModel.rawImage);
  741. end
  742. function UIRoleMessageView:OnPartnerHeadClick(button, params)
  743. local sortIndex = params[0];
  744. self:OnPartnerHeadClick1(sortIndex)
  745. end
  746. function UIRoleMessageView:OnPartnerHeadClick1(sortIndex)
  747. if sortIndex + 1 == lastIndex then return end
  748. curIndex = sortIndex + 1
  749. lastIndex = curIndex
  750. local _partnerData = self.controller:GetPartnerData(curIndex);
  751. -- self:ChangeModel(curIndex, _partnerData._configId, nil, _partnerData._extGoesShowData);
  752. local totalPower = tonumber(_partnerData.petFightPower) + tonumber(_partnerData._power)
  753. local _isSelf = self.controller:GetData()._targetTag == 0;
  754. if _isSelf then --自己 战力获取
  755. local Power = ManagerContainer.DataMgr.UserData:GetAsideFighterSvrPower(_partnerData.id,false)
  756. --LogError(tostring(Power))
  757. if nil ~= Power and -1 ~= Power then
  758. local PetPower = ManagerContainer.DataMgr.UserData:GetAsideFighterSvrPower(_partnerData.battlePetId,true)
  759. if nil ~= PetPower and -1 ~= PetPower then
  760. totalPower = Power + PetPower
  761. end
  762. end
  763. end
  764. self:SetRoleNameAndPower(_partnerData._name, _partnerData._jobICon,tostring(totalPower) );
  765. self:SetRoleBaseAttr(_partnerData._baseAttr);
  766. self:SetAddAttrList(_partnerData.addList);
  767. self:SetRoleDetailAttr(_partnerData._detailAttr);
  768. self:SetRoleEquSlot(_partnerData._slots, _partnerData._jobData, curIndex, _partnerData._id, _partnerData._jobCfgId);
  769. self:SetRoleSkillSlot(_partnerData._skills);
  770. self:OnAttrOrSkillChangeToggleClick(pageToggleData.toggleDefaultIndex);
  771. self:CloseAllCheckMark();
  772. self._roleHeads[curIndex].lua.checkMark.gameObject:SetActive(true);
  773. self:RefreshCardSuitBtn()
  774. self:RefreshSkillEquip()
  775. end
  776. function UIRoleMessageView:RefreshPartnerModel()
  777. local _partnerData = self.controller:GetPartnerData(curIndex);
  778. self:ChangeModel(curIndex, _partnerData._configId, nil, _partnerData._extGoesShowData);
  779. end
  780. --填充头像
  781. function UIRoleMessageView:SetHeads()
  782. --填充主角
  783. local _leaderData = self.controller:GetLeaderHeadData();
  784. --local _onLeaderHeadClick = function ()
  785. -- self:ChangeModel(1, _leaderData._roleId, _leaderData._viewData, self.roleModel.rawImage);
  786. -- self:SetRoleNameAndPower(_leaderData._name, _leaderData._jobICon, _leaderData._power);
  787. -- self:SetRoleBaseAttr(_leaderData._baseAttr);
  788. -- self:SetAddAttrList(_leaderData.addList);
  789. -- self:SetRoleDetailAttr(_leaderData._detailAttr);
  790. -- self:SetRoleEquSlot(_leaderData._slots, _leaderData._jobData, 1,1, _leaderData._jobCfgId,_leaderData._name);
  791. -- self:SetRoleSkillSlot(_leaderData._skills);
  792. -- self:CloseAllCheckMark();
  793. -- self._roleHeads[1].lua.checkMark.gameObject:SetActive(true);
  794. --end
  795. self:SetSingleHead(1, _leaderData, self.OnLeaderHeadClick);
  796. --填充队友
  797. for i = 1, #_data._sortPartner do --排序后的队友是从1开始的,但是真正的顺序应该是leader是1,队友的第一个的index是2
  798. local _logicIndex = i + 1;
  799. local _partnerData = self.controller:GetPartnerData(_logicIndex);
  800. --local _onPartnerHeadClick = function ()
  801. -- self:ChangeModel(_logicIndex, _partnerData._configId, _partnerData._strengthLevel);
  802. -- self:SetRoleNameAndPower(_partnerData._name, _partnerData._jobICon, _partnerData._power);
  803. -- self:SetRoleBaseAttr(_partnerData._baseAttr);
  804. -- self:SetAddAttrList(_partnerData.addList);
  805. -- self:SetRoleDetailAttr(_partnerData._detailAttr);
  806. -- self:SetRoleEquSlot(_partnerData._slots, _partnerData._jobData, i + 1, _partnerData._id, _partnerData._jobCfgId);
  807. -- self:SetRoleSkillSlot(_partnerData._skills);
  808. -- self:CloseAllCheckMark();
  809. -- self._roleHeads[_logicIndex].lua.checkMark.gameObject:SetActive(true);
  810. --end
  811. self:SetSingleHead(_logicIndex, _partnerData, self.OnPartnerHeadClick);
  812. end
  813. self:OnLeaderHeadClick(); --默认选择主角
  814. end
  815. --关闭所有的选中框
  816. function UIRoleMessageView:CloseAllCheckMark()
  817. for _, _v in ipairs(self._roleHeads) do
  818. _v.lua.checkMark.gameObject:SetActive(false);
  819. end
  820. end
  821. --设置单个头像
  822. function UIRoleMessageView:SetSingleHead(_index, _data, _clickCB)
  823. local _go = self._roleHeads[_index].go;
  824. _go:SetActive(_data._get);
  825. if _data._get then
  826. local _lua = self._roleHeads[_index].lua;
  827. _data._iconItemData = {cfgId = _data._configId, num = _data._baseLevel, strengthLevel = _data._strengthLevel, headFrameId = _data._headFrameId, isLeader = _index ==1, leaderIcon = _data._headIcon}
  828. RoleMessageHeadCtr:SetData(self, _lua, _data, self, _clickCB);
  829. end
  830. end
  831. --设置role界面的玩家名字和战力
  832. function UIRoleMessageView:SetRoleNameAndPower(_name, _jobIcon, _power)
  833. CommonUtil.LoadIcon(self, _jobIcon, function(sprite)
  834. self.jobIcon.image.sprite = sprite
  835. end);
  836. self.roleNameText.text.text = _name;
  837. self.fightPower.text.text = _power;
  838. end
  839. --设置role界面的base attribute
  840. function UIRoleMessageView:SetRoleBaseAttr(_baseAttrs)
  841. for i = 1, #_baseAttrs do
  842. if not self._roleBaseAttrs[i].go.gameObject.activeSelf then self._roleBaseAttrs[i].go.gameObject:SetActive(true); end
  843. self._roleBaseAttrs[i].name.text = I18N.SetLanguageValue(CommonUtil.HeroAttrFormatName(_baseAttrs[i].key));
  844. self._roleBaseAttrs[i].value.text = tostring(_baseAttrs[i].value);
  845. end
  846. end
  847. --设置role界面的detail attribute
  848. function UIRoleMessageView:SetRoleDetailAttr(_detailAttrs)
  849. for i = 1, #_detailAttrs do
  850. if not self._roleDetailAttr[i].go.gameObject.activeSelf then self._roleDetailAttr[i].go.gameObject:SetActive(true); end
  851. self._roleDetailAttr[i].name.text = I18N.SetLanguageValue(CommonUtil.HeroAttrFormatName(_detailAttrs[i].key));
  852. self._roleDetailAttr[i].value.text = "+" .. tostring(_detailAttrs[i].value)
  853. end
  854. end
  855. --设置附加属性
  856. function UIRoleMessageView:SetAddAttrList(_addAttrs)
  857. local _content = self.addSView.gameObject.transform;
  858. --清除所有的item对象
  859. for i = _content.childCount - 1, 1, -1 do
  860. local _child = _content:GetChild(i);
  861. CommonUtil.DestroyGOImmediate(_child.gameObject);
  862. end
  863. for _k, _v in pairs(_addAttrs) do
  864. local _go = CommonUtil.Instantiate(self.specialItem.gameObject, _content)
  865. local _text = _go.transform:Find("Text").gameObject:GetComponent(Enum.TypeInfo.Text);
  866. local attrId = _v[1]
  867. local attrValue = attrId >= Enum.HeroAttrType.RealHurt and CommonUtil.GetPreciseDecimalFloor(_v[2], 2) or math.floor(_v[2])
  868. local addVal = attrId >= Enum.HeroAttrType.RealHurt and CommonUtil.GetPreciseDecimalFloor(_v[3], 2) or math.floor(_v[3])
  869. if attrValue == 0 then
  870. attrValue = 0.01
  871. end
  872. local _language = "Attr_" .. tostring(attrId)
  873. local _languageText = I18N.T(_language)
  874. _text.text = _languageText .. CommonUtil.HeroAttrFormatValue(attrId, attrValue, true)
  875. if addVal > 0 then
  876. _text.text = _languageText .. CommonUtil.HeroAttrFormatValue(attrId, addVal, true)
  877. end
  878. _go.gameObject:SetActive(true);
  879. end
  880. end
  881. --设置role界面的装备槽位,_slotIndex是角色的index,主角是1,然后队友按照排序后的顺序,依次是2/3/4/5/6
  882. function UIRoleMessageView:SetRoleEquSlot(_slotDatas, _jobData, _slotIndex, _id, _jobConfigId,_name)
  883. for i = 1, 6 do
  884. local _index = i;
  885. local _data = nil;
  886. if _slotDatas[i] then
  887. _data = _slotDatas[i];
  888. _data._jobData = _jobData;
  889. end
  890. local _target = self._equipmentSlots[_index];
  891. EquipmentShowSlotItemCtr:SetData(self, _target.lua, _data, _index, _slotDatas, _slotIndex, _id, _jobConfigId,_name)
  892. end
  893. end
  894. --设置没有技能的时候的技能槽位的表现
  895. function UIRoleMessageView:SetNoSkillSlot(_lua)
  896. _lua.locked.gameObject:SetActive(false);
  897. _lua.noSkill.gameObject:SetActive(true);
  898. _lua.skillListItem.gameObject:SetActive(false);
  899. end
  900. --设置技能
  901. function UIRoleMessageView:SetRoleSkillSlot(_slotData)
  902. if not _slotData then
  903. for i = 1, 4 do
  904. self:SetNoSkillSlot(self._skillSlots[i].lua);
  905. end
  906. return;
  907. end
  908. for i = 1, #_slotData.slotSkills do
  909. local _skillId = _slotData.slotSkills[i].skillId;
  910. local _target = self._skillSlots[i];
  911. if _skillId and _skillId > 0 then
  912. _target.lua.locked.gameObject:SetActive(false);
  913. _target.lua.noSkill.gameObject:SetActive(false);
  914. _target.lua.skillListItem.gameObject:SetActive(true);
  915. local _level = _slotData.unlockSkillMap[_skillId].skillLv;
  916. local _realSkillId = _skillId * 1000 + _level;
  917. local _cfgData = ManagerContainer.CfgMgr:GetSkillCfgById(_skillId);
  918. if not _cfgData then LogError("Custom error by hudp: Can't find skill cfgData by id :" .. tostring(_realSkillId)); end
  919. CommonUtil.LoadIcon(self, _cfgData.Icon, function (sprite)
  920. _target.lua.skillItem.icon.image.sprite = sprite
  921. end);
  922. local _lvText = "Lv." .. tostring(_level);
  923. _target.lua.skillItem.num.text.text = _lvText;
  924. _target.lua.textLV.text.text = _lvText;
  925. _target.lua.skillName.text.text = string.formatbykey(_cfgData.Name); --TODO:等待技能名字录入多语言表
  926. local _skillLvCfgData = ManagerContainer.CfgMgr:GetSkillLevelCfgById(_realSkillId);
  927. if _skillLvCfgData.DescParam then
  928. if type(_skillLvCfgData.DescParam) == 'table' then
  929. _target.lua.desTxt.text.text = string.formatbykey(_skillLvCfgData.Desc, unpack(_skillLvCfgData.DescParam))
  930. else
  931. _target.lua.desTxt.text.text = string.formatbykey(_skillLvCfgData.Desc, _skillLvCfgData.DescParam)
  932. end
  933. else
  934. _target.lua.desTxt.text.text = string.formatbykey(_skillLvCfgData.Desc)
  935. end
  936. local skillTreeCfgData
  937. if ManagerContainer.DataMgr.UserData:IsLeaderHero(curIndex) then
  938. skillTreeCfgData = ManagerContainer.CfgMgr:GetSkillTreeCfgById(_skillId)
  939. else
  940. skillTreeCfgData = ManagerContainer.CfgMgr:GetParterSkillTreeCfgById(_skillId)
  941. end
  942. local quality = skillTreeCfgData and skillTreeCfgData.SkillQuality or 0
  943. if quality ~= 0 then
  944. CommonUtil.LoadIcon(self, Constant.Quality_Frame_Icons[quality], function (sprite)
  945. _target.lua.skillItem.frame.image.sprite = sprite
  946. end)
  947. else
  948. CommonUtil.LoadIcon(self, "FrameNew/frame_item_gray", function (sprite)
  949. _target.lua.skillItem.frame.image.sprite = sprite
  950. end)
  951. end
  952. else
  953. self:SetNoSkillSlot(_target.lua);
  954. end
  955. end
  956. end
  957. --判断技能槽位的解锁信息
  958. function UIRoleMessageView:CheckSlotUnlock(slotId, slotLv, _isLeader, _leaderLv)
  959. local skillSlotCfgId = CommonUtil.GetSkillSlotCfgIdByIdxAndLv(slotId, slotLv)
  960. local skillSlotCfgData = ManagerContainer.CfgMgr:GetSkillSlotCfgById(skillSlotCfgId)
  961. if not skillSlotCfgData then
  962. return false
  963. end
  964. local condition
  965. if _isLeader then
  966. condition = skillSlotCfgData.Condition
  967. else
  968. condition = skillSlotCfgData.ParterCondition
  969. end
  970. if not condition then
  971. return true
  972. end
  973. local item = condition[1]
  974. if not item then
  975. return true
  976. end
  977. if type(item) == 'number' then
  978. if #condition >= 2 then
  979. condition = {condition}
  980. else
  981. return true
  982. end
  983. end
  984. for i = 1, #condition do
  985. local con = condition[i]
  986. local typeEnum = con[1]
  987. local val = con[2]
  988. if typeEnum == 1 or typeEnum == 4 then
  989. local userLevel = _leaderLv
  990. if val > userLevel then
  991. return false, 'TextSkillLocked', {val}
  992. end
  993. end
  994. if typeEnum == 2 then
  995. local jobStage = self.controller:GetJobStage()
  996. if val > jobStage then
  997. return false
  998. end
  999. end
  1000. end
  1001. return true
  1002. end
  1003. --当是别人的信息的时候,设置底部按钮的名字,_isFriend——是否是好友
  1004. function UIRoleMessageView:SetFriendButtonName(_isFriend)
  1005. local _friendBtnName = I18N.T("AddFriends"); --默认是关注
  1006. if _isFriend then
  1007. _friendBtnName = I18N.T("RemoveFriends"); --取关
  1008. end
  1009. self.makeFriendButton.text.text.text = _friendBtnName;
  1010. end
  1011. --当是别人的信息的时候,设置底部按钮的名字,_isBlack——是否是黑名单中的人
  1012. function UIRoleMessageView:SetBlackButtonName(_isBlack)
  1013. local _blackBtnName = I18N.T("AddBlackList"); --默认显示屏蔽
  1014. if _isBlack then
  1015. _blackBtnName = I18N.T("RemoveBlackList"); --恢复
  1016. end
  1017. self.shieldButton.text.text.text = _blackBtnName;
  1018. self.icon1:SetActive(not _isBlack)
  1019. self.icon2:SetActive(_isBlack)
  1020. end
  1021. ---填充对象end
  1022. ---控制对象start
  1023. --创建头像
  1024. function UIRoleMessageView:CreateRoleHead()
  1025. if self._roleHeads then return; end --创建过了
  1026. self._roleHeads = {}
  1027. self.roleMessageHeadOriginal.gameObject:SetActive(false); --隐藏素体
  1028. for i = 1, 6 do
  1029. local _go = CommonUtil.Instantiate(self.roleMessageHeadOriginal.gameObject, self.roleTopRoot.gameObject.transform);
  1030. local _lua = CommonUtil.BindGridViewItem2Lua(self, _roleHeadName, _go);
  1031. table.insert(self._roleHeads, {
  1032. ["go"] = _go,
  1033. ["lua"] = _lua,
  1034. })
  1035. end
  1036. end
  1037. --创建详细属性
  1038. function UIRoleMessageView:CreateDetailAttributeItem()
  1039. if self._roleDetailAttr then return; end
  1040. self._roleDetailAttr = {};
  1041. self.originalAttr.gameObject:SetActive(false);
  1042. for i = 1, 14 do
  1043. local _go = CommonUtil.Instantiate(self.originalAttr.gameObject, self.baseSView.transform);
  1044. local _nameText = _go.transform:Find("Text").gameObject:GetComponent("Text");
  1045. local _valueText = _go.transform:Find("Number").gameObject:GetComponent("Text");
  1046. table.insert(self._roleDetailAttr, {
  1047. ["go"] = _go;
  1048. ["name"] = _nameText,
  1049. ["value"] = _valueText,
  1050. })
  1051. end
  1052. end
  1053. --创建基础属性
  1054. function UIRoleMessageView:CreateBaseAttributesItem()
  1055. if self._roleBaseAttrs then return; end --创建过了
  1056. self._roleBaseAttrs = {};
  1057. self.originalAttribute.gameObject:SetActive(false); --隐藏素体
  1058. for i = 1, 10 do
  1059. local _go = CommonUtil.Instantiate(self.originalAttribute, self.attributes.gameObject.transform);
  1060. local _nameText = _go.transform:Find("AttributeNameText").gameObject:GetComponent("Text");
  1061. local _valueText = _go.transform:Find("AttributeValueText").gameObject:GetComponent("Text");
  1062. table.insert(self._roleBaseAttrs, {
  1063. ["go"] = _go;
  1064. ["name"] = _nameText,
  1065. ["value"] = _valueText,
  1066. })
  1067. end
  1068. end
  1069. --创建角色的装备栏
  1070. function UIRoleMessageView:CreateEquipSlots()
  1071. self:CreateEquipSlotNames();
  1072. if self._equipmentSlots then return; end
  1073. self._equipmentSlots = {};
  1074. self.equipmentShowSlotItem.gameObject:SetActive(false);
  1075. for i = 1, 7 do
  1076. local _parent = self["slot" .. tostring(i)].gameObject.transform;
  1077. local _go = CommonUtil.Instantiate(self.equipmentShowSlotItem.gameObject, _parent);
  1078. local _lua = CommonUtil.BindGridViewItem2Lua(self, _equipmentSlotName, _go);
  1079. if i < 7 then
  1080. CommonUtil.LoadIcon(self, self._equipmentSlotName[i], function (sprite)
  1081. _lua.position.image.sprite = sprite
  1082. end)
  1083. end
  1084. table.insert(self._equipmentSlots, {
  1085. ["go"] = _go,
  1086. ["lua"] = _lua,
  1087. });
  1088. _go.gameObject:SetActive(true);
  1089. end
  1090. end
  1091. --创建技能
  1092. function UIRoleMessageView:CreateSkillSlots()
  1093. if self._skillSlots then return; end
  1094. self._skillSlots = {};
  1095. for i = 1, 4 do
  1096. local _lua = self["skillSlot_" .. tostring(i)];
  1097. table.insert(self._skillSlots, {["lua"] = _lua,});
  1098. end
  1099. end
  1100. --控制属性显示详细界面还是基础界面
  1101. function UIRoleMessageView:SetAttributeState(_showBase)
  1102. self.baseAttRoot.gameObject:SetActive(_showBase);
  1103. self.detailAttRoot.gameObject:SetActive(not _showBase);
  1104. end
  1105. --控制希纳是属性还是显示技能
  1106. function UIRoleMessageView:SetShowAttrOrSkill(_showAttr)
  1107. self.attributeRoot.gameObject:SetActive(_showAttr);
  1108. self.skillRoot.gameObject:SetActive(not _showAttr);
  1109. if _showAttr then
  1110. self:SetAttributeState(true);
  1111. end
  1112. end
  1113. ---控制对象end
  1114. ----角色页面end----
  1115. function UIRoleMessageView:OnGiftClick()
  1116. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIExchangeCode)
  1117. end
  1118. ----宠物页面start----
  1119. function UIRoleMessageView:RefreshPetInfo()
  1120. local petData
  1121. local heroData
  1122. if curIndex == 1 then
  1123. --同时点击头像刷新角色属性
  1124. local herodata = self.controller:GetLeaderHeadData()
  1125. self:SetRoleBaseAttr(herodata._baseAttr)
  1126. petData = self.controller:GetPetDataByHeroId(1)
  1127. heroData = self.controller:GetLeaderHeadData()
  1128. else
  1129. local partnerdata = self.controller:GetPartnerData(curIndex)
  1130. self:SetRoleBaseAttr(partnerdata._baseAttr)
  1131. heroData = self.controller:GetPartnerData(curIndex);
  1132. petData = self.controller:GetPetDataByHeroId(heroData._id)
  1133. end
  1134. if not petData then
  1135. self.noPet:SetActive(true)
  1136. self.petRoot:SetActive(false)
  1137. return
  1138. else
  1139. self.noPet:SetActive(false)
  1140. self.petRoot:SetActive(true)
  1141. end
  1142. local power = self.controller:GetPetFightPowerByHeroId(heroData._id)
  1143. self.petfightPowerText.text.text = power == 0 and "-----" or tostring(power)
  1144. self:RefreshPetModel(petData)
  1145. self:RefreshPetTop(petData)
  1146. self:RefreshPetSkills(petData)
  1147. self:RefreshPetBaseAttrs(petData)
  1148. end
  1149. function UIRoleMessageView:RefreshPetModel(petData)
  1150. local petCfgData = ManagerContainer.CfgMgr:GetPetDataById(petData.cfgId)
  1151. local camPos = petCfgData.CamPos or {-0.116, 2.28, 3.89}
  1152. local camRot = petCfgData.CamRot or {12.174, 177.372, 0.085}
  1153. if not previewSystem then
  1154. previewSystem = PreviewSystem:new("RoleMessage", 1024, 1024)
  1155. end
  1156. previewSystem:SetView(Vector3(camPos[1], camPos[2], camPos[3]), Quaternion.Euler(camRot[1], camRot[2], camRot[3]))
  1157. self:RemoveCurModel()
  1158. self:RefreshPetView(petData)
  1159. self.petModel.rawImage.texture = previewSystem:GetRenderTexture()
  1160. end
  1161. function UIRoleMessageView:RefreshPetView(petData)
  1162. if petData == nil then return nil end
  1163. return petViewSystem:RefreshView(Enum.RoleInEnvType.PetLvUp, petData.cfgId, petData.extGoesShowData, self, self.LoadModelCB)
  1164. end
  1165. function UIRoleMessageView:RefreshPetTop(petData)
  1166. local petCfgData = ManagerContainer.CfgMgr:GetPetDataById(petData.cfgId)
  1167. if not petCfgData then
  1168. return
  1169. end
  1170. local natureId = petCfgData.NatureType
  1171. local natureCfgData = ManagerContainer.CfgMgr:GetNatureDataById(natureId)
  1172. local icon = natureCfgData.Icon
  1173. CommonUtil.LoadIcon(self, icon, function (sprite)
  1174. self.petJobIcon.image.sprite = sprite
  1175. end, self, "petJobIcon")
  1176. CommonUtil.LoadIcon(self, Constant.Quality_CardType_Icons[petData.quality], function (sprite)
  1177. self.petLabelIcon.image.sprite = sprite
  1178. end, self, "labelIcon")
  1179. self.petNameText.text.text = petData.advanceLevel > 0 and I18N.T(petCfgData.Name).."+"..petData.advanceLevel or I18N.T(petCfgData.Name)
  1180. self.petLv.text.text = petData.level
  1181. local multiply = petCfgData.ConversionRate*0.0001
  1182. self.btnPetAttrs.text.uILocalizeScript:SetContentAndValues("DscAttrToRole", {multiply*100})
  1183. local petStarIcon, textContent = CommonUtil.GetPetSkillStarIconAndColor(petData.skillList)
  1184. CommonUtil.LoadIcon(self, petStarIcon, function (sprite)
  1185. self.advence.image.sprite = sprite
  1186. end)
  1187. self.advenceLv.text.text = textContent
  1188. end
  1189. function UIRoleMessageView:RefreshPetSkills(petData)
  1190. for i = 1, 3 do
  1191. local data = petData.skillList[i]
  1192. local item = self.skillView["skillItem"..i]
  1193. item:SetActive(data ~= nil)
  1194. if data then
  1195. local skillCfgData = ManagerContainer.CfgMgr:GetSkillCfgById(data.cfgId)
  1196. if skillCfgData then
  1197. local itemlua = CommonUtil.BindGridViewItem2Lua(self, 'SkillItem', item.gameObject)
  1198. itemlua.icon.image.sprite = nil
  1199. if skillCfgData.Icon then
  1200. CommonUtil.LoadIcon(self, skillCfgData.Icon, function (sprite)
  1201. itemlua.icon.image.sprite = sprite
  1202. end)
  1203. itemlua.icon.button.enabled = true
  1204. self.uiBase:AddButtonUniqueEventListener(itemlua.icon.button, self, self.OnSkillClick, data)
  1205. end
  1206. itemlua.num.text.text = I18N.T('Lv').. tostring(data.level)
  1207. end
  1208. end
  1209. end
  1210. end
  1211. function UIRoleMessageView:OnSkillClick(button, params)
  1212. local data = params[0]
  1213. local data = {tipsType = Enum.UITipsType.Skill, cfgId = data.cfgId, num = data.level}
  1214. ManagerContainer.LuaUIMgr:OpenTips(data)
  1215. end
  1216. function UIRoleMessageView:RefreshPetBaseAttrs(petData)
  1217. if not self.petBaseAttrsList then
  1218. self.petBaseAttrsList = {};
  1219. self.originalAttribute.gameObject:SetActive(false); --隐藏素体
  1220. for i = 1, 10 do
  1221. local _go = CommonUtil.Instantiate(self.originalAttribute, self.petBaseAttRoot.attributes.gameObject.transform);
  1222. local _nameText = _go.transform:Find("AttributeNameText").gameObject:GetComponent("Text");
  1223. local _valueText = _go.transform:Find("AttributeValueText").gameObject:GetComponent("Text");
  1224. table.insert(self.petBaseAttrsList, {
  1225. ["go"] = _go;
  1226. ["name"] = _nameText,
  1227. ["value"] = _valueText,
  1228. })
  1229. end
  1230. end
  1231. attrsShowState = false
  1232. self.petBaseAttRoot:SetActive(not attrsShowState)
  1233. self.petDetailAttRoot:SetActive(attrsShowState)
  1234. local petActorData = self.controller:GetPetActorDataByPetId(petData.id)
  1235. if not petActorData then
  1236. return
  1237. end
  1238. self.SyncCbId = ManagerContainer.LuaActorAttributeMgr:SyncServerActorData(petActorData,function()
  1239. self:RefreshPetDetailAttrs()
  1240. self:RefreshAttr()
  1241. end
  1242. )
  1243. local attrKeys = {7,8,9,10,11,12,13,14,15,16}
  1244. for i = 1, #attrKeys do
  1245. local key = attrKeys[i]
  1246. local val = petActorData:GetFinalAttr(key)
  1247. val = SDataUtil.InvConvert(val)
  1248. self.petBaseAttrsList[i].name.text = I18N.T("Attr_" .. key)
  1249. val = key > 21 and CommonUtil.GetPreciseDecimal(val, 3) or math.floor(val)
  1250. self.petBaseAttrsList[i].value.text = val
  1251. self.petBaseAttrsList[i].go:SetActive(true)
  1252. end
  1253. self:RefreshPetDetailAttrs()
  1254. end
  1255. function UIRoleMessageView:RefreshPetDetailAttrs()
  1256. local petData
  1257. if curIndex == 1 then
  1258. petData = self.controller:GetPetDataByHeroId(1)
  1259. else
  1260. local _partnerData = self.controller:GetPartnerData(curIndex);
  1261. petData = self.controller:GetPetDataByHeroId(_partnerData._id)
  1262. end
  1263. if not petData then
  1264. return
  1265. end
  1266. local petActorData = self.controller:GetPetActorDataByPetId(petData.id)
  1267. if not petActorData then
  1268. return
  1269. end
  1270. self.baseList = {}
  1271. self.addList = {}
  1272. for k,v in pairs(attrSortList) do
  1273. if v >= Enum.HeroAttrType.Life and v <= Enum.HeroAttrType.CastAcceleration then
  1274. local num = petActorData:GetFinalAttr(v)
  1275. if SDataUtil.IsGreater(num, 0) then
  1276. self.baseList[#self.baseList + 1] = {v, num, 0}
  1277. end
  1278. else
  1279. if v >= Enum.HeroAttrType.Nature_None_Damage_Percent then
  1280. local num = petActorData:GetFinalAttr(v)
  1281. if SDataUtil.IsGreater(num, 0) then
  1282. self.addList[#self.addList + 1] = {v, num, 0}
  1283. end
  1284. end
  1285. end
  1286. end
  1287. end
  1288. function UIRoleMessageView:RefreshAttr()
  1289. if self.baseView.loopVerticalScrollRect.totalCount ~= #self.baseList then
  1290. self.baseView.loopVerticalScrollRect:ClearCells()
  1291. CommonUtil.LoopGridViewEleCreateNew(self, self.baseView.loopVerticalScrollRect, nil, self.baseList, 0, nil, function (itemLua, idx)
  1292. local data = self.baseList[idx + 1]
  1293. local key = data[1]
  1294. local val = SDataUtil.InvConvert(data[2])
  1295. itemLua.text.text.text = I18N.T("Attr_" .. key)
  1296. itemLua.number.text.text = math.floor(val)
  1297. end)
  1298. else
  1299. self.baseView.loopVerticalScrollRect:RefreshCellsData()
  1300. end
  1301. if self.petAddView.loopVerticalScrollRect.totalCount ~= #self.addList then
  1302. self.petAddView.loopVerticalScrollRect:ClearCells()
  1303. CommonUtil.LoopGridViewEleCreateNew(self, self.petAddView.loopVerticalScrollRect, nil, self.addList, 0, nil, function (itemLua, idx)
  1304. local data = self.addList[idx + 1]
  1305. local key = data[1]
  1306. local val = SDataUtil.InvConvert(data[2])
  1307. local val1 = key > 21 and CommonUtil.GetPreciseDecimalFloor(val, 3) or math.floor(val)
  1308. if val1 <= 0.001 then
  1309. val1 = 0.001
  1310. end
  1311. itemLua.text.text.text = I18N.T("Attr_" .. key)
  1312. itemLua.number.text.text = CommonUtil.HeroAttrFormatValue(key, val1, true)
  1313. end)
  1314. else
  1315. self.petAddView.loopVerticalScrollRect:RefreshCellsData()
  1316. end
  1317. end
  1318. function UIRoleMessageView:OnClickPetDetailBtn()
  1319. attrsShowState = true
  1320. self.petBaseAttRoot:SetActive(not attrsShowState)
  1321. self.petDetailAttRoot:SetActive(attrsShowState)
  1322. self:RefreshAttr()
  1323. self.petAddView:SetActive(#self.addList > 0)
  1324. self.petNone:SetActive(#self.addList == 0)
  1325. end
  1326. function UIRoleMessageView:OnClickPetBaseBtn()
  1327. attrsShowState = false
  1328. self.petBaseAttRoot:SetActive(not attrsShowState)
  1329. self.petDetailAttRoot:SetActive(attrsShowState)
  1330. end
  1331. function UIRoleMessageView:OnPetAttrsClick(button, params)
  1332. local petData
  1333. if curIndex == 1 then
  1334. petData = self.controller:GetPetDataByHeroId(1)
  1335. else
  1336. local _partnerData = self.controller:GetPartnerData(curIndex);
  1337. petData = self.controller:GetPetDataByHeroId(_partnerData._id)
  1338. end
  1339. if not petData then
  1340. return
  1341. end
  1342. local data = {id = petData.id, cfgId = petData.cfgId, type = 2, baseList = self.baseList, addList = self.addList}
  1343. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPetAttribute, data)
  1344. end
  1345. -------宠物页面end----
  1346. function UIRoleMessageView:RefreshCardSuitBtn()
  1347. local id = 1
  1348. if curIndex > 1 then
  1349. local _partnerData = self.controller:GetPartnerData(curIndex)
  1350. id = _partnerData._id
  1351. end
  1352. local data = self.controller:GetCardBlessData(id)
  1353. local curLv = 0
  1354. if data then
  1355. curLv = data.curLv
  1356. end
  1357. if data and not data.state then
  1358. curLv = curLv - 1
  1359. end
  1360. local allCfgDatas = ManagerContainer.CfgMgr:GetAllCardSuitNewCfg()
  1361. self.cardBlessLv.lv0:SetActive(curLv == 0)
  1362. for i = 1, #allCfgDatas do
  1363. if self.cardBlessLv["lv"..i] then
  1364. self.cardBlessLv["lv"..i]:SetActive(curLv == i)
  1365. end
  1366. end
  1367. end
  1368. function UIRoleMessageView:OnCardBlessClick()
  1369. local id = 1
  1370. if curIndex > 1 then
  1371. local _partnerData = self.controller:GetPartnerData(curIndex)
  1372. id = _partnerData._id
  1373. end
  1374. local data = self.controller:GetCardBlessData(id)
  1375. if not data then
  1376. return
  1377. end
  1378. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UICardBlessTips, data)
  1379. end
  1380. function UIRoleMessageView:RefreshSkillEquip()
  1381. local skillEquipData
  1382. if curIndex == 1 then
  1383. skillEquipData = self.controller:GetSkillEquipData(1)
  1384. else
  1385. local _partnerData = self.controller:GetPartnerData(curIndex);
  1386. skillEquipData = self.controller:GetSkillEquipData(_partnerData._id)
  1387. end
  1388. local slotlua = self._equipmentSlots[7].lua
  1389. slotlua.iconItem:SetActive(skillEquipData ~= nil and skillEquipData.id > 0)
  1390. if not skillEquipData then
  1391. return
  1392. end
  1393. if skillEquipData and skillEquipData.cfgId > 0 then
  1394. IconItemCtr:SetData(self, slotlua.iconItem, skillEquipData, Enum.ItemIEnterType.HeroEquip)
  1395. self.uiBase:AddButtonUniqueEventListener(slotlua.tipButton.button, self, self.OnSkillEquipClick)
  1396. end
  1397. end
  1398. function UIRoleMessageView:OnSkillEquipClick(button, params)
  1399. local curSkillEquipData
  1400. if curIndex == 1 then
  1401. curSkillEquipData = self.controller:GetSkillEquipData(1)
  1402. else
  1403. local _partnerData = self.controller:GetPartnerData(curIndex);
  1404. curSkillEquipData = self.controller:GetSkillEquipData(_partnerData._id)
  1405. end
  1406. if not curSkillEquipData or curSkillEquipData.id == 0 then
  1407. return
  1408. end
  1409. local heroData
  1410. if curIndex == 1 then
  1411. heroData = self.controller:GetLeaderHeadData()
  1412. else
  1413. heroData = self.controller:GetPartnerData(curIndex);
  1414. end
  1415. local jobType = heroData._jobData.JobType
  1416. local data = {{cfgId = curSkillEquipData.cfgId, jobType = jobType, logicData = curSkillEquipData, heroId = heroData._id, heroCfgId = heroData._jobCfgId, nickname = heroData._name}, Enum.ItemIEnterType.Bag, Enum.UIPageName.UIBag}
  1417. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIArtifactTips, data)
  1418. end
  1419. return UIRoleMessageView