| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572 |
- --[[
- 该页面分三大块:玩家页面/角色页面/宠物页面
- ]]--
- local UIRoleMessageView = require("UIRoleMessage/UIRoleMessageView_Generate")
- local RoleViewSystem = require("RoleViewSystem")
- local PreviewSystem = require("PreviewSystem")
- local PetViewSystem = require("PetViewSystem")
- local RoleMessageHeadCtr = require("Common/RoleMessageHeadCtr")
- local EquipmentShowSlotItemCtr = require("Common/EquipmentShowSlotItemCtr")
- local NickNameCtr = require("Common/NickNameCtr")
- local IconItemCtr = require ("Common.IconItemCtr")
- local curIndex, lastIndex
- local curModel;
- local roleViewSystems = nil;
- local previewSystem = nil;
- local petViewSystem = nil
- local isLeader = false;
- local partnerId;
- local petId;
- local _roleHeadName = "RoleMessageHeadOriginal";
- local _equipmentSlotName = "EquipmentShowSlotItem";
- local _skillSlotName = "SkillSlotOriginal";
- local _equipSlotNames = {};
- local _data = nil; --获取到的整理好的数据
- local pageToggleData = {}
- local attrSortList
- local attrsShowState = false
- local ActiveTitleList = {}
- local isShowTitleScroll = false
- function UIRoleMessageView:OnAwake(data)
- self.controller = require("UIRoleMessage/UIRoleMessageCtr")
- self.controller:Init(self)
- self.controller:SetData(data)
- end
- function UIRoleMessageView:AddEventListener()
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.AFTER_REFRESH_NAME, self, self.SetPlayerName);
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.USER_HEADPROTRAIT_CHANGED, self, self.OnChangeHeadEvent)
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.USER_HEADPROTRAIT_DATA_TIDY, self, self.OnHeadDataEvent)
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.SEASON_SELECTION_NTF, self, self.AfterRefreshDanScore)
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.SEASON_OPEN_NTF, self, self.AfterRefreshSeason)
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_Used_New_HeadFrame, self, self.ChangeHeadFrame)
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.FIGHTPOWER_REFRESH, self, self.RefreshTotalFightPower)
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.TITLE_WEARER_DISBOARD_NOTICE, self, self.ChangeTitle)
- end
- function UIRoleMessageView:FillContent(data, uiBase)
- self.uiBase = uiBase
- local gameObject = self.uiBase:GetRoot()
- if gameObject ~= nil then
- self.gameObject = gameObject
- self.transform = gameObject.transform
- end
- self:InitGenerate(self.transform, data)
- self:Init()
- end
- function UIRoleMessageView:Init()
- self:InitRoleSystems()
- self:Refresh()
- isShowTitleScroll = false
- self.titleScroll:SetActive(isShowTitleScroll)
- self.titleScroll.loopGridView:InitGridView(0, function(gridView, itemIndex, row, column)
- return self:GetTitleItemByRowColumn(gridView, itemIndex, row, column)
- end, nil)
- ManagerContainer.AccountInfoMgr:SendGetDeleteInfoReq()
- end
- function UIRoleMessageView:InitRoleSystems()
- if not petViewSystem then
- petViewSystem = PetViewSystem:new()
- end
- if not roleViewSystems then
- roleViewSystems = {}
- end
- for i = 1, 6 do
- local roleViewSystem = RoleViewSystem:new()
- roleViewSystems[i] = roleViewSystem
- end
- end
- function UIRoleMessageView:Refresh()
- pageToggleData.toggleDefaultIndex = 1
- curIndex = 1
- attrSortList = {}
- for k,v in pairs(Enum.HeroAttrType) do
- attrSortList[#attrSortList + 1] = v
- end
- table.sort(attrSortList, function (a,b)
- return a < b
- end)
- self:ChangeTitle() --刷新称号
- self:CreateValues();
- self:CreateTargetTables();
- -- self.userButton:SetActive(SDKMgr.Instance:CheckHasModul(SDKModulType.USERMANAGER))
- self.userButton:SetActive(true)
- --开启界面默认选中玩家页面
- self.playerMessage.toggle.isOn = true;
- self:OnPageToggleClick(self.playerMessage.toggle, 1, true);
- --开启界面的时候就控制按钮的显示状态
- local _isSelf = self.controller:GetData()._targetTag == 0;
- self:SetChangeNameButton(_isSelf)
- self:SetBottomButtons(_isSelf);
- self.titleBtn:SetActive(_isSelf)
- ManagerContainer.LuaEventMgr:RegisterEvent(UIEventNames.EID_PAGE_REDPOINT_NTF, self, self.OnPageRedpointNtf)
- if _isSelf then
- --ManagerContainer.DataMgr.CompetitionData:SetRefreshSeasonState(true);
- --请求赛季信息,赛季信息是在打开赛季界面的时候才会请求,如果玩家在打开赛季之前打开了自己信息界面,必须要先请求一下赛季消息
- --ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_COMPETITION_REQ, {competition_id = 0})
- ManagerContainer.DataMgr.ArenaData:SendArenaDataReq(Enum.UIPageName.UIRoleMessage)
- else
- self:SetRPState(false)
- end
- end
- function UIRoleMessageView:RemoveEventListener()
- ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
- ManagerContainer.LuaEventMgr:UnregisterEvent(UIEventNames.EID_PAGE_REDPOINT_NTF, self, self.OnPageRedpointNtf)
- end
- function UIRoleMessageView:AddUIEventListener()
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
- CommonUtil.CreateToggleMouduleOnlyBtns(self, pageToggleData, self.bottomRoot, 1, self.OnAttrOrSkillChangeToggleClick, nil, false, true)
-
- self.uiBase:AddButtonEventListener(self.btnClose.button, self, self.OnBtnCloseClick);
- self:ToggleAddListener();
- self:BottomButtonAddListener(self.controller:GetData()._targetTag == 0);
- self:AddPlayerPageUIEventListener();
- self:DragModel();
- self.uiBase:AddButtonEventListener(self.goToDetailButton.button, self, self.OnGoToDetailClick);
- self.uiBase:AddButtonEventListener(self.goToBaseButton.button, self, self.OnGoToBaseClick);
- self.uiBase:AddButtonEventListener(self.AnyBtn.button,self, self.OnBtnCloseClick)
- self.uiBase:AddButtonEventListener(self.serverButton.button, self, self.OnClickServerBtn)
- self.uiBase:AddButtonEventListener(self.userButton.button, self, self.OnClickUserBtn)
- self.uiBase:AddButtonEventListener(self.titleBtn.button, self, self.OntitleBtnClick)
- self.uiBase:AddButtonEventListener(self.petBaseAttRoot.goToDetailButton.button, self, self.OnClickPetDetailBtn)
- self.uiBase:AddButtonEventListener(self.petDetailAttRoot.goToBaseButton.button, self, self.OnClickPetBaseBtn)
- self.uiBase:AddButtonEventListener(self.btnPetAttrs.button, self, self.OnPetAttrsClick)
- self.uiBase:AddButtonEventListener(self.btnCardBless.button, self, self.OnCardBlessClick)
- end
- function UIRoleMessageView:OntitleBtnClick()
- isShowTitleScroll = not isShowTitleScroll
- self.titleScroll:SetActive(isShowTitleScroll)
- if isShowTitleScroll then
- ActiveTitleList = ManagerContainer.DataMgr.TitleData:GetAllActiveTitleList()
- self.titleScroll.loopGridView:RefreshListByIndex(ActiveTitleList and #ActiveTitleList or 0)
- end
- end
- function UIRoleMessageView:GetTitleItemByRowColumn(gridView, itemIndex, row, column)
- local item = nil
- item = gridView:NewListViewItem('TitleItem')
- local itemLua = CommonUtil.BindGridViewItem2Lua(self, 'TitleItem', item.gameObject)
- self.uiBase:AddToggleEventListener(itemLua.toggle, self, self.ChangeViewPage, itemIndex)
- local activeTitleData = ActiveTitleList[itemIndex + 1]
- local titlecfg = ManagerContainer.CfgMgr:GetDesignationCfgById(activeTitleData.titleId)
- CommonUtil.LoadIcon(self, titlecfg.ChatSource, function (sprite)
- itemLua.img.image.sprite = sprite
- end)
- self.uiBase:AddButtonUniqueEventListener(itemLua.img.button, self, self.SendChangeTitleMsg,itemIndex)
- return item
- end
- function UIRoleMessageView:SendChangeTitleMsg(button,params)
- local itemIndex = params[0]
- local titleData = ActiveTitleList[itemIndex + 1]
- isShowTitleScroll = false
- self.titleScroll:SetActive(isShowTitleScroll)
- if titleData.state == 3 then
- return
- end
- ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_HEAD_OPERATE_REQ,{operateType = 2,headId = titleData.titleId})
- end
- function UIRoleMessageView:OnHide()
- for i = 1, 6 do
- roleViewSystems[i]:Dispose()
- end
- roleViewSystems = nil
- if petViewSystem then
- petViewSystem:Dispose()
- end
- petViewSystem = nil
- if previewSystem then
- previewSystem:Dispose()
- end
- previewSystem = nil
- end
- function UIRoleMessageView:OnShow(data)
- self.controller:SetData(data)
- self:Refresh()
- end
- function UIRoleMessageView:OnClose()
- self:DeleteGo(self._roleHeads);
- self:DeleteGo(self._roleDetailAttr);
- self:DeleteGo(self._roleBaseAttrs);
- self:DeleteGo(self._equipmentSlots);
- self:DeleteGo(self.petBaseAttrsList);
- self.baseView.loopVerticalScrollRect:ClearCells()
- self.petAddView.loopVerticalScrollRect:ClearCells()
- self:RemoveCurModel()
- if nil ~= self.SyncCbId then
- ManagerContainer.LuaActorAttributeMgr:ClearCb(self.SyncCbId)
- end
- self.petModel.uIEventTriggerListener.onClick = nil
- self.petModel.uIEventTriggerListener.onClick = nil
- self.leaderRoleModel.uIEventTriggerListener.onDrag = nil
- self.roleModel.uIEventTriggerListener.onDrag = nil
- for i = 1, 6 do
- roleViewSystems[i]:Dispose()
- end
- roleViewSystems = nil
- if petViewSystem then
- petViewSystem:Dispose()
- end
- petViewSystem = nil
- if previewSystem then
- previewSystem:Dispose()
- end
- previewSystem = nil
- _data = nil;
- end
- function UIRoleMessageView:OnDispose()
- self.titleScroll.loopGridView:Dispose()
- end
- --删除实例化出来的对象
- function UIRoleMessageView:DeleteGo(_table)
- if _table then
- for i = #_table, 1, -1 do
- --头像删除有bug,此处暂时用立即删除
- CommonUtil.DestroyGOImmediate(_table[i].go)
- end
- end
- end
- ----公共模块start----
- ---事件start
- function UIRoleMessageView:OnClickServerBtn()
- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIChangeServer)
- end
- function UIRoleMessageView:OnClickUserBtn()
- --if SDKMgr.Instance:CheckHasModul(SDKModulType.USERMANAGER) then
- -- SDKMgr.Instance:OpenModul(SDKModulType.USERMANAGER)
- --end
- SDKMgr.Instance:Logout()
- end
- --关闭按钮
- function UIRoleMessageView:OnBtnCloseClick()
- --关闭界面前删除实例化出来的预设物
- ManagerContainer.LuaUIMgr:ClosePage(Enum.UIPageName.UIRoleMessage);
- end
- --改名事件
- function UIRoleMessageView:OnChangeNameClick()
- local _isSelf = self.controller:GetData()._targetTag == 0;
- if _isSelf then
- local _openCreate = NickNameCtr:NeedOpenCreate();
- NickNameCtr:OpenNickNamePage(_openCreate);
- end
- end
- --改头像
- function UIRoleMessageView:OnChangeHeadClick()
- local _isSelf = self.controller:GetData()._targetTag == 0;
- if _isSelf then
- ManagerContainer.DataMgr.HeadProtraitData:SendGetHeadInfo();
- end
- end
- --改头像框
- function UIRoleMessageView:OnChangeHeadFrameClick()
- local _isSelf = self.controller:GetData()._targetTag == 0;
- if _isSelf then
- ManagerContainer.DataMgr.HeadFrameDataMgr:SendHeadFrameInfoReq();
- end
- end
- function UIRoleMessageView:OnPageRedpointNtf(pageId,state)
- local _isSelf = self.controller:GetData()._targetTag == 0
- if pageId == self.uiBase.PageId then
- self:SetRPState(_isSelf and state)
- elseif not _isSelf then
- self:SetRPState(false)
- end
- end
- function UIRoleMessageView:RefreshTotalFightPower()
- --如果是自己的话 会有延迟更新战力 需要刷新最新战力
- local _isSelf = self.controller:GetData()._targetTag == 0
- if _isSelf then
- local totalPower = ManagerContainer.DataMgr.UserData:GetTotalFightPower()
- self.powerText.text.text = tostring(totalPower) --总战力
- end
- end
- function UIRoleMessageView:SetRPState(vis)
- local rpTrans = self.headItem.transform:Find("redPoint31")
- if rpTrans ~= nil then
- rpTrans.gameObject:SetActive(vis)
- end
- end
- --toggle事件
- function UIRoleMessageView:OnAttrOrSkillChangeToggleClick(_params)
- --if _params == self._ASChangeToggleIndexCur then return; end
- --self._ASChangeToggleIndexCur = _params;
- lastIndex = nil
- self.attributeRoot.gameObject:SetActive(_params == 1);
- self.skillRoot.gameObject:SetActive(_params == 2);
- self.petRoot.gameObject:SetActive(_params == 3);
- self.noPet:SetActive(_params == 3)
- if _params then
- if _params == 1 then --属性
- if curIndex == 1 then
- self:RefreshLeaderModel()
- else
- self:RefreshPartnerModel()
- end
- self:SetAttributeState(true);
- elseif _params == 2 then --技能
- self:SetAttributeState(false);
- elseif _params == 3 then --宠物
- self:RefreshPetInfo()
- end
- end
- end
- --Toggle事件
- function UIRoleMessageView:OnPageToggleClick(_toggle, _params, _value)
- if _params == self._toggleIndexCur then
- return;
- else
- self._toggleIndexCur = _params;
- end
- if not _toggle.isOn then return; end
- if _params then self:OpenPageByTab(_params); end
- end
- --toggle添加事件
- function UIRoleMessageView:ToggleAddListener()
- self.uiBase:AddToggleEventListener(self.playerMessage.toggle, self, self.OnPageToggleClick, 1);
- self.uiBase:AddToggleEventListener(self.roleMessage.toggle, self, self.OnPageToggleClick, 2);
- --self.uiBase:AddToggleEventListener(self.attributeToggle.toggle, self, self.OnAttrOrSkillChangeToggleClick, 1);
- --self.uiBase:AddToggleEventListener(self.skillToggle.toggle, self, self.OnAttrOrSkillChangeToggleClick, 2);
- end
- --bottom的button添加事件
- function UIRoleMessageView:BottomButtonAddListener(_isSelf)
- if _isSelf then --如果点开的是我自己的页面
- if Constant.OpenPay and not PlatformPack.SpecialFuncShield then
- self.giftButton:SetActive(true)
- else
- self.giftButton:SetActive(false)
- end
- self.uiBase:AddButtonEventListener(self.giftButton.button, self, self.OnGiftClick)
- -- self.uiBase:AddButtonEventListener(self.giftButton.button, function() ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("功能尚未开放,敬请期待!"); end);
- self.uiBase:AddButtonEventListener(self.bindButton.button, function() ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("功能尚未开放,敬请期待!"); end);
- self.uiBase:AddButtonEventListener(self.settingButton.button, function()
- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UISettings); --打开设置界面
- end);
- else --点开的是别人的页面
- local _originalData = self.controller._userData
- local _uid = _originalData.uid
- local _nickName = _originalData.nickName;
- local _headIcon = _data._headIconId;
- local jobId = _originalData.jobId
- local level = _originalData.level
- local sex = _originalData.gender
- self.uiBase:AddButtonEventListener(self.talkButton.button, function()
- ManagerContainer.LuaUIMgr:PrivateChatOtherPlayer(_uid, _nickName, _headIcon, jobId, level,sex); --打开私聊界面
- end);
- local _isBlack, _ = self:JudgeIsBlack();
- self:SetBlackButtonName(_isBlack);
- self.uiBase:AddButtonEventListener(self.shieldButton.button, self, self.OnBlackBtnClick); --改头像
- local _isFriend, _ = self:JudgeIsFriend();
- self:SetFriendButtonName(_isFriend);
- self.uiBase:AddButtonEventListener(self.makeFriendButton.button, self, self.OnMakeFriendBtnClick); --改头像
- end
- end
- ---事件end
- ---初始化start
- --游戏中一些数值对象
- function UIRoleMessageView:CreateValues()
- self._toggleIndexCur = 0; --初始的被选中的toggle的index
- end
- --游戏中用到的对象的table
- function UIRoleMessageView:CreateTargetTables()
- self._pageTable = {};
- table.insert(self._pageTable, self.playerPage);
- table.insert(self._pageTable, self.rolePage);
- table.insert(self._pageTable, self.petPage);
- end
- ---初始化end
- ---对象显示控制start
- --页签控制页面开启关闭
- function UIRoleMessageView:OpenPageByTab(_tabIndex)
- for i = 1, #self._pageTable do
- self._pageTable[i]:SetActive(i == _tabIndex);
- end
- if _tabIndex == 1 then --展示玩家信息界面
- self:ShowPlayerData();
- elseif _tabIndex == 2 then --展示角色信息界面
- self:ShowRoleData();
- end
- end
- --控制改名按钮的显示
- function UIRoleMessageView:SetChangeNameButton(_isSelf)
- self.changeNameButton.gameObject:SetActive(_isSelf);
- end
- --控制底部按钮的显示
- function UIRoleMessageView:SetBottomButtons(_isSelf)
- self.selfButtons:SetActive(_isSelf);
- local isCross = self.controller:IsCrossRole()
- self.friendButtons:SetActive(not isCross and not _isSelf);
- ManagerContainer.LuaUIMgr:ClearIsAcrossRoleState()
- end
- ---对象显示控制end
- ---数据填充start
- --刷新角色
- function UIRoleMessageView:RefreshRoleView(roleId, viewData, extGoesShowData)
- roleViewSystems[1]:RefreshView(Enum.RoleInEnvType.RoleMainView, roleId, viewData, extGoesShowData, self, self.LoadModelCB)
- end
- --load 模型
- function UIRoleMessageView:LoadModelCB(model)
- curModel = model
- if previewSystem then
- previewSystem:UpdateGo(model)
- end
- curModel:SetActive(true)
- if petViewSystem then
- petViewSystem:RolePlayAni(curModel, "s_click")
- end
- end
- --创建previewSystem,同时也隐藏了之前已经load过的模型
- function UIRoleMessageView:CreatePreviewSystem()
- if not previewSystem then
- previewSystem = PreviewSystem:new()
- end
- previewSystem:SetView(Vector3(-0.116, 1.649, 2.5), Quaternion.Euler(12.174, -182.628, 0.085))
- self:RemoveCurModel()
- end
- function UIRoleMessageView:RemoveCurModel()
- if curModel ~= nil then
- curModel:SetActive(false)
- previewSystem:RemoveGo(curModel)
- for i = 1, 6 do
- roleViewSystems[i]:Recycle()
- end
- curModel = nil
- end
- end
- --填充RawImage
- function UIRoleMessageView:SetRawImage(_RawImage)
- _RawImage.texture = previewSystem:GetRenderTexture()
- end
- --显示角色
- function UIRoleMessageView:ShowRole(_roleId, _viewData, _rawImage)
- self:RefreshRoleView(_roleId, _viewData);
- self:SetRawImage(_rawImage);
- end
- ---数据填充end
- ----公共模块end----
- ----玩家页面start----
- ---事件start
- --添加事件
- function UIRoleMessageView:AddPlayerPageUIEventListener()
- --self.uiBase:AddButtonEventListener(self.head.button, self, self.OnChangeHeadClick); --改头像
- self.uiBase:AddButtonEventListener(self.changeNameButton.button, self, self.OnChangeNameClick); --改名
- end
- --添加Model的拖拽事件
- function UIRoleMessageView:DragModel()
- --一次性把player界面和role界面model的拖拽都设置了吧,反正也不耗
- self.leaderRoleModel.uIEventTriggerListener.onDrag = nil;
- self.leaderRoleModel.uIEventTriggerListener.onDrag = function()
- local deltaX = self.leaderRoleModel.uIEventTriggerListener.currentEventData.delta.x
- if curModel then
- curModel.transform:Rotate(Vector3.New(0, deltaX > 0 and -7 or 7, 0))
- end
- end
- self.roleModel.uIEventTriggerListener.onDrag = nil;
- self.roleModel.uIEventTriggerListener.onDrag = function()
- local deltaX = self.roleModel.uIEventTriggerListener.currentEventData.delta.x
- if curModel then
- curModel.transform:Rotate(Vector3.New(0, deltaX > 0 and -7 or 7, 0))
- end
- end
- self.petModel.uIEventTriggerListener.onDrag = nil
- self.petModel.uIEventTriggerListener.onDrag = function()
- if curModel then
- local deltaX = self.petModel.uIEventTriggerListener.currentEventData.delta.x
- curModel.transform:Rotate(Vector3.New(0, deltaX > 0 and -7 or 7, 0))
- end
- end
- self.petModel.uIEventTriggerListener.onClick = nil
- self.petModel.uIEventTriggerListener.onClick = function()
- if petViewSystem then
- petViewSystem:RolePlayAni(curModel, "s_click")
- end
- end
- end
- ---事件end
- ---数据填充start
- --填充玩家的数据到UI
- function UIRoleMessageView:ShowPlayerData()
- _data = self.controller:GetData()._tidyData._playerData;
- self:SetPlayerTopMessage(); --设置顶部信息
- self:SetPlayerModel(_data._roleId, _data._viewData, _data._extGoesShowData, self.leaderRoleModel.rawImage); --设置model展示信息
- end
- --改变了头像,这个只有玩家打开的是自己的信息界面的时候才会调用到,因为只有玩家自己才能改变自己的头像
- function UIRoleMessageView:OnChangeHeadEvent()
- _data._headIcon = ManagerContainer.DataMgr.UserData:GetUserHeadIcon(); --头像图片
- self:RefreshHeadIcon();
- end
- --获得了排名信息
- function UIRoleMessageView:AfterRefreshDanScore()
- self:SetDunMessage(ManagerContainer.DataMgr.ArenaData:GetCurDanScore());
- end
- --刷新了赛季信息
- function UIRoleMessageView:AfterRefreshSeason()
- local _titleName, _titleIcon, _competitionTitleIcon = ManagerContainer.DataMgr.CompetitionData:GetCurSeasonTitle(); --称号;
- self.controller:RefreshTitleIconAndName(_competitionTitleIcon, _titleName);
- self:SetTitle(_competitionTitleIcon, _titleName); --称号
- end
- --更改了头像框
- function UIRoleMessageView:ChangeHeadFrame(headFrameIcon)
- CommonUtil.LoadIcon(self, headFrameIcon, function (sprite)
- self.headItem.frame.image.sprite = sprite
- end)
- end
- function UIRoleMessageView:ChangeTitle()
- local _isSelf = self.controller:GetData()._targetTag == 0;
- local titleId
- if _isSelf then
- titleId = ManagerContainer.DataMgr.TitleData:GetCurrWearerTitleId()
- else
- titleId = self.controller:GetData()._tidyData._titleId
- end
- local titleCfg = ManagerContainer.CfgMgr:GetDesignationCfgById(titleId)
- if not titleCfg then
- self.titleName:SetActive(true)
- self.titleImg:SetActive(false)
- else
- self.titleName:SetActive(false)
- self.titleImg:SetActive(true)
- CommonUtil.LoadIcon(self, titleCfg.ChatSource, function (sprite)
- self.titleImg.image.sprite = sprite
- end)
- end
- end
- --开启头像设置界面
- function UIRoleMessageView:OnHeadDataEvent()
- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIChangeHead); --开启改名界面
- end
- --设置头像
- function UIRoleMessageView:RefreshHeadIcon()
- if _data._headIcon ~= nil then
- --设置头像
- CommonUtil.LoadIcon(self, _data._headIcon, function(sprite)
- self.headItem.head.image.sprite = sprite
- end, self, 'headPortraitIconIdx')
- else
- self.headItem.head.image.sprite = nil
- end
- end
- --刷新头像
- function UIRoleMessageView:RefreshHead()
- local _jobIcon = ManagerContainer.CfgMgr:GetJobDataById(_data._jobId).JobIcon;
- local _fakerData = {Level = _data._baseLevel, ProfessionIcon = _jobIcon, HeadIcon = _data._headIcon, IsHero = true};
- CommonUtil.SetPlayerHeadAndFrame(self, self.headItem, _fakerData, false, _data._headFrameId, self, self.OnChangeHeadFrameClick);
- local _isSelf = self.controller:GetData()._targetTag == 0
- if not _isSelf then
- self:SetRPState(false)
- end
- end
- --设置顶部数据显示
- function UIRoleMessageView:SetPlayerTopMessage()
- self:RefreshHead();
- --[[
- self:RefreshHeadIcon();
- --设置job
- local _jobCfgId = _data._jobId;
- local _jobCfgData = ManagerContainer.CfgMgr:GetJobDataById(_jobCfgId);
- CommonUtil.LoadIcon(self, _jobCfgData.JobIcon, function (sprite)
- self.head.icon.image.sprite = sprite
- end, self, 'jobIconIdx');
- ]]--
- self:SetPlayerName(_data._nickName); --设置昵称
- self:SetPlayerVIp(_data._vipLv) --刷新vipicon
- --self.expBarBase.textLv.text.text = "LV" .. tostring(_data._baseLevel); --base等级
- --self.expBarJob.textLv.text.text = "LV" .. tostring(_data._jobLevel); --job等级
- self:SetTitle(_data._titleIcon, _data._titleName); --称号
- self.powerText.text.text = tostring(_data._totalPower) --总战力
- self:SetAllianceMessage("", _data._allianceName); --TODO:等待工会实现之后接入
- self:SetDunMessage(_data._dun);
- end
- --设置玩家的名字
- function UIRoleMessageView:SetPlayerName(_name)
- _data._nickName = _name
- self.playerNameText.text.text = _name; --设置昵称
- end
- --设置玩家的VIP等级
- function UIRoleMessageView:SetPlayerVIp(vipLv)
- self.vipIcon.image.enabled = false
- self.vipIcon.image.sprite = nil
- if vipLv and vipLv >= 0 then
- local vipCfg = ManagerContainer.CfgMgr:GetVipCfgById(vipLv)
- if vipCfg then
- CommonUtil.LoadIcon(self, vipCfg.SmallIcon, function(sprite)
- if sprite then
- self.vipIcon.image.sprite = sprite
- self.vipIcon.image.enabled = true
- end
- end)
- end
- end
- end
- --设置称号
- function UIRoleMessageView:SetTitle(_icon, _name)
- if _icon then
- self.titleIcon.gameObject:SetActive(true);
- CommonUtil.LoadIcon(self, _icon, function (sprite)
- self.titleIcon.image.sprite = sprite
- end); --设置图片
- else
- self.titleIcon.gameObject:SetActive(false);
- end
- self.titleName.text.text = _name;
- end
- --设置工会信息
- function UIRoleMessageView:SetAllianceMessage(_icon, _name)
- --TODO:设置工会图片
- self.allianceName.text.text = _name; --工会名称
- end
- --设置段位信息
- function UIRoleMessageView:SetDunMessage(_dunScore)
- local levelCfg, nextKey = CommonUtil.GetCurDunData(_dunScore);
- CommonUtil.LoadIcon(self, levelCfg.LevelIcon, function (sprite)
- self.gradeIcon.image.sprite = sprite
- end); --设置图片
- self.gradeName.text.text = I18N.T(levelCfg.ArenaLevelName); --设置段位名称
- end
- --设置Model
- function UIRoleMessageView:SetPlayerModel(_roleId, _viewData, _extGoesShowData, _rawImage)
- self.controller:SetCurPartnerUid(1);
- self:CreatePreviewSystem();
- self:RefreshRoleView(_roleId, _viewData, _extGoesShowData);
- self:SetRawImage(_rawImage);
- end
- function UIRoleMessageView:SetPartnerModel(id, partnerCfgId, viewData, extGoesShowData)
- if partnerCfgId == nil then return nil end
- return roleViewSystems[id]:RefreshView(Enum.RoleInEnvType.RoleMainView, partnerCfgId, viewData, extGoesShowData, self, self.LoadModelCB)
- end
- --更改Model
- function UIRoleMessageView:ChangeModel(_id, _roleId, _viewData, _extGoesShowData, _rawImage)
- self.controller:SetCurPartnerUid(_id);
- if _id == 1 then
- self:SetPlayerModel(_roleId, _viewData, _extGoesShowData, _rawImage)
- else
- self:CreatePreviewSystem();
- partnerId = _roleId
- self:SetPartnerModel(_id, partnerId, _viewData, _extGoesShowData)
- end
- end
- ---数据填充end
- ----玩家页面end----
- ----角色页面start----
- ---创建常用值start
- function UIRoleMessageView:CreateEquipSlotNames()
- self._equipmentSlotName = {};
- table.insert(self._equipmentSlotName, "FrameNew/ic_equip_hat"); --帽子
- table.insert(self._equipmentSlotName, "FrameNew/ic_equip_clothing"); --衣服
- table.insert(self._equipmentSlotName, "FrameNew/ic_equip_weapon"); --武器
- table.insert(self._equipmentSlotName, "FrameNew/ic_equip_scarf"); --披肩
- table.insert(self._equipmentSlotName, "FrameNew/ic_equip_shoes"); --鞋子
- table.insert(self._equipmentSlotName, "FrameNew/ic_equip_ring"); --饰品
- end
- ---创建常用值end
- ---事件start
- --role界面中的属性界面,点击后开启详细属性
- function UIRoleMessageView:OnGoToDetailClick()
- self:SetAttributeState(false);
- end
- --role界面中的属性界面,点击后开启基础属性
- function UIRoleMessageView:OnGoToBaseClick()
- self:SetAttributeState(true);
- end
- --判断是否在黑名单中
- function UIRoleMessageView:JudgeIsBlack()
- local _originalData = self.controller._userData
- local _uid = _originalData.uid;
- local _isBlack = ManagerContainer.DataMgr.FriendDataMgr:IsBlackPlayer(_uid);
- return _isBlack, _uid;
- end
- --点击屏蔽按钮
- function UIRoleMessageView:OnBlackBtnClick()
- local _isBlack, _uid = self:JudgeIsBlack();
- if _isBlack then
- ManagerContainer.DataMgr.FriendDataMgr:RemoveBlackReq(_uid);
- else
- ManagerContainer.DataMgr.FriendDataMgr:AddBlackReq(_uid);
- end
- self:SetBlackButtonName(not _isBlack);
- end
- --判断是否是好友
- function UIRoleMessageView:JudgeIsFriend()
- local _originalData = self.controller._userData
- local _uid = _originalData.uid;
- local _isFriend = ManagerContainer.DataMgr.FriendDataMgr:HasInterestPlayer(_uid);
- return _isFriend, _uid;
- end
- --点击交友按钮
- function UIRoleMessageView:OnMakeFriendBtnClick()
- local _isFriend, _uid = self:JudgeIsFriend();
- if _isFriend then --是好友再点就是要删除了
- ManagerContainer.DataMgr.FriendDataMgr:DeleteFriendReq(_uid);
- else
- ManagerContainer.DataMgr.FriendDataMgr:AddFriendReq(_uid);
- end
- self:SetFriendButtonName(not _isFriend);
- end
- ---事件end
- ---填充对象start
- --填充角色界面的信息
- function UIRoleMessageView:ShowRoleData()
- _data = self.controller:GetData()._tidyData._roleData;
- lastIndex = nil
- self:SetAttributeState(true);
- --self:SetShowAttrOrSkill();
- self:CreateRoleHead();
- self:CreateBaseAttributesItem();
- self:CreateDetailAttributeItem();
- self:CreateEquipSlots();
- self:CreateSkillSlots();
- --开始填充
- self:SetHeads();
- --默认选中属性toggle
- self.attributeToggle.toggle.isOn = true;
- self:OnAttrOrSkillChangeToggleClick(1);
- end
- function UIRoleMessageView:OnLeaderHeadClick()
- if 1 == lastIndex then return end
- curIndex = 1
- lastIndex = curIndex
- local _leaderData = self.controller:GetLeaderHeadData();
- -- self:ChangeModel(1, _leaderData._roleId, _leaderData._viewData, _leaderData._extGoesShowData, self.roleModel.rawImage);
- local totalPower = tonumber(_leaderData.petFightPower) + tonumber(_leaderData._power)
- --LogError("_leaderData.petFightPower"..tostring(_leaderData.petFightPower))
- --LogError("_leaderData._power"..tostring(_leaderData._power))
- self:SetRoleNameAndPower(_leaderData._name, _leaderData._jobICon, tostring(totalPower));
- self:SetRoleBaseAttr(_leaderData._baseAttr);
- self:SetAddAttrList(_leaderData.addList);
- self:SetRoleDetailAttr(_leaderData._detailAttr);
- self:SetRoleEquSlot(_leaderData._slots, _leaderData._jobData, 1,1, _leaderData._jobCfgId,_leaderData._name);
- self:SetRoleSkillSlot(_leaderData._skills);
- self:OnAttrOrSkillChangeToggleClick(pageToggleData.toggleDefaultIndex);
- self:CloseAllCheckMark();
- self._roleHeads[1].lua.checkMark.gameObject:SetActive(true);
- self:RefreshCardSuitBtn()
- self:RefreshSkillEquip()
- end
- function UIRoleMessageView:RefreshLeaderModel()
- local _leaderData = self.controller:GetLeaderHeadData();
- self:ChangeModel(1, _leaderData._roleId, _leaderData._viewData, _leaderData._extGoesShowData, self.roleModel.rawImage);
- end
- function UIRoleMessageView:OnPartnerHeadClick(button, params)
- local sortIndex = params[0];
- self:OnPartnerHeadClick1(sortIndex)
- end
- function UIRoleMessageView:OnPartnerHeadClick1(sortIndex)
- if sortIndex + 1 == lastIndex then return end
- curIndex = sortIndex + 1
- lastIndex = curIndex
- local _partnerData = self.controller:GetPartnerData(curIndex);
- -- self:ChangeModel(curIndex, _partnerData._configId, nil, _partnerData._extGoesShowData);
- local totalPower = tonumber(_partnerData.petFightPower) + tonumber(_partnerData._power)
- local _isSelf = self.controller:GetData()._targetTag == 0;
- if _isSelf then --自己 战力获取
- local Power = ManagerContainer.DataMgr.UserData:GetAsideFighterSvrPower(_partnerData.id,false)
- --LogError(tostring(Power))
- if nil ~= Power and -1 ~= Power then
- local PetPower = ManagerContainer.DataMgr.UserData:GetAsideFighterSvrPower(_partnerData.battlePetId,true)
- if nil ~= PetPower and -1 ~= PetPower then
- totalPower = Power + PetPower
- end
- end
- end
- self:SetRoleNameAndPower(_partnerData._name, _partnerData._jobICon,tostring(totalPower) );
- self:SetRoleBaseAttr(_partnerData._baseAttr);
- self:SetAddAttrList(_partnerData.addList);
- self:SetRoleDetailAttr(_partnerData._detailAttr);
- self:SetRoleEquSlot(_partnerData._slots, _partnerData._jobData, curIndex, _partnerData._id, _partnerData._jobCfgId);
- self:SetRoleSkillSlot(_partnerData._skills);
- self:OnAttrOrSkillChangeToggleClick(pageToggleData.toggleDefaultIndex);
- self:CloseAllCheckMark();
- self._roleHeads[curIndex].lua.checkMark.gameObject:SetActive(true);
- self:RefreshCardSuitBtn()
- self:RefreshSkillEquip()
- end
- function UIRoleMessageView:RefreshPartnerModel()
- local _partnerData = self.controller:GetPartnerData(curIndex);
- self:ChangeModel(curIndex, _partnerData._configId, nil, _partnerData._extGoesShowData);
- end
- --填充头像
- function UIRoleMessageView:SetHeads()
- --填充主角
- local _leaderData = self.controller:GetLeaderHeadData();
- --local _onLeaderHeadClick = function ()
- -- self:ChangeModel(1, _leaderData._roleId, _leaderData._viewData, self.roleModel.rawImage);
- -- self:SetRoleNameAndPower(_leaderData._name, _leaderData._jobICon, _leaderData._power);
- -- self:SetRoleBaseAttr(_leaderData._baseAttr);
- -- self:SetAddAttrList(_leaderData.addList);
- -- self:SetRoleDetailAttr(_leaderData._detailAttr);
- -- self:SetRoleEquSlot(_leaderData._slots, _leaderData._jobData, 1,1, _leaderData._jobCfgId,_leaderData._name);
- -- self:SetRoleSkillSlot(_leaderData._skills);
- -- self:CloseAllCheckMark();
- -- self._roleHeads[1].lua.checkMark.gameObject:SetActive(true);
- --end
- self:SetSingleHead(1, _leaderData, self.OnLeaderHeadClick);
- --填充队友
- for i = 1, #_data._sortPartner do --排序后的队友是从1开始的,但是真正的顺序应该是leader是1,队友的第一个的index是2
- local _logicIndex = i + 1;
- local _partnerData = self.controller:GetPartnerData(_logicIndex);
- --local _onPartnerHeadClick = function ()
- -- self:ChangeModel(_logicIndex, _partnerData._configId, _partnerData._strengthLevel);
- -- self:SetRoleNameAndPower(_partnerData._name, _partnerData._jobICon, _partnerData._power);
- -- self:SetRoleBaseAttr(_partnerData._baseAttr);
- -- self:SetAddAttrList(_partnerData.addList);
- -- self:SetRoleDetailAttr(_partnerData._detailAttr);
- -- self:SetRoleEquSlot(_partnerData._slots, _partnerData._jobData, i + 1, _partnerData._id, _partnerData._jobCfgId);
- -- self:SetRoleSkillSlot(_partnerData._skills);
- -- self:CloseAllCheckMark();
- -- self._roleHeads[_logicIndex].lua.checkMark.gameObject:SetActive(true);
- --end
- self:SetSingleHead(_logicIndex, _partnerData, self.OnPartnerHeadClick);
- end
- self:OnLeaderHeadClick(); --默认选择主角
- end
- --关闭所有的选中框
- function UIRoleMessageView:CloseAllCheckMark()
- for _, _v in ipairs(self._roleHeads) do
- _v.lua.checkMark.gameObject:SetActive(false);
- end
- end
- --设置单个头像
- function UIRoleMessageView:SetSingleHead(_index, _data, _clickCB)
- local _go = self._roleHeads[_index].go;
- _go:SetActive(_data._get);
- if _data._get then
- local _lua = self._roleHeads[_index].lua;
- _data._iconItemData = {cfgId = _data._configId, num = _data._baseLevel, strengthLevel = _data._strengthLevel, headFrameId = _data._headFrameId, isLeader = _index ==1, leaderIcon = _data._headIcon}
- RoleMessageHeadCtr:SetData(self, _lua, _data, self, _clickCB);
- end
- end
- --设置role界面的玩家名字和战力
- function UIRoleMessageView:SetRoleNameAndPower(_name, _jobIcon, _power)
- CommonUtil.LoadIcon(self, _jobIcon, function(sprite)
- self.jobIcon.image.sprite = sprite
- end);
- self.roleNameText.text.text = _name;
- self.fightPower.text.text = _power;
- end
- --设置role界面的base attribute
- function UIRoleMessageView:SetRoleBaseAttr(_baseAttrs)
- for i = 1, #_baseAttrs do
- if not self._roleBaseAttrs[i].go.gameObject.activeSelf then self._roleBaseAttrs[i].go.gameObject:SetActive(true); end
- self._roleBaseAttrs[i].name.text = I18N.SetLanguageValue(CommonUtil.HeroAttrFormatName(_baseAttrs[i].key));
- self._roleBaseAttrs[i].value.text = tostring(_baseAttrs[i].value);
- end
- end
- --设置role界面的detail attribute
- function UIRoleMessageView:SetRoleDetailAttr(_detailAttrs)
- for i = 1, #_detailAttrs do
- if not self._roleDetailAttr[i].go.gameObject.activeSelf then self._roleDetailAttr[i].go.gameObject:SetActive(true); end
- self._roleDetailAttr[i].name.text = I18N.SetLanguageValue(CommonUtil.HeroAttrFormatName(_detailAttrs[i].key));
- self._roleDetailAttr[i].value.text = "+" .. tostring(_detailAttrs[i].value)
- end
- end
- --设置附加属性
- function UIRoleMessageView:SetAddAttrList(_addAttrs)
- local _content = self.addSView.gameObject.transform;
- --清除所有的item对象
- for i = _content.childCount - 1, 1, -1 do
- local _child = _content:GetChild(i);
- CommonUtil.DestroyGOImmediate(_child.gameObject);
- end
- for _k, _v in pairs(_addAttrs) do
- local _go = CommonUtil.Instantiate(self.specialItem.gameObject, _content)
- local _text = _go.transform:Find("Text").gameObject:GetComponent(Enum.TypeInfo.Text);
- local attrId = _v[1]
- local attrValue = attrId >= Enum.HeroAttrType.RealHurt and CommonUtil.GetPreciseDecimalFloor(_v[2], 2) or math.floor(_v[2])
- local addVal = attrId >= Enum.HeroAttrType.RealHurt and CommonUtil.GetPreciseDecimalFloor(_v[3], 2) or math.floor(_v[3])
- if attrValue == 0 then
- attrValue = 0.01
- end
- local _language = "Attr_" .. tostring(attrId)
- local _languageText = I18N.T(_language)
- _text.text = _languageText .. CommonUtil.HeroAttrFormatValue(attrId, attrValue, true)
- if addVal > 0 then
- _text.text = _languageText .. CommonUtil.HeroAttrFormatValue(attrId, addVal, true)
- end
- _go.gameObject:SetActive(true);
- end
- end
- --设置role界面的装备槽位,_slotIndex是角色的index,主角是1,然后队友按照排序后的顺序,依次是2/3/4/5/6
- function UIRoleMessageView:SetRoleEquSlot(_slotDatas, _jobData, _slotIndex, _id, _jobConfigId,_name)
- for i = 1, 6 do
- local _index = i;
- local _data = nil;
- if _slotDatas[i] then
- _data = _slotDatas[i];
- _data._jobData = _jobData;
- end
- local _target = self._equipmentSlots[_index];
- EquipmentShowSlotItemCtr:SetData(self, _target.lua, _data, _index, _slotDatas, _slotIndex, _id, _jobConfigId,_name)
- end
- end
- --设置没有技能的时候的技能槽位的表现
- function UIRoleMessageView:SetNoSkillSlot(_lua)
- _lua.locked.gameObject:SetActive(false);
- _lua.noSkill.gameObject:SetActive(true);
- _lua.skillListItem.gameObject:SetActive(false);
- end
- --设置技能
- function UIRoleMessageView:SetRoleSkillSlot(_slotData)
- if not _slotData then
- for i = 1, 4 do
- self:SetNoSkillSlot(self._skillSlots[i].lua);
- end
- return;
- end
- for i = 1, #_slotData.slotSkills do
- local _skillId = _slotData.slotSkills[i].skillId;
- local _target = self._skillSlots[i];
- if _skillId and _skillId > 0 then
- _target.lua.locked.gameObject:SetActive(false);
- _target.lua.noSkill.gameObject:SetActive(false);
- _target.lua.skillListItem.gameObject:SetActive(true);
- local _level = _slotData.unlockSkillMap[_skillId].skillLv;
- local _realSkillId = _skillId * 1000 + _level;
- local _cfgData = ManagerContainer.CfgMgr:GetSkillCfgById(_skillId);
- if not _cfgData then LogError("Custom error by hudp: Can't find skill cfgData by id :" .. tostring(_realSkillId)); end
- CommonUtil.LoadIcon(self, _cfgData.Icon, function (sprite)
- _target.lua.skillItem.icon.image.sprite = sprite
- end);
- local _lvText = "Lv." .. tostring(_level);
- _target.lua.skillItem.num.text.text = _lvText;
- _target.lua.textLV.text.text = _lvText;
- _target.lua.skillName.text.text = string.formatbykey(_cfgData.Name); --TODO:等待技能名字录入多语言表
- local _skillLvCfgData = ManagerContainer.CfgMgr:GetSkillLevelCfgById(_realSkillId);
- if _skillLvCfgData.DescParam then
- if type(_skillLvCfgData.DescParam) == 'table' then
- _target.lua.desTxt.text.text = string.formatbykey(_skillLvCfgData.Desc, unpack(_skillLvCfgData.DescParam))
- else
- _target.lua.desTxt.text.text = string.formatbykey(_skillLvCfgData.Desc, _skillLvCfgData.DescParam)
- end
- else
- _target.lua.desTxt.text.text = string.formatbykey(_skillLvCfgData.Desc)
- end
- local skillTreeCfgData
- if ManagerContainer.DataMgr.UserData:IsLeaderHero(curIndex) then
- skillTreeCfgData = ManagerContainer.CfgMgr:GetSkillTreeCfgById(_skillId)
- else
- skillTreeCfgData = ManagerContainer.CfgMgr:GetParterSkillTreeCfgById(_skillId)
- end
- local quality = skillTreeCfgData and skillTreeCfgData.SkillQuality or 0
- if quality ~= 0 then
- CommonUtil.LoadIcon(self, Constant.Quality_Frame_Icons[quality], function (sprite)
- _target.lua.skillItem.frame.image.sprite = sprite
- end)
- else
- CommonUtil.LoadIcon(self, "FrameNew/frame_item_gray", function (sprite)
- _target.lua.skillItem.frame.image.sprite = sprite
- end)
- end
- else
- self:SetNoSkillSlot(_target.lua);
- end
- end
- end
- --判断技能槽位的解锁信息
- function UIRoleMessageView:CheckSlotUnlock(slotId, slotLv, _isLeader, _leaderLv)
- local skillSlotCfgId = CommonUtil.GetSkillSlotCfgIdByIdxAndLv(slotId, slotLv)
- local skillSlotCfgData = ManagerContainer.CfgMgr:GetSkillSlotCfgById(skillSlotCfgId)
- if not skillSlotCfgData then
- return false
- end
- local condition
- if _isLeader then
- condition = skillSlotCfgData.Condition
- else
- condition = skillSlotCfgData.ParterCondition
- end
- if not condition then
- return true
- end
- local item = condition[1]
- if not item then
- return true
- end
- if type(item) == 'number' then
- if #condition >= 2 then
- condition = {condition}
- else
- return true
- end
- end
- for i = 1, #condition do
- local con = condition[i]
- local typeEnum = con[1]
- local val = con[2]
- if typeEnum == 1 or typeEnum == 4 then
- local userLevel = _leaderLv
- if val > userLevel then
- return false, 'TextSkillLocked', {val}
- end
- end
- if typeEnum == 2 then
- local jobStage = self.controller:GetJobStage()
- if val > jobStage then
- return false
- end
- end
- end
- return true
- end
- --当是别人的信息的时候,设置底部按钮的名字,_isFriend——是否是好友
- function UIRoleMessageView:SetFriendButtonName(_isFriend)
- local _friendBtnName = I18N.T("AddFriends"); --默认是关注
- if _isFriend then
- _friendBtnName = I18N.T("RemoveFriends"); --取关
- end
- self.makeFriendButton.text.text.text = _friendBtnName;
- end
- --当是别人的信息的时候,设置底部按钮的名字,_isBlack——是否是黑名单中的人
- function UIRoleMessageView:SetBlackButtonName(_isBlack)
- local _blackBtnName = I18N.T("AddBlackList"); --默认显示屏蔽
- if _isBlack then
- _blackBtnName = I18N.T("RemoveBlackList"); --恢复
- end
- self.shieldButton.text.text.text = _blackBtnName;
- self.icon1:SetActive(not _isBlack)
- self.icon2:SetActive(_isBlack)
- end
- ---填充对象end
- ---控制对象start
- --创建头像
- function UIRoleMessageView:CreateRoleHead()
- if self._roleHeads then return; end --创建过了
- self._roleHeads = {}
- self.roleMessageHeadOriginal.gameObject:SetActive(false); --隐藏素体
- for i = 1, 6 do
- local _go = CommonUtil.Instantiate(self.roleMessageHeadOriginal.gameObject, self.roleTopRoot.gameObject.transform);
- local _lua = CommonUtil.BindGridViewItem2Lua(self, _roleHeadName, _go);
- table.insert(self._roleHeads, {
- ["go"] = _go,
- ["lua"] = _lua,
- })
- end
- end
- --创建详细属性
- function UIRoleMessageView:CreateDetailAttributeItem()
- if self._roleDetailAttr then return; end
- self._roleDetailAttr = {};
- self.originalAttr.gameObject:SetActive(false);
- for i = 1, 14 do
- local _go = CommonUtil.Instantiate(self.originalAttr.gameObject, self.baseSView.transform);
- local _nameText = _go.transform:Find("Text").gameObject:GetComponent("Text");
- local _valueText = _go.transform:Find("Number").gameObject:GetComponent("Text");
- table.insert(self._roleDetailAttr, {
- ["go"] = _go;
- ["name"] = _nameText,
- ["value"] = _valueText,
- })
- end
- end
- --创建基础属性
- function UIRoleMessageView:CreateBaseAttributesItem()
- if self._roleBaseAttrs then return; end --创建过了
- self._roleBaseAttrs = {};
- self.originalAttribute.gameObject:SetActive(false); --隐藏素体
- for i = 1, 10 do
- local _go = CommonUtil.Instantiate(self.originalAttribute, self.attributes.gameObject.transform);
- local _nameText = _go.transform:Find("AttributeNameText").gameObject:GetComponent("Text");
- local _valueText = _go.transform:Find("AttributeValueText").gameObject:GetComponent("Text");
- table.insert(self._roleBaseAttrs, {
- ["go"] = _go;
- ["name"] = _nameText,
- ["value"] = _valueText,
- })
- end
- end
- --创建角色的装备栏
- function UIRoleMessageView:CreateEquipSlots()
- self:CreateEquipSlotNames();
- if self._equipmentSlots then return; end
- self._equipmentSlots = {};
- self.equipmentShowSlotItem.gameObject:SetActive(false);
- for i = 1, 7 do
- local _parent = self["slot" .. tostring(i)].gameObject.transform;
- local _go = CommonUtil.Instantiate(self.equipmentShowSlotItem.gameObject, _parent);
- local _lua = CommonUtil.BindGridViewItem2Lua(self, _equipmentSlotName, _go);
- if i < 7 then
- CommonUtil.LoadIcon(self, self._equipmentSlotName[i], function (sprite)
- _lua.position.image.sprite = sprite
- end)
- end
- table.insert(self._equipmentSlots, {
- ["go"] = _go,
- ["lua"] = _lua,
- });
- _go.gameObject:SetActive(true);
- end
- end
- --创建技能
- function UIRoleMessageView:CreateSkillSlots()
- if self._skillSlots then return; end
- self._skillSlots = {};
- for i = 1, 4 do
- local _lua = self["skillSlot_" .. tostring(i)];
- table.insert(self._skillSlots, {["lua"] = _lua,});
- end
- end
- --控制属性显示详细界面还是基础界面
- function UIRoleMessageView:SetAttributeState(_showBase)
- self.baseAttRoot.gameObject:SetActive(_showBase);
- self.detailAttRoot.gameObject:SetActive(not _showBase);
- end
- --控制希纳是属性还是显示技能
- function UIRoleMessageView:SetShowAttrOrSkill(_showAttr)
- self.attributeRoot.gameObject:SetActive(_showAttr);
- self.skillRoot.gameObject:SetActive(not _showAttr);
- if _showAttr then
- self:SetAttributeState(true);
- end
- end
- ---控制对象end
- ----角色页面end----
- function UIRoleMessageView:OnGiftClick()
- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIExchangeCode)
- end
- ----宠物页面start----
- function UIRoleMessageView:RefreshPetInfo()
- local petData
- local heroData
- if curIndex == 1 then
- --同时点击头像刷新角色属性
- local herodata = self.controller:GetLeaderHeadData()
- self:SetRoleBaseAttr(herodata._baseAttr)
- petData = self.controller:GetPetDataByHeroId(1)
- heroData = self.controller:GetLeaderHeadData()
- else
- local partnerdata = self.controller:GetPartnerData(curIndex)
- self:SetRoleBaseAttr(partnerdata._baseAttr)
- heroData = self.controller:GetPartnerData(curIndex);
- petData = self.controller:GetPetDataByHeroId(heroData._id)
- end
- if not petData then
- self.noPet:SetActive(true)
- self.petRoot:SetActive(false)
- return
- else
- self.noPet:SetActive(false)
- self.petRoot:SetActive(true)
- end
- local power = self.controller:GetPetFightPowerByHeroId(heroData._id)
- self.petfightPowerText.text.text = power == 0 and "-----" or tostring(power)
- self:RefreshPetModel(petData)
- self:RefreshPetTop(petData)
- self:RefreshPetSkills(petData)
- self:RefreshPetBaseAttrs(petData)
- end
- function UIRoleMessageView:RefreshPetModel(petData)
- local petCfgData = ManagerContainer.CfgMgr:GetPetDataById(petData.cfgId)
- local camPos = petCfgData.CamPos or {-0.116, 2.28, 3.89}
- local camRot = petCfgData.CamRot or {12.174, 177.372, 0.085}
- if not previewSystem then
- previewSystem = PreviewSystem:new("RoleMessage", 1024, 1024)
- end
- previewSystem:SetView(Vector3(camPos[1], camPos[2], camPos[3]), Quaternion.Euler(camRot[1], camRot[2], camRot[3]))
- self:RemoveCurModel()
- self:RefreshPetView(petData)
- self.petModel.rawImage.texture = previewSystem:GetRenderTexture()
- end
- function UIRoleMessageView:RefreshPetView(petData)
- if petData == nil then return nil end
- return petViewSystem:RefreshView(Enum.RoleInEnvType.PetLvUp, petData.cfgId, petData.extGoesShowData, self, self.LoadModelCB)
- end
- function UIRoleMessageView:RefreshPetTop(petData)
- local petCfgData = ManagerContainer.CfgMgr:GetPetDataById(petData.cfgId)
- if not petCfgData then
- return
- end
- local natureId = petCfgData.NatureType
- local natureCfgData = ManagerContainer.CfgMgr:GetNatureDataById(natureId)
- local icon = natureCfgData.Icon
- CommonUtil.LoadIcon(self, icon, function (sprite)
- self.petJobIcon.image.sprite = sprite
- end, self, "petJobIcon")
- CommonUtil.LoadIcon(self, Constant.Quality_CardType_Icons[petData.quality], function (sprite)
- self.petLabelIcon.image.sprite = sprite
- end, self, "labelIcon")
- self.petNameText.text.text = petData.advanceLevel > 0 and I18N.T(petCfgData.Name).."+"..petData.advanceLevel or I18N.T(petCfgData.Name)
- self.petLv.text.text = petData.level
- local multiply = petCfgData.ConversionRate*0.0001
- self.btnPetAttrs.text.uILocalizeScript:SetContentAndValues("DscAttrToRole", {multiply*100})
- local petStarIcon, textContent = CommonUtil.GetPetSkillStarIconAndColor(petData.skillList)
- CommonUtil.LoadIcon(self, petStarIcon, function (sprite)
- self.advence.image.sprite = sprite
- end)
- self.advenceLv.text.text = textContent
- end
- function UIRoleMessageView:RefreshPetSkills(petData)
- for i = 1, 3 do
- local data = petData.skillList[i]
- local item = self.skillView["skillItem"..i]
- item:SetActive(data ~= nil)
- if data then
- local skillCfgData = ManagerContainer.CfgMgr:GetSkillCfgById(data.cfgId)
- if skillCfgData then
- local itemlua = CommonUtil.BindGridViewItem2Lua(self, 'SkillItem', item.gameObject)
- itemlua.icon.image.sprite = nil
- if skillCfgData.Icon then
- CommonUtil.LoadIcon(self, skillCfgData.Icon, function (sprite)
- itemlua.icon.image.sprite = sprite
- end)
- itemlua.icon.button.enabled = true
- self.uiBase:AddButtonUniqueEventListener(itemlua.icon.button, self, self.OnSkillClick, data)
- end
- itemlua.num.text.text = I18N.T('Lv').. tostring(data.level)
- end
- end
- end
- end
- function UIRoleMessageView:OnSkillClick(button, params)
- local data = params[0]
- local data = {tipsType = Enum.UITipsType.Skill, cfgId = data.cfgId, num = data.level}
- ManagerContainer.LuaUIMgr:OpenTips(data)
- end
- function UIRoleMessageView:RefreshPetBaseAttrs(petData)
- if not self.petBaseAttrsList then
- self.petBaseAttrsList = {};
- self.originalAttribute.gameObject:SetActive(false); --隐藏素体
- for i = 1, 10 do
- local _go = CommonUtil.Instantiate(self.originalAttribute, self.petBaseAttRoot.attributes.gameObject.transform);
- local _nameText = _go.transform:Find("AttributeNameText").gameObject:GetComponent("Text");
- local _valueText = _go.transform:Find("AttributeValueText").gameObject:GetComponent("Text");
- table.insert(self.petBaseAttrsList, {
- ["go"] = _go;
- ["name"] = _nameText,
- ["value"] = _valueText,
- })
- end
- end
- attrsShowState = false
- self.petBaseAttRoot:SetActive(not attrsShowState)
- self.petDetailAttRoot:SetActive(attrsShowState)
- local petActorData = self.controller:GetPetActorDataByPetId(petData.id)
- if not petActorData then
- return
- end
- self.SyncCbId = ManagerContainer.LuaActorAttributeMgr:SyncServerActorData(petActorData,function()
- self:RefreshPetDetailAttrs()
- self:RefreshAttr()
- end
- )
- local attrKeys = {7,8,9,10,11,12,13,14,15,16}
- for i = 1, #attrKeys do
- local key = attrKeys[i]
- local val = petActorData:GetFinalAttr(key)
- val = SDataUtil.InvConvert(val)
- self.petBaseAttrsList[i].name.text = I18N.T("Attr_" .. key)
- val = key > 21 and CommonUtil.GetPreciseDecimal(val, 3) or math.floor(val)
- self.petBaseAttrsList[i].value.text = val
- self.petBaseAttrsList[i].go:SetActive(true)
- end
- self:RefreshPetDetailAttrs()
- end
- function UIRoleMessageView:RefreshPetDetailAttrs()
- local petData
- if curIndex == 1 then
- petData = self.controller:GetPetDataByHeroId(1)
- else
- local _partnerData = self.controller:GetPartnerData(curIndex);
- petData = self.controller:GetPetDataByHeroId(_partnerData._id)
- end
- if not petData then
- return
- end
- local petActorData = self.controller:GetPetActorDataByPetId(petData.id)
- if not petActorData then
- return
- end
- self.baseList = {}
- self.addList = {}
- for k,v in pairs(attrSortList) do
- if v >= Enum.HeroAttrType.Life and v <= Enum.HeroAttrType.CastAcceleration then
- local num = petActorData:GetFinalAttr(v)
- if SDataUtil.IsGreater(num, 0) then
- self.baseList[#self.baseList + 1] = {v, num, 0}
- end
- else
- if v >= Enum.HeroAttrType.Nature_None_Damage_Percent then
- local num = petActorData:GetFinalAttr(v)
- if SDataUtil.IsGreater(num, 0) then
- self.addList[#self.addList + 1] = {v, num, 0}
- end
- end
- end
- end
- end
- function UIRoleMessageView:RefreshAttr()
- if self.baseView.loopVerticalScrollRect.totalCount ~= #self.baseList then
- self.baseView.loopVerticalScrollRect:ClearCells()
- CommonUtil.LoopGridViewEleCreateNew(self, self.baseView.loopVerticalScrollRect, nil, self.baseList, 0, nil, function (itemLua, idx)
- local data = self.baseList[idx + 1]
- local key = data[1]
- local val = SDataUtil.InvConvert(data[2])
- itemLua.text.text.text = I18N.T("Attr_" .. key)
- itemLua.number.text.text = math.floor(val)
- end)
- else
- self.baseView.loopVerticalScrollRect:RefreshCellsData()
- end
- if self.petAddView.loopVerticalScrollRect.totalCount ~= #self.addList then
- self.petAddView.loopVerticalScrollRect:ClearCells()
- CommonUtil.LoopGridViewEleCreateNew(self, self.petAddView.loopVerticalScrollRect, nil, self.addList, 0, nil, function (itemLua, idx)
- local data = self.addList[idx + 1]
- local key = data[1]
- local val = SDataUtil.InvConvert(data[2])
- local val1 = key > 21 and CommonUtil.GetPreciseDecimalFloor(val, 3) or math.floor(val)
- if val1 <= 0.001 then
- val1 = 0.001
- end
- itemLua.text.text.text = I18N.T("Attr_" .. key)
- itemLua.number.text.text = CommonUtil.HeroAttrFormatValue(key, val1, true)
- end)
- else
- self.petAddView.loopVerticalScrollRect:RefreshCellsData()
- end
- end
- function UIRoleMessageView:OnClickPetDetailBtn()
- attrsShowState = true
- self.petBaseAttRoot:SetActive(not attrsShowState)
- self.petDetailAttRoot:SetActive(attrsShowState)
- self:RefreshAttr()
- self.petAddView:SetActive(#self.addList > 0)
- self.petNone:SetActive(#self.addList == 0)
- end
- function UIRoleMessageView:OnClickPetBaseBtn()
- attrsShowState = false
- self.petBaseAttRoot:SetActive(not attrsShowState)
- self.petDetailAttRoot:SetActive(attrsShowState)
- end
- function UIRoleMessageView:OnPetAttrsClick(button, params)
- local petData
- if curIndex == 1 then
- petData = self.controller:GetPetDataByHeroId(1)
- else
- local _partnerData = self.controller:GetPartnerData(curIndex);
- petData = self.controller:GetPetDataByHeroId(_partnerData._id)
- end
- if not petData then
- return
- end
- local data = {id = petData.id, cfgId = petData.cfgId, type = 2, baseList = self.baseList, addList = self.addList}
- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPetAttribute, data)
- end
- -------宠物页面end----
- function UIRoleMessageView:RefreshCardSuitBtn()
- local id = 1
- if curIndex > 1 then
- local _partnerData = self.controller:GetPartnerData(curIndex)
- id = _partnerData._id
- end
- local data = self.controller:GetCardBlessData(id)
- local curLv = 0
- if data then
- curLv = data.curLv
- end
- if data and not data.state then
- curLv = curLv - 1
- end
- local allCfgDatas = ManagerContainer.CfgMgr:GetAllCardSuitNewCfg()
- self.cardBlessLv.lv0:SetActive(curLv == 0)
- for i = 1, #allCfgDatas do
- if self.cardBlessLv["lv"..i] then
- self.cardBlessLv["lv"..i]:SetActive(curLv == i)
- end
- end
- end
- function UIRoleMessageView:OnCardBlessClick()
- local id = 1
- if curIndex > 1 then
- local _partnerData = self.controller:GetPartnerData(curIndex)
- id = _partnerData._id
- end
- local data = self.controller:GetCardBlessData(id)
- if not data then
- return
- end
- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UICardBlessTips, data)
- end
- function UIRoleMessageView:RefreshSkillEquip()
- local skillEquipData
- if curIndex == 1 then
- skillEquipData = self.controller:GetSkillEquipData(1)
- else
- local _partnerData = self.controller:GetPartnerData(curIndex);
- skillEquipData = self.controller:GetSkillEquipData(_partnerData._id)
- end
- local slotlua = self._equipmentSlots[7].lua
- slotlua.iconItem:SetActive(skillEquipData ~= nil and skillEquipData.id > 0)
- if not skillEquipData then
- return
- end
-
- if skillEquipData and skillEquipData.cfgId > 0 then
- IconItemCtr:SetData(self, slotlua.iconItem, skillEquipData, Enum.ItemIEnterType.HeroEquip)
- self.uiBase:AddButtonUniqueEventListener(slotlua.tipButton.button, self, self.OnSkillEquipClick)
- end
- end
- function UIRoleMessageView:OnSkillEquipClick(button, params)
- local curSkillEquipData
- if curIndex == 1 then
- curSkillEquipData = self.controller:GetSkillEquipData(1)
- else
- local _partnerData = self.controller:GetPartnerData(curIndex);
- curSkillEquipData = self.controller:GetSkillEquipData(_partnerData._id)
- end
- if not curSkillEquipData or curSkillEquipData.id == 0 then
- return
- end
- local heroData
- if curIndex == 1 then
- heroData = self.controller:GetLeaderHeadData()
- else
- heroData = self.controller:GetPartnerData(curIndex);
- end
- local jobType = heroData._jobData.JobType
- local data = {{cfgId = curSkillEquipData.cfgId, jobType = jobType, logicData = curSkillEquipData, heroId = heroData._id, heroCfgId = heroData._jobCfgId, nickname = heroData._name}, Enum.ItemIEnterType.Bag, Enum.UIPageName.UIBag}
- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIArtifactTips, data)
- end
- return UIRoleMessageView
|