UIMainView.lua 42 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138
  1. local UIMainView = require("UIMain/UIMainView_Generate")
  2. local MainTopView = require("UIMain/MainTopView")
  3. local MainBottomView = require("UIMain/MainBottomView")
  4. -- local GotAnimCtr = require("UIPOPGot/UIPOPGotAnimsCtr")
  5. local DOTween = DG.Tweening.DOTween
  6. local LoopType = DG.Tweening.LoopType
  7. local curTopResType = Enum.ItemType.Diamond
  8. local _curMainButtonType = Enum.MainViewPageType.Adventure
  9. local mainTopView
  10. local mainBottomView
  11. --- 慧勇需求 经验条,最小不能小于这个值,哪怕为真实值为0
  12. local BarMinValue = 0.02
  13. local AddEffectBarSpeed = 0.5
  14. local bossBattleStatus = false
  15. function UIMainView:OnAwake(data)
  16. self.controller = require("UIMain/UIMainCtr"):new()
  17. self.controller:Init(self)
  18. self.controller:SetData(data)
  19. end
  20. function UIMainView:AddEventListener()
  21. -- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.REFRESH_COIN_AND_DIAMOND, function()
  22. -- self:RefreshCoins()
  23. -- self:RefreshLv()
  24. -- end)
  25. -- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.REFRESH_ROLE_LV, function()
  26. -- self:RefreshLv()
  27. -- end)
  28. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.ROLE_EXP_CHANGED, self, self.ShowAddRoleExpEffect)
  29. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.JOB_EXP_CHANGED, self, self.ShowAddJobExpEffect)
  30. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.COIN_CHANGED, self, self.ShowAddCoinEffect)
  31. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.DIAMOND_CHANGED, self, self.ShowAddDiamondEffect)
  32. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.ROLE_LV_CHANGED, self, self.OnRefreshRoleLv)
  33. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.JOB_LV_CHANGED, self, self.OnRefreshJobLv)
  34. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.MAIN_VIEW_SET_ATTR_BTN, self, self.CloseBtnBase)
  35. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.MAIN_VIEW_UP_SKILL_BTN, self, self.CloseBtnJob)
  36. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_HANG_TIME, self, self.RefreshRestTime)
  37. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.NICK_NAME_CREATED, self, self.RefreshUserNickName)
  38. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.USER_HEADPROTRAIT_CHANGED, self, self.RefreshHead)
  39. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.MAIN_CHANGE_BUTTONS_STATE,self,self.SetActiveButtonsState)
  40. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.MAIN_UI_ROLE_REDPOINT_NOTICE, self, self.RoleRedPointNotice)
  41. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.RED_POINT_NOTICE, self, self.RoleRedPointNotice)
  42. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.UI_FORCE_GUIDE_OVER, self, self.LoggedinForceGuideOver)
  43. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.UIMAINVIEW_CHANGE_NOTICE, function(pageType, data)
  44. self:ChangePageMsg(pageType, data)
  45. end)
  46. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.DISPLAY_MAIN_TOP, function(state, order)
  47. if mainTopView then
  48. mainTopView:Change(state, order)
  49. end
  50. end)
  51. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.DISPLAY_MAIN_BOTTOM, function(state, order)
  52. if mainBottomView then
  53. mainBottomView:Change(state, order)
  54. end
  55. end)
  56. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.LIMIT_RECHARGE_OPEN_NTF, function(state, order)
  57. if mainTopView then
  58. mainTopView:OpenLimitRecharge()
  59. end
  60. end)
  61. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.REFRESH_COIN_AND_JOBEXP, function()
  62. self:RefreshDiamond()
  63. end)
  64. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_CRUISE_CHANGED, function()
  65. if curTopResType ~= Enum.ItemType.SkillExp then return end
  66. self:RefreshDiamond()
  67. end)
  68. -- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.GOT_ITEM_ANIM_END_NOTIFY, function(type)
  69. -- LogError("got anim end "..type)
  70. -- local GotAnimCtr = require("UIPOPGot/UIPOPGotAnimsCtr")
  71. -- local result = GotAnimCtr:IsInSameTypeAnim(type)
  72. -- LogError(result)
  73. -- end)
  74. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.GOT_ITEM_ANIM_END_NOTIFY, function(type, num)
  75. end)
  76. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.UI_MAIN_TOP_RES_TYPE, function(resType)
  77. --if Enum.TopResMap[id] == nil then
  78. -- id = Enum.UIPageName.UIMain
  79. --end
  80. --if id == Enum.UIPageName.UIRoleMain1 then
  81. -- if not param then
  82. -- id = Enum.UIPageName.UIRoleMain1
  83. -- else
  84. -- id = Enum.UIPageName.UIMain
  85. -- end
  86. --end
  87. curTopResType = resType
  88. self:RefreshDiamond()
  89. end)
  90. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.FIGHTPOWER_REFRESH, function()
  91. self:RefreshFightPower()
  92. end)
  93. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.BTN_BASE_DISPLAY, function(result)
  94. if result and bossBattleStatus then return end
  95. self:DisplayBtnBase(result)
  96. end)
  97. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.BTN_JOB_DISPLAY, function(result)
  98. if result and bossBattleStatus then return end
  99. self:DisplayBtnJob(result)
  100. end)
  101. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.BOSS_BATTLE_STATUS, function(result)
  102. bossBattleStatus = result
  103. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.DISPLAY_MAIN_TOP,not result)
  104. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.STAGEGOAL_DISPLAY,not result)
  105. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.BTN_BASE_DISPLAY,not result)
  106. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.BTN_JOB_DISPLAY,not result)
  107. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.DISPLAY_MAIN_BOTTOM, not result)
  108. --if result then
  109. -- ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.DISPLAY_MAIN_BOTTOM, result)
  110. --end
  111. end)
  112. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.SEASON_OPEN_NTF, function(competitionId, _isRefresh)
  113. self:RefreshSeasonInfo()
  114. if not ManagerContainer.LuaUIMgr:HasOpenPage(Enum.UIPageName.UISeason) and not _isRefresh then
  115. local curUIId = ManagerContainer.LuaUIMgr:GetCurUIId()
  116. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UISeason, competitionId, curUIId)
  117. end
  118. end)
  119. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.GM_SCROLL_NOTICE, self, self.InsertGMNotice)
  120. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.ROLE_JOB_CHANGE_SUCCESS, self, self.RefreshJobIcon)
  121. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_Used_New_HeadFrame, self, self.ChangeHeadFrame)
  122. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.SEASON_NOTICE_CLOSE_NTF, self, self.RefreshSeasonNoticeState)
  123. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.SEASON_RANK_CHANGED_NTF, self, self.OnSeasonRankChanged)
  124. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_Activity_FirstRecharge_Change, self, self.RefreshFirstRechargeBtn)
  125. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.RANK_ACTIVITY_DISPLAY_NTF, self, self.RefreshRankActivityEnter)
  126. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.SEASON_MINUTE_UPDATE, self, self.RefreshSeasonInfo)
  127. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.QUESTION_REWARD_SUCCESS, self, self.RefreshQuestionRewardBtn)
  128. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.AIRSHIP_ACTIVITY_DISPLAY_NTF, self, self.RefreshAirShipActivityEnter)
  129. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.GUILD_WAR_OPEN_STATE_CHANGED, self, self.RefreshGuildWarBtn)
  130. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.COMBINE_SERVER_TIME_CHANGED, self, self.OnCombineServerTimeChanged)
  131. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.COMBINE_SERVER_CONTENT_CHANGED, self, self.OnCombineServerContentChanged)
  132. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.VIP_LV_CHANGED, self, self.OnVipLvChanged)
  133. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.PAY_TOTAL_RECHARGE_CHANGED, self, self.RefreshBoliShopState)
  134. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.BT_FIRST_RECHARGE_REWARD_CHANGED, self, self.RefreshFirstRechargeBtn)
  135. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.BT_HUNDRED_RECHARGE_REWARD_CHANGED, self, self.RefreshFirstRechargeBtn)
  136. end
  137. function UIMainView:FillContent(data, uiBase)
  138. self.uiBase = uiBase
  139. local gameObject = self.uiBase:GetRoot()
  140. if gameObject ~= nil then
  141. self.gameObject = gameObject
  142. self.transform = gameObject.transform
  143. end
  144. self:InitGenerate(self.transform, data)
  145. self:Init()
  146. self:DailySignTrigger()
  147. self.btnGM:SetActive(false)
  148. end
  149. function UIMainView:Init()
  150. curTopResType = self.uiData.top_res_id
  151. ManagerContainer.DataMgr.TaskDataNew:SetMainButton(Enum.MainViewPageType.Adventure);
  152. if mainTopView == nil then
  153. mainTopView = MainTopView.new()
  154. mainTopView:Init(self.topView, self.topView.canvas, self.topView.topRoot.animator, self.uiBase.SortingOrder)
  155. end
  156. if mainBottomView == nil then
  157. mainBottomView = MainBottomView.new()
  158. mainBottomView:Init(self.bottomView, self.bottomView.canvas, self.bottomView.mainRoot.animator, self.uiBase.SortingOrder)
  159. end
  160. --ManagerContainer.ResMgr:InitCommonMats()
  161. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPrivateChatBtn)
  162. self:Refresh()
  163. self:RedPointRefresh()
  164. if mainTopView then
  165. mainTopView:RefreshTopBtns(true)
  166. end
  167. self:RefreshFirstRechargeBtn()
  168. self:RefreshGuildWarBtn()
  169. --统一刷新数据
  170. self:RefreshData()
  171. self:RefreshBoliShopState()
  172. end
  173. function UIMainView:RefreshBoliShopState()
  174. -- if Constant.OpenPay then
  175. -- local curVal = ManagerContainer.PayMgr:GetTotalRecharge()
  176. -- local openCon = GlobalConfig.Instance:GetConfigIntValue(360) or 50
  177. -- self.topView.topRoot.BtnBoliShop:SetActive(curVal >= openCon)
  178. -- else
  179. -- self.topView.topRoot.BtnBoliShop:SetActive(false)
  180. -- end
  181. end
  182. function UIMainView:DailySignTrigger()
  183. local _canSignPlay = ManagerContainer.DataMgr.SignData:CanTodaySign()
  184. if _canSignPlay then
  185. --local isUnLock = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(55);
  186. --if isUnLock then
  187. -- ManagerContainer.LuaUIMgr:OpenInputMask(10000)
  188. --end
  189. self.canSignPlay = true
  190. self.delayTimer = FrameTimer.New(function()
  191. self.loggedinNeedForceGuide = ManagerContainer.ForceGuideMgr:LoggedinCheckForceGuide()
  192. if not self.loggedinNeedForceGuide and not ManagerContainer.StoryMgr:IsStorying() and not ManagerContainer.StoryMgr:HasPreStoryChapter() then
  193. self:LoggedinForceGuideOver()
  194. end
  195. local unlockState = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(10)
  196. self:RefreshSeasonNoticeState(unlockState)
  197. end, 1)
  198. self.delayTimer:Start()
  199. else
  200. self.loggedinNeedForceGuide = ManagerContainer.ForceGuideMgr:LoggedinCheckForceGuide()
  201. if not self.loggedinNeedForceGuide and not ManagerContainer.StoryMgr:IsStorying() and not ManagerContainer.StoryMgr:HasPreStoryChapter() then
  202. self:LoggedinForceGuideOver()
  203. end
  204. end
  205. end
  206. function UIMainView:RefreshSeasonNoticeState(state)
  207. self.seasonNotice:SetActive(state)
  208. end
  209. function UIMainView:RefreshData()
  210. self.dataDelayTimer = FrameTimer.New(function()
  211. --赛季最新数据查询
  212. ManagerContainer.DataMgr.CompetitionData:SetRefreshSeasonState(true)
  213. ManagerContainer.DataMgr.CompetitionData:QueryCurCompetitionReq(true)
  214. ManagerContainer.DataMgr.RankActivitiesMgr:CheckRancActivityOpenTime()
  215. ManagerContainer.DataMgr.RuneShopDataMgr:CheckAirShipActivityOpenTime()
  216. --刷新契约红点
  217. ManagerContainer.RedPointMgr.PetRPCtr:RefreshTotalQiyueRPState()
  218. end, 1)
  219. self.dataDelayTimer:Start()
  220. end
  221. function UIMainView:OnSeasonRankChanged(type)
  222. self.seasonUp:SetActive(type == 1)
  223. self.seasonDown:SetActive(type == 2)
  224. end
  225. function UIMainView:RedPointRefresh()
  226. --宠物红点刷新
  227. ManagerContainer.DataMgr.PetDataMgr:RefreshAllPetRPState()
  228. end
  229. function UIMainView:Refresh()
  230. if ManagerContainer.FSMMgr:IsBattleState() then
  231. self.mainPageId = Enum.UIPageName.UIBattle
  232. self.mainBtn.animator:Play("AdventureActived");
  233. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIBattle)
  234. elseif ManagerContainer.FSMMgr:IsDojoState() then
  235. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIDojo2D)
  236. end
  237. self.btnBase:SetActive(ManagerContainer.PlayerPrefsMgr:GetBoolean(Constant.ROLE_LV_STATUS_SAVE_KEY, false))
  238. self.btnJob:SetActive(ManagerContainer.PlayerPrefsMgr:GetBoolean(Constant.JOB_LV_STATUS_SAVE_KEY, false))
  239. self:RefreshUserNickName()
  240. --[[
  241. self:RefreshUserHeadProtrait()
  242. self:RefreshJobIcon()
  243. ]]--
  244. self:RefreshHead();
  245. self:RefreshFightPower()
  246. self:RefreshLv()
  247. self:RefreshRoleExp()
  248. self:RefreshJobLv()
  249. self:RefreshJobExp()
  250. self:RefreshCoins()
  251. self:RefreshDiamond()
  252. self:RefreshVipView()
  253. self:RefreshSeasonInfo()
  254. self:RoleRedPointNotice()
  255. self:InsertGMNotice()
  256. self:StartLimitTimeItem()
  257. end
  258. function UIMainView:StartLimitTimeItem()
  259. ManagerContainer.DataMgr.BagData:StartLimitTimeItemDelete()
  260. end
  261. function UIMainView:RefreshSeasonInfo()
  262. local seasonData = ManagerContainer.DataMgr.CompetitionData:GetCurCompetitionData()
  263. if seasonData == nil then return end
  264. local stage,nextStageTime = ManagerContainer.DataMgr.CompetitionData:GetCurStageAndNextTime()
  265. local curCompetitionId = ManagerContainer.DataMgr.CompetitionData:GetCurCompetitionId()
  266. local competitionCfgDatas = ManagerContainer.CfgMgr:GetCompetitionDatasByType(curCompetitionId)
  267. if not competitionCfgDatas or #competitionCfgDatas == 0 then
  268. return
  269. end
  270. self.SeasonName.text.text = I18N.T(competitionCfgDatas[1].CompetitionName)
  271. if stage == 1 then
  272. self.remainDay.text.text = I18N.T("DscSeasonResult13")
  273. self.remainDay1.text.text = I18N.T("DscSeasonResult13")
  274. elseif stage == 2 then
  275. local endTime = nextStageTime
  276. if endTime == 0 then
  277. self.remainDay.text.text = I18N.T("DscSeasonResult6")
  278. self.remainDay1.text.text = I18N.T("DscSeasonResult6")
  279. else
  280. local remainS = ManagerContainer.LuaTimerMgr:GetRemainSecondsWithUInt64(endTime, false)
  281. if remainS > 0 then
  282. if remainS <= 60 then
  283. self.remainDay.text.text = I18N.T("LessOneMinu")
  284. self.remainDay1.text.text = I18N.T("LessOneMinu")
  285. else
  286. local time = DateTimeUtil.convertSeconds2TimeStr1(remainS, true, false)
  287. self.remainDay.text.text = time
  288. self.remainDay1.text.text = time
  289. end
  290. else
  291. self.remainDay.text.text = I18N.T("DscSeasonResult6")
  292. self.remainDay1.text.text = I18N.T("DscSeasonResult6")
  293. end
  294. end
  295. elseif stage == 3 then
  296. self.remainDay.text.text = I18N.T("DscSeasonResult6")
  297. self.remainDay1.text.text = I18N.T("DscSeasonResult6")
  298. end
  299. end
  300. function UIMainView:RefreshUserNickName()
  301. self.textName.text.text = ManagerContainer.DataMgr.UserData:GetUserNickname()
  302. end
  303. function UIMainView:InsertGMNotice()
  304. local notice = ManagerContainer.DataMgr.GMNoticeData:GetCurNotice()
  305. if mainTopView and notice then
  306. mainTopView:InsertGMNotice(notice)
  307. end
  308. end
  309. function UIMainView:ChangeHeadFrame(headFrameIcon)
  310. CommonUtil.LoadIcon(self, headFrameIcon, function (sprite)
  311. self.headItem.frame.image.sprite = sprite
  312. end)
  313. end
  314. function UIMainView:RefreshHead()
  315. local curRoleLv = ManagerContainer.DataMgr.UserData:GetRoleLv()
  316. local jobCfgId = ManagerContainer.DataMgr.UserData:GetJobCfgId()
  317. local jobCfgData = ManagerContainer.CfgMgr:GetJobDataById(jobCfgId)
  318. local headIcon = ManagerContainer.DataMgr.UserData:GetUserHeadIcon()
  319. local _fakerData = {Level = curRoleLv, ProfessionIcon = jobCfgData.JobIcon, HeadIcon = headIcon, IsHero = true};
  320. local _headFrameId = ManagerContainer.DataMgr.UserData:GetHeadFrameId()
  321. CommonUtil.SetPlayerHeadAndFrame(self, self.headItem, _fakerData,false, _headFrameId, self, self.OnClickHead);
  322. if not jobCfgData or jobCfgData.JobStage >= 3 then
  323. self.expBarJob:SetActive(false)
  324. else
  325. self.expBarJob:SetActive(true)
  326. end
  327. end
  328. function UIMainView:RefreshJobIcon()
  329. local jobCfgId = ManagerContainer.DataMgr.UserData:GetJobCfgId()
  330. local jobCfgData = ManagerContainer.CfgMgr:GetJobDataById(jobCfgId)
  331. CommonUtil.LoadIcon(self, jobCfgData.JobIcon, function (sprite)
  332. self.headItem.jobIcon.image.sprite = sprite
  333. end, self, 'jobIconIdx')
  334. end
  335. function UIMainView:RefreshFightPower()
  336. self.fightpower.text.text = ManagerContainer.DataMgr.UserData:GetTotalFightPower()
  337. end
  338. function UIMainView:RoleRedPointNotice()
  339. --local RPStatus = ManagerContainer.RedPointMgr.HeroRPCtr:GetUIMainRPStatus()
  340. --RedPointItemCtr:SetData(self, self.redPointItem, RPStatus, Enum.HeroRPSource.Main)
  341. end
  342. function UIMainView:RefreshLv()
  343. local curRoleLv = ManagerContainer.DataMgr.UserData:GetRoleLv()
  344. self.expBarBase.textLv.text.text = CommonUtil.StringConcat("Lv.", curRoleLv)
  345. self.curRoleLv = curRoleLv
  346. self.headItem.levelText.text.text = tostring(curRoleLv);
  347. end
  348. function UIMainView:RefreshRoleExp()
  349. local roleExp = ManagerContainer.DataMgr.UserData:GetRoleExp()
  350. local curBaseMaxExp = ManagerContainer.DataMgr.UserData:GetHeroCurBaseMaxExp()
  351. self.expBarBase.textTotal.text.text = CommonUtil.StringConcat(CommonUtil.FormatNumber(roleExp), "/", CommonUtil.FormatNumber(curBaseMaxExp))
  352. local barPercent = curBaseMaxExp == 0 and 0 or roleExp/curBaseMaxExp
  353. self.expBarBase.slider.slider.value = Mathf.Max(BarMinValue, barPercent)
  354. self.curRoleExp = roleExp
  355. self.expBarBase.slider.effect:SetActive(false)
  356. --self:RefreshRestTime()
  357. end
  358. function UIMainView:RefreshRestTime(awardTotalTime)
  359. self.controller:SetAwardTotalTime(awardTotalTime)
  360. local roleExp = ManagerContainer.DataMgr.UserData:GetRoleExp()
  361. local curBaseMaxExp = ManagerContainer.DataMgr.UserData:GetHeroCurBaseMaxExp()
  362. local lerp = curBaseMaxExp - roleExp
  363. if lerp > 0 then
  364. local curLevelExp = ManagerContainer.LuaBattleMgr:CurLevelExp() or 100
  365. local seconds = Mathf.Ceil(lerp * 60 / curLevelExp - self.controller:GetAwardTotalTime())
  366. self.restTime.text.uILocalizeScript:SetContent('RestTime')
  367. self.restTime.textTime.text.text = DateTimeUtil.convertSeconds2TimeStr(seconds, false)
  368. elseif lerp == 0 then
  369. self.restTime.text.uILocalizeScript:SetContent('RestTimeMax')
  370. self.restTime.textTime.text.text = '--'
  371. end
  372. end
  373. function UIMainView:RefreshJobLv()
  374. local curJobLv = ManagerContainer.DataMgr.UserData:GetJobLv()
  375. self.expBarJob.textLv.text.text = CommonUtil.StringConcat("Lv.", curJobLv)
  376. self.curJobLv = curJobLv
  377. end
  378. function UIMainView:RefreshJobExp()
  379. local curMaxJobExp = ManagerContainer.DataMgr.UserData:GetHeroCurJobMaxExp()
  380. local jobExp = ManagerContainer.DataMgr.UserData:GetJobExp()
  381. self.expBarJob.textTotal.text.text = CommonUtil.StringConcat(CommonUtil.FormatNumber(jobExp), "/", CommonUtil.FormatNumber(curMaxJobExp))
  382. local barPercent = curMaxJobExp == 0 and 0 or jobExp/curMaxJobExp
  383. self.expBarJob.slider.slider.value = Mathf.Max(BarMinValue, barPercent)
  384. self.curJobExp = jobExp
  385. self.expBarJob.slider.effect:SetActive(false)
  386. end
  387. function UIMainView:RefreshCoins()
  388. local coin = ManagerContainer.DataMgr.UserData:GetOwnCoin()
  389. self.coinZ.text.text.text = CommonUtil.FormatNumber(coin)
  390. self.curCoin = coin
  391. end
  392. function UIMainView:RefreshDiamond()
  393. local count = CommonUtil.GetOwnResCountByItemId(curTopResType) --ManagerContainer.DataMgr.UserData:GetCurrency(curTopResType)
  394. self.gold.text.text.text = CommonUtil.FormatNumber(count)
  395. local itemCfgData = ManagerContainer.CfgMgr:GetItemById(curTopResType)
  396. CommonUtil.LoadIcon(self, itemCfgData.MiniIcon, function (sprite)
  397. self.gold.icon.image.sprite = sprite
  398. end)
  399. --只显示金币的跳转按钮
  400. if curTopResType == Enum.ItemType.Diamond then
  401. self.btnGold:SetActive(Constant.OpenPay)
  402. else
  403. self.btnGold:SetActive(false)
  404. end
  405. if curTopResType == Enum.ItemType.Diamond then
  406. self.curDiamond = count
  407. end
  408. end
  409. function UIMainView:RefreshVipView()
  410. self.vipBtn.image.sprite = nil
  411. self.vipBtn.image.enabled = false
  412. local curVipLv = ManagerContainer.DataMgr.UserData:GetVipLv()
  413. local vipCfg = ManagerContainer.CfgMgr:GetVipCfgById(curVipLv)
  414. if not vipCfg then
  415. return
  416. end
  417. CommonUtil.LoadIcon(self, vipCfg.SmallIcon, function(sprite)
  418. if sprite then
  419. self.vipBtn.image.sprite = sprite
  420. self.vipBtn.image.enabled = true
  421. end
  422. end)
  423. end
  424. function UIMainView:DisplayBtnBase(result)
  425. if result then
  426. if ManagerContainer.PlayerPrefsMgr:GetBoolean(Constant.ROLE_LV_STATUS_SAVE_KEY, false) ~= result then
  427. return
  428. end
  429. end
  430. self.btnBase:SetActive(result)
  431. end
  432. function UIMainView:DisplayBtnJob(result)
  433. if result then
  434. if ManagerContainer.PlayerPrefsMgr:GetBoolean(Constant.JOB_LV_STATUS_SAVE_KEY, false) ~= result then
  435. return
  436. end
  437. end
  438. self.btnJob:SetActive(result)
  439. end
  440. function UIMainView:OnRefreshRoleLv()
  441. -- 在属性界面打开的情况下,不再显示这个按钮
  442. if ManagerContainer.LuaUIMgr:HasOpenPage(Enum.UIPageName.UIRoleNaturePoint) then
  443. return
  444. end
  445. ManagerContainer.PlayerPrefsMgr:SetBoolean(Constant.ROLE_LV_STATUS_SAVE_KEY, true)
  446. self.btnBase:SetActive(true)
  447. end
  448. function UIMainView:CloseBtnBase()
  449. self.btnBase:SetActive(false)
  450. ManagerContainer.PlayerPrefsMgr:SetBoolean(Constant.ROLE_LV_STATUS_SAVE_KEY, false)
  451. end
  452. function UIMainView:OnRefreshJobLv()
  453. -- 在技能树界面打开的情况下,不再显示这个按钮
  454. if ManagerContainer.LuaUIMgr:HasOpenPage(Enum.UIPageName.UISkillSettings) then
  455. return
  456. end
  457. ManagerContainer.PlayerPrefsMgr:SetBoolean(Constant.JOB_LV_STATUS_SAVE_KEY, true)
  458. self.btnJob:SetActive(true)
  459. end
  460. function UIMainView:OnVipLvChanged()
  461. self:RefreshVipView()
  462. end
  463. function UIMainView:CloseBtnJob()
  464. self.btnJob:SetActive(false)
  465. ManagerContainer.PlayerPrefsMgr:SetBoolean(Constant.JOB_LV_STATUS_SAVE_KEY, false)
  466. end
  467. function UIMainView:RemoveEventListener()
  468. -- LogError("remove event "..self.uiData.name)
  469. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  470. end
  471. function UIMainView:AddUIEventListener()
  472. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
  473. self.uiBase:AddButtonEventListener(self.btnGold.button, function()
  474. if self.mainPageId then
  475. -- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIGM)
  476. if curTopResType == Enum.ItemType.Diamond then
  477. local curUIId = ManagerContainer.LuaUIMgr:GetCurUIId()
  478. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIRuneShopBT, {Enum.RuneShopType.Gifts, Enum.RuneShopSubType.Gold}, curUIId)
  479. end
  480. end
  481. end)
  482. self.uiBase:AddButtonEventListener(self.town.icon.button, self, self.ChangePage, Enum.MainViewPageType.Town)
  483. self.uiBase:AddButtonEventListener(self.adventure.icon.button, self, self.ChangePage, Enum.MainViewPageType.Adventure)
  484. self.uiBase:AddButtonEventListener(self.shop.icon.button, self, self.ChangePage, Enum.MainViewPageType.Battle)
  485. self.uiBase:AddButtonEventListener(self.role.icon.button, self, self.ChangePage, Enum.MainViewPageType.Role, 1)
  486. self.uiBase:AddButtonEventListener(self.bag.icon.button, self, self.ChangePage, Enum.MainViewPageType.Pub)
  487. self.uiBase:AddButtonEventListener(self.btnBase.button,self,self.OnClickBaseBtn)
  488. self.uiBase:AddButtonEventListener(self.btnJob.button,self,self.OnClickJobBtn)
  489. --self.uiBase:AddButtonEventListener(self.head.button,self,self.OnClickHead)
  490. self.uiBase:AddButtonEventListener(self.topView.topRoot.btnNotifyActivity.button,self,self.OpenNoticeAndActivity)
  491. self.uiBase:AddButtonEventListener(self.topView.topRoot.btnTask.button,self,self.OpenTask)
  492. self.uiBase:AddButtonEventListener(self.topView.topRoot.BtnDiffTask.button,self,self.OpenDiffTask)
  493. self.uiBase:AddButtonEventListener(self.seasonInfo.button, self, self.OnSeasonClick)
  494. self.uiBase:AddButtonEventListener(self.coinZ.icon.button, self,self.OnClickCoinZ)
  495. self.uiBase:AddButtonEventListener(self.gold.icon.button, self,self.OnClickGoldIcon)
  496. self.uiBase:AddButtonUniqueEventListener(self.vipBtn.button, self, self.OnClickVipBtn)
  497. self.uiBase:AddButtonUniqueEventListener(self.topView.topRoot.btnClub.button, self, self.OnClickRuneShopBtn)
  498. self.uiBase:AddButtonUniqueEventListener(self.topView.topRoot.btnWallet.button, self, self.OnClickWalletShopBtn)
  499. self.uiBase:AddButtonUniqueEventListener(self.topView.topRoot.BtnBoliShop.button, self, self.OnClickBoliShopBtn)
  500. self.uiBase:AddButtonUniqueEventListener(self.topView.topRoot.btnFirstRecharge.button, self, self.OnClickFirstRechargeBtn)
  501. self.uiBase:AddButtonUniqueEventListener(self.topView.topRoot.btnHundredRecharge.button, self, self.OnClickHundredRechargeBtn)
  502. self.uiBase:AddButtonUniqueEventListener(self.topView.topRoot.btnLimitedGift.button, self, self.OnClickLimitGiftBtn)
  503. self.uiBase:AddButtonUniqueEventListener(self.topView.topRoot.btnQuestionnaire.button, self, self.OnQuestionClick)
  504. self.uiBase:AddButtonUniqueEventListener(self.topView.topRoot.btnActivityTower.button, self, self.OnTowerClick)
  505. self.uiBase:AddButtonUniqueEventListener(self.topView.topRoot.btnActivityDojo.button, self, self.OnArenaClick)
  506. self.uiBase:AddButtonUniqueEventListener(self.topView.topRoot.btnActivityMap.button, self, self.OnMapClick)
  507. self.uiBase:AddButtonUniqueEventListener(self.topView.topRoot.btnActivityPet.button, self, self.OnPetClick)
  508. self.uiBase:AddButtonUniqueEventListener(self.topView.topRoot.btnAirshipRewards.button, self, self.OnRewardsClick)
  509. self.uiBase:AddButtonUniqueEventListener(self.topView.topRoot.btnActivitySkill.button, self, self.OnSkillClick)
  510. self.uiBase:AddButtonUniqueEventListener(self.topView.topRoot.btnGuildWar.button, self, self.OnClickGuildWarBtn)
  511. self.uiBase:AddButtonUniqueEventListener(self.topView.topRoot.btnCombineService.button, self, self.OnClickCombineServerBtn)
  512. --
  513. --self.chatView.uIEventTriggerListener.onClick = function()
  514. -- self:OnChatClick()
  515. --end
  516. end
  517. function UIMainView:OnClickCombineServerBtn()
  518. ManagerContainer.DataMgr.CombineServerDataMgr:SendCombineServerInfoReq()
  519. end
  520. function UIMainView:OnClickGuildWarBtn()
  521. local curUIId = ManagerContainer.LuaUIMgr:GetCurUIId()
  522. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIGuildWarMatchMap, nil, curUIId)
  523. end
  524. function UIMainView:OnClickFirstRechargeBtn()
  525. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIActivityFirstRechargeBT)
  526. end
  527. function UIMainView:OnClickHundredRechargeBtn()
  528. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIActivityHundredRechargeBT)
  529. end
  530. function UIMainView:OnClickLimitGiftBtn()
  531. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIActivityLimitedGift)
  532. end
  533. function UIMainView:OnQuestionClick()
  534. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIQuestionnaire)
  535. end
  536. function UIMainView:OnTowerClick()
  537. ManagerContainer.DataMgr.RankActivitiesMgr:QueryCurRankActivityData(Enum.RankActivitiesType.ClimbingTower, true)
  538. end
  539. function UIMainView:OnArenaClick()
  540. ManagerContainer.DataMgr.RankActivitiesMgr:QueryCurRankActivityData(Enum.RankActivitiesType.Dojo, true)
  541. end
  542. function UIMainView:OnClickBoliShopBtn()
  543. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIBoliShop)
  544. end
  545. function UIMainView:OnMapClick()
  546. ManagerContainer.DataMgr.RankActivitiesMgr:QueryCurRankActivityData(Enum.RankActivitiesType.MapProgress, true)
  547. end
  548. function UIMainView:OnPetClick()
  549. ManagerContainer.DataMgr.RankActivitiesMgr:QueryCurRankActivityData(Enum.RankActivitiesType.Pet, true)
  550. end
  551. function UIMainView:OnSkillClick()
  552. ManagerContainer.DataMgr.RankActivitiesMgr:QueryCurRankActivityData(Enum.RankActivitiesType.Skill, true)
  553. end
  554. function UIMainView:OnRewardsClick()
  555. if ManagerContainer.DataMgr.RuneShopDataMgr:GetAirShipIsOpen() then
  556. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIRuneShopExplore)
  557. else
  558. self:RefreshAirShipRewardsBtn(false)
  559. end
  560. end
  561. function UIMainView:OnClickRuneShopBtn()
  562. local curUIId = ManagerContainer.LuaUIMgr:GetCurUIId()
  563. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIRuneShopBT, nil, curUIId)
  564. end
  565. function UIMainView:OnClickWalletShopBtn()
  566. local curUIId = ManagerContainer.LuaUIMgr:GetCurUIId()
  567. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIRechargeWalletShop, nil, curUIId)
  568. end
  569. function UIMainView:OnClickCoinZ()
  570. -- ManagerContainer.LuaUIMgr:ShowMinTips("ZenyTips")
  571. end
  572. function UIMainView:OnClickGoldIcon()
  573. -- ManagerContainer.LuaUIMgr:ShowMinTips("GoldTips")
  574. end
  575. function UIMainView:OnClickVipBtn()
  576. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIVip)
  577. end
  578. function UIMainView:OnChatClick()
  579. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIChat, nil, self.uiData.id)
  580. end
  581. function UIMainView:OnSeasonClick(button, params)
  582. ManagerContainer.DataMgr.CompetitionData:QueryCurCompetitionReq()
  583. end
  584. function UIMainView:OnHide()
  585. end
  586. function UIMainView:OnShow()
  587. end
  588. function UIMainView:OnClose()
  589. DOTween.Kill(self.gold.transform)
  590. end
  591. function UIMainView:OnDispose()
  592. if mainTopView then
  593. mainTopView:Dispose()
  594. mainTopView = nil
  595. end
  596. if mainBottomView then
  597. mainBottomView:Dispose()
  598. mainBottomView = nil
  599. end
  600. if self.delayTimer then
  601. self.delayTimer:Stop()
  602. end
  603. self.delayTimer = nil
  604. if self.dataDelayTimer then
  605. self.dataDelayTimer:Stop()
  606. end
  607. self.dataDelayTimer = nil
  608. self.canSignPlay = false
  609. end
  610. function UIMainView:OnClickHead()
  611. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIRoleMessage, {_targetTag = 0}) --打开头像交互界面,显示自己的信息
  612. end
  613. function UIMainView:OnClickBaseBtn()
  614. self.btnBase:SetActive(false)
  615. ManagerContainer.PlayerPrefsMgr:SetBoolean(Constant.ROLE_LV_STATUS_SAVE_KEY, false)
  616. ManagerContainer.UIJumpMgr:CreateJumpTaskById(5)
  617. end
  618. function UIMainView:OnClickJobBtn()
  619. self.btnJob:SetActive(false)
  620. ManagerContainer.PlayerPrefsMgr:SetBoolean(Constant.JOB_LV_STATUS_SAVE_KEY, false)
  621. ManagerContainer.UIJumpMgr:CreateJumpTaskById(6)
  622. end
  623. function UIMainView:OpenTask()
  624. ManagerContainer.DataMgr.TaskDataNew:OpenTaskPanel();
  625. end
  626. function UIMainView:OpenDiffTask()
  627. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIDiffTask)
  628. end
  629. function UIMainView:OpenNoticeAndActivity()
  630. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINotifyActivityTips)
  631. end
  632. function UIMainView:ChangePage(button, params)
  633. local data = params.Length > 1 and params[1] or nil
  634. self:ChangePageMsg(params[0], data)
  635. end
  636. function UIMainView:ChangePageMsg(pageType, data)
  637. --LogError("ChangePageMsg ")
  638. if _curMainButtonType == pageType then return end
  639. local UIBattleCtr = ManagerContainer.LuaUIMgr:GetViewCtrById(Enum.UIPageName.UIBattle)
  640. if UIBattleCtr then
  641. local newForce = UIBattleCtr:GetNewForceId()
  642. if newForce then
  643. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.CLOSE_NEW_FUNC_PAGE)
  644. return
  645. end
  646. end
  647. ManagerContainer.DataMgr.TaskDataNew:SetMainButton(pageType);
  648. if _curMainButtonType == Enum.MainViewPageType.Role or _curMainButtonType == Enum.MainViewPageType.Battle or _curMainButtonType == Enum.MainViewPageType.Town then
  649. ManagerContainer.LuaBattleMgr:SetTeamData(true,false)
  650. end
  651. _curMainButtonType = pageType;
  652. self:RefreshSeasonNoticeState(false)
  653. if pageType == Enum.MainViewPageType.Town then
  654. self.upgradeRoot:SetActive(false)
  655. local bta = self.town.icon.buttonTriggerAnimation
  656. bta.tagetAnimator:CrossFade(bta.animationName, 0.2)
  657. --ManagerContainer.LuaGameMgr:EnterMainCity();
  658. --ManagerContainer.LuaUIMgr:HideAllPagesExceptId(Enum.UIPageName.UIMainCity1)
  659. self.mainPageId = Enum.UIPageName.UIMainCity1
  660. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIMainCity1)
  661. --打开主城需要处理额外
  662. ManagerContainer.RedPointMgr.PetRPCtr:RefreshRelationRPState()
  663. elseif pageType == Enum.MainViewPageType.Adventure then
  664. curTopResType = self.uiData.top_res_id
  665. self:RefreshDiamond()
  666. self.upgradeRoot:SetActive(false)
  667. self.mainPageId = Enum.UIPageName.UIBattle
  668. ManagerContainer.LuaGameMgr:EnterBattle(false);
  669. if ManagerContainer.FSMMgr:IsBattleState() then
  670. local bta = self.adventure.icon.buttonTriggerAnimation
  671. bta.tagetAnimator:CrossFade(bta.animationName, 0.2)
  672. end
  673. elseif pageType == Enum.MainViewPageType.Battle then
  674. self.mainPageId = Enum.UIPageName.UIPetRoot
  675. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPetRoot)
  676. local bta = self.shop.icon.buttonTriggerAnimation
  677. bta.tagetAnimator:CrossFade(bta.animationName, 0.2)
  678. elseif pageType == Enum.MainViewPageType.Role then
  679. self.upgradeRoot:SetActive(false)
  680. self.mainPageId = Enum.UIPageName.UIRoleMain1
  681. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIRoleMain1, data)
  682. local bta = self.role.icon.buttonTriggerAnimation
  683. bta.tagetAnimator:CrossFade(bta.animationName, 0.2)
  684. elseif pageType == Enum.MainViewPageType.Pub then
  685. self.upgradeRoot:SetActive(false)
  686. --ManagerContainer.LuaUIMgr:HideAllPagesExceptId(Enum.UIPageName.UIBag)
  687. self.mainPageId = Enum.UIPageName.UIBag
  688. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIBag)
  689. local bta = self.bag.icon.buttonTriggerAnimation
  690. bta.tagetAnimator:CrossFade(bta.animationName, 0.2)
  691. end
  692. end
  693. function UIMainView:GetGotAnimEndPosByType(type)
  694. if type == Enum.ItemType.Item
  695. or type == Enum.ItemType.Equip
  696. or type == Enum.ItemType.Card
  697. or type == Enum.ItemType.ParterChip
  698. or type == Enum.ItemType.FashionPaper
  699. or type == Enum.ItemType.ParterExp
  700. or type == Enum.ItemType.SkillBook
  701. or type == Enum.ItemType.Gift
  702. or type == Enum.ItemType.Income then
  703. --背包
  704. return self.bag.transform.position
  705. elseif type == Enum.ItemType.Coin then
  706. --银币
  707. return self.coinZ.icon.transform.position
  708. elseif type == Enum.ItemType.Diamond then
  709. --钻石
  710. return self.gold.icon.transform.position
  711. elseif type == Enum.ItemType.RoleBaseExp then
  712. --基础经验
  713. return self.expBarBase.slider.effect.transform.position
  714. elseif type == Enum.ItemType.RoleJobExp then
  715. --职业经验
  716. return self.expBarJob.slider.effect.transform.position
  717. elseif type == Enum.ItemType.WalletNum then
  718. return self.topView.topRoot.btnWallet.transform.position
  719. end
  720. return Vector3.zero
  721. end
  722. function UIMainView:GeAnchoredPosition3DByType(type)
  723. local pos = self:GetGotAnimEndPosByType(type)
  724. return CommonUtil.ConvertUIPos2ScreenPos(pos)
  725. end
  726. function UIMainView:GetTaskBtnPosition()
  727. return self.topView.topRoot.btnTask.transform.position
  728. end
  729. -- function UIMainView:ShowAddEffect(type, num)
  730. -- if type == Enum.ItemType.Coin then
  731. -- self:ShowAddCoinEffect(num)
  732. -- elseif type == Enum.ItemType.RoleBaseExp then
  733. -- self:ShowAddRoleExpEffect(num)
  734. -- elseif type == Enum.ItemType.RoleJobExp then
  735. -- self:ShowAddJobExpEffect(num)
  736. -- end
  737. -- end
  738. function UIMainView:ShowAddCoinEffect()
  739. DOTween.Kill(self.coinZ.transform)
  740. -- local newCoin = ManagerContainer.DataMgr.UserData:GetOwnCoin()
  741. self.coinZ.transform.localScale = Vector3.one
  742. self.coinZ.transform:DOScale(Vector3.one * 1.1, 0.2):SetLoops(2, LoopType.Yoyo):OnComplete(function()
  743. self:RefreshCoins()
  744. end)
  745. end
  746. function UIMainView:ShowAddDiamondEffect()
  747. DOTween.Kill(self.gold.transform)
  748. -- local newCoin = ManagerContainer.DataMgr.UserData:GetOwnCoin()
  749. self.gold.transform.localScale = Vector3.one
  750. self.gold.transform:DOScale(Vector3.one * 1.1, 0.2):SetLoops(2, LoopType.Yoyo):OnComplete(function()
  751. self:RefreshDiamond()
  752. end)
  753. end
  754. function UIMainView:ShowAddRoleExpEffect()
  755. self.expBarBase.slider.effect:SetActive(true)
  756. local newRoleLv = ManagerContainer.DataMgr.UserData:GetRoleLv()
  757. local newRoleExp = ManagerContainer.DataMgr.UserData:GetRoleExp()
  758. -- 计算是否升级
  759. local curRoleLv = self.curRoleLv
  760. local baseExpData = ManagerContainer.CfgMgr:GetRoleExpData(curRoleLv)
  761. if not baseExpData then
  762. self:RefreshLv()
  763. self:RefreshRoleExp()
  764. return
  765. end
  766. local curRoleExp = newRoleExp
  767. local curMaxExp = baseExpData.Name
  768. while (curRoleExp >= curMaxExp) do
  769. baseExpData = ManagerContainer.CfgMgr:GetRoleExpData(curRoleLv + 1)
  770. if not baseExpData then
  771. curRoleExp = curMaxExp
  772. break
  773. end
  774. curRoleExp = curRoleExp - curMaxExp
  775. curMaxExp = baseExpData.Name
  776. curRoleLv = curRoleLv + 1
  777. end
  778. local targetPercent = Mathf.Max(BarMinValue, curRoleExp / curMaxExp)
  779. local curPercent = self.expBarBase.slider.slider.value
  780. DOTween.Kill(self.expBarBase.slider.slider)
  781. if targetPercent >= curPercent and self.curRoleLv == curRoleLv and curRoleLv == newRoleLv then
  782. self.expBarBase.slider.slider:DOValue(targetPercent, AddEffectBarSpeed):OnComplete(function()
  783. self:RefreshLv()
  784. self:RefreshRoleExp()
  785. end)
  786. else
  787. local lerpPercent = 1 - curPercent
  788. local allPercent = (lerpPercent + targetPercent)
  789. local tweener1 = self.expBarBase.slider.slider:DOValue(1, lerpPercent * AddEffectBarSpeed / allPercent)
  790. local tweener2 = self.expBarBase.slider.slider:DOValue(targetPercent, targetPercent * AddEffectBarSpeed / allPercent)
  791. local seq = DOTween.Sequence()
  792. seq:Append(tweener1)
  793. seq:AppendCallback(function()
  794. self.expBarBase.slider.slider.value = BarMinValue
  795. self.expBarBase.textLv.text.text = CommonUtil.StringConcat("Lv.", curRoleLv)
  796. end)
  797. seq:Append(tweener2)
  798. seq:AppendCallback(function()
  799. self:RefreshLv()
  800. self:RefreshRoleExp()
  801. end)
  802. end
  803. end
  804. function UIMainView:ShowAddJobExpEffect()
  805. self.expBarJob.slider.effect:SetActive(true)
  806. local newJobLv = ManagerContainer.DataMgr.UserData:GetJobLv()
  807. local newJobExp = ManagerContainer.DataMgr.UserData:GetJobExp()
  808. -- 计算是否升级
  809. local curJobLv = self.curJobLv
  810. local jobStage = ManagerContainer.DataMgr.UserData:GetJobStage()
  811. local curMaxExp = ManagerContainer.CfgMgr:GetCurMaxJobExpByLvAndStep(curJobLv, jobStage)
  812. if not curMaxExp or curMaxExp == 0 then
  813. self:RefreshJobLv()
  814. self:RefreshJobExp()
  815. return
  816. end
  817. local curJobExp = newJobExp
  818. while (curJobExp >= curMaxExp) do
  819. local nextJobExp = ManagerContainer.CfgMgr:GetCurMaxJobExpByLvAndStep(curJobLv + 1, jobStage)
  820. if not nextJobExp or nextJobExp == 0 then
  821. curJobExp = curMaxExp
  822. break
  823. end
  824. curJobExp = curJobExp - curMaxExp
  825. curMaxExp = nextJobExp
  826. curJobLv = curJobLv + 1
  827. end
  828. local targetPercent = Mathf.Max(BarMinValue, curJobExp / curMaxExp)
  829. local curPercent = self.expBarJob.slider.slider.value
  830. DOTween.Kill(self.expBarJob.slider.slider)
  831. if targetPercent >= curPercent and self.curJobLv == curJobLv and curJobLv == newJobLv then
  832. self.expBarJob.slider.slider:DOValue(targetPercent, AddEffectBarSpeed):OnComplete(function()
  833. self:RefreshJobLv()
  834. self:RefreshJobExp()
  835. end)
  836. else
  837. local lerpPercent = 1 - curPercent
  838. local allPercent = (lerpPercent + targetPercent)
  839. local tweener1 = self.expBarJob.slider.slider:DOValue(1, lerpPercent * AddEffectBarSpeed / allPercent)
  840. local tweener2 = self.expBarJob.slider.slider:DOValue(targetPercent, targetPercent * AddEffectBarSpeed / allPercent)
  841. local seq = DOTween.Sequence()
  842. seq:Append(tweener1)
  843. seq:AppendCallback(function()
  844. self.expBarJob.slider.slider.value = BarMinValue
  845. self.expBarJob.textLv.text.text = CommonUtil.StringConcat("Lv.", curJobLv)
  846. end)
  847. seq:Append(tweener2)
  848. seq:AppendCallback(function()
  849. self:RefreshJobLv()
  850. self:RefreshJobExp()
  851. end)
  852. end
  853. end
  854. function UIMainView:LoggedinForceGuideOver(ignore)
  855. if ManagerContainer.StoryMgr:IsStorying() then
  856. return
  857. end
  858. if ManagerContainer.StoryMgr:HasPreStoryChapter() then
  859. return
  860. end
  861. if not ignore and self.canSignPlay then
  862. self.canSignPlay = false
  863. ManagerContainer.DataMgr.SignData:QuerySignUpInfoReq(true)
  864. elseif ignore then
  865. local _canSignPlay = ManagerContainer.DataMgr.SignData:CanTodaySign()
  866. --LogHRWarning("_canSignPlay "..tostring(_canSignPlay))
  867. if _canSignPlay then
  868. self.canSignPlay = false
  869. ManagerContainer.DataMgr.SignData:QuerySignUpInfoReq(true)
  870. end
  871. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.LIMIT_RECHARGE_OPEN_UI_NTF)
  872. end
  873. end
  874. function UIMainView:OpenFirstRechargeView()
  875. local activityData = ManagerContainer.DataMgr.ActsDataMgr:GetFirstRechargeItem()
  876. if not activityData then
  877. return
  878. end
  879. if not activityData:IsNeedOpen() then
  880. return
  881. end
  882. self:OnClickFirstRechargeBtn()
  883. end
  884. --这几个按钮在主城和战斗迅游界面会打开,其他界面是要关闭的(起码目前是这样)
  885. function UIMainView:SetActiveButtonsState(state)
  886. if mainTopView then
  887. mainTopView:RefreshTopBtns(state)
  888. end
  889. self:RefreshFirstRechargeBtn(state)
  890. self:RefreshGuildWarBtn(state)
  891. end
  892. function UIMainView:RefreshRankActivityEnter(type, state)
  893. if IShServer() then
  894. state = false
  895. end
  896. if mainTopView then
  897. mainTopView:RefreshRankActivityEnter(type, state)
  898. end
  899. end
  900. function UIMainView:RefreshAirShipActivityEnter(state)
  901. if IShServer() then
  902. state = false
  903. end
  904. if mainTopView then
  905. mainTopView:RefreshAirShipActivityEnter(state)
  906. end
  907. end
  908. function UIMainView:RefreshFirstRechargeBtn(state)
  909. self.topView.topRoot.btnFirstRecharge:SetActive(false)
  910. self.topView.topRoot.btnHundredRecharge:SetActive(false)
  911. if state == nil then
  912. state = mainTopView.state
  913. end
  914. if state == false then
  915. return
  916. end
  917. local unlockState = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(57)
  918. if not unlockState then
  919. return
  920. end
  921. if ManagerContainer.DataMgr.BTRechargeRewardDataMgr:IsShowHundred() then
  922. if not ManagerContainer.DataMgr.BTRechargeRewardDataMgr:IsGotHundredAllRewardCompleted() and not IShServer() then
  923. self.topView.topRoot.btnHundredRecharge:SetActive(true)
  924. end
  925. else
  926. self.topView.topRoot.btnFirstRecharge:SetActive(true)
  927. end
  928. end
  929. function UIMainView:RefreshQuestionRewardBtn()
  930. local rewardState = ManagerContainer.DataMgr.UserData:GetQuestionRewardState()
  931. self.topView.topRoot.btnQuestionnaire:SetActive(not rewardState)
  932. end
  933. function UIMainView:RefreshAirShipRewardsBtn(state)
  934. if not Constant.OpenPay then
  935. state = false
  936. end
  937. if IShServer() then
  938. state = false
  939. end
  940. self.topView.topRoot.btnAirshipRewards:SetActive(state)
  941. end
  942. function UIMainView:RefreshGuildWarBtn(state)
  943. if state == false then
  944. self.topView.topRoot.btnGuildWar:SetActive(false)
  945. return
  946. end
  947. local _unlockState = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(66)
  948. if not _unlockState then
  949. self.topView.topRoot.btnGuildWar:SetActive(false)
  950. return
  951. end
  952. local isOpen = ManagerContainer.DataMgr.GuildWarDataMgr:GetOpenState()
  953. if isOpen then
  954. self.topView.topRoot.btnGuildWar:SetActive(true)
  955. return
  956. end
  957. self.topView.topRoot.btnGuildWar:SetActive(false)
  958. end
  959. function UIMainView:OnCombineServerTimeChanged()
  960. mainTopView:ChangeRefreshCombineServerBtn()
  961. end
  962. function UIMainView:OnCombineServerContentChanged(content)
  963. if not content or content == '' then
  964. return
  965. end
  966. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINotifyTipsSimple, {'BtnCombineService', content})
  967. end
  968. return UIMainView