UIRoleMessageView.lua 55 KB

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