UIRoleMessageView.lua 54 KB

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