UIBattleRewardView.lua 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308
  1. local UIBattleRewardView = require("UIBattle/UIBattleRewardView_Generate")
  2. function UIBattleRewardView:OnAwake(data)
  3. self.controller = require("UIBattle/UIBattleRewardCtr"):new()
  4. self.controller:Init(self)
  5. self.controller:SetData(data)
  6. end
  7. function UIBattleRewardView:AddEventListener()
  8. end
  9. function UIBattleRewardView:FillContent(data, uiBase)
  10. self.itemList = {}
  11. self.uiBase = uiBase
  12. local gameObject = self.uiBase:GetRoot()
  13. if gameObject ~= nil then
  14. self.gameObject = gameObject
  15. self.transform = gameObject.transform
  16. end
  17. self:InitGenerate(self.transform, data)
  18. self:Init()
  19. end
  20. function UIBattleRewardView:Init()
  21. self:ShowRewardTime();
  22. self:RefreshLevelUpTime();
  23. self:ShowBossCount();
  24. self:ShowShowReWardPerMinute();
  25. self:ShowRewardData();
  26. self.time:SetActive(self.controller:GetData() ~= 1 );
  27. self.reward120m:SetActive(self.controller:GetData() == 1 );
  28. end
  29. function UIBattleRewardView:RemoveEventListener()
  30. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  31. end
  32. function UIBattleRewardView:AddUIEventListener()
  33. self.uiBase:AddButtonEventListener(self.AnyBtn.button,self, self.OnClickClose)
  34. end
  35. function UIBattleRewardView:OnHide()
  36. end
  37. function UIBattleRewardView:OnShow(data)
  38. self.controller:SetData(data)
  39. self:Init()
  40. end
  41. function UIBattleRewardView:OnClose()
  42. end
  43. function UIBattleRewardView:OnDispose()
  44. if self.ItemScrollView and self.ItemScrollView.loopVerticalScrollRect then
  45. self.ItemScrollView.loopVerticalScrollRect:ClearCells()
  46. end
  47. end
  48. function UIBattleRewardView:ShowRewardTime()
  49. self.bossCount.gameObject:SetActive(false); --隐藏击败boss数量(策划需求)
  50. local passedTime = ManagerContainer.LuaBattleMgr.accumIncomeTime;
  51. local maxTime = ManagerContainer.LuaBattleMgr:MaxInComeTime() * 1000
  52. if passedTime >= maxTime then
  53. passedTime = maxTime
  54. -- self.RewardTimeSlider.slider.value = 1
  55. -- --self.MaxNode:SetActive(true)
  56. -- self.RewardTimeLbl.text.text = "12时"
  57. -- return
  58. end
  59. local _rewardIntervalTime = GlobalConfig.Instance:GetConfigIntValue(47)
  60. local _rewardNum = CommonUtil.GetPreciseDecimal(math.floor(passedTime / _rewardIntervalTime / 1000),0);
  61. if _rewardNum < 1 then _rewardNum = 1; end --只要能打开这个界面,那至少显示应该是够领取一次了,所以这个值一定是大于1的。但是有时候计时上会有误差,转换的时候这里做一个保护。
  62. local _timeS = _rewardNum * _rewardIntervalTime; --折算成秒
  63. self.RewardTimeSlider.slider.value = passedTime / maxTime;
  64. self.RewardTimeLbl.text.text = DateTimeUtil.convertSeconds2TimeStr(_timeS, false);
  65. end
  66. function UIBattleRewardView:ShowBossCount()
  67. --[[策划暂时不想让显示击杀boss数量,暂时隐藏,将来入股再想让开启再打开就是了
  68. local count = ManagerContainer.LuaBattleMgr:GetRewardMapCount()
  69. self.BossCountLbl.text.text = I18N.SetLanguageValue("BossKill", count)]]--
  70. end
  71. function UIBattleRewardView:ShowShowReWardPerMinute()
  72. self.profit.ExpLbl.text.text = ManagerContainer.LuaBattleMgr:CurSimpleLevelExp() .. "/" .. I18N.T("m") ;
  73. self.profit.ZenyLbl.text.text = ManagerContainer.LuaBattleMgr:CurSimpleLevelZeny() .. "/" .. I18N.T("m");
  74. self.profit.ParnterExpLbl.text.text = ManagerContainer.LuaBattleMgr:CurSimpleLevelParnterExp() .. "/" .. I18N.T("m");
  75. self.profit.CruiseLbl.text.text = ManagerContainer.LuaBattleMgr:CurSimpleLevelCruise() .. "/" .. I18N.T("m");
  76. self.profit.GoldLbl.text.text = ManagerContainer.LuaBattleMgr:CurSimpleLevelGold() .. "/" .. I18N.T("m");
  77. self.profit.EvilLbl.text.text = ManagerContainer.LuaBattleMgr:CurSimpleLevelEvil() .. "/" .. I18N.T("m");
  78. end
  79. function UIBattleRewardView:ShowRewardData()
  80. local zenyCnt = ManagerContainer.LuaBattleMgr:GetRewardCnt(Enum.ItemType.Coin)
  81. local partnerExpCnt = ManagerContainer.LuaBattleMgr:GetRewardCnt(Enum.ItemType.ParterExp)
  82. local expCnt = ManagerContainer.LuaBattleMgr:GetRewardCnt(Enum.ItemType.RoleBaseExp)
  83. local treasureCnt = ManagerContainer.LuaBattleMgr:GetRewardCnt(Enum.ItemType.SkillExp)
  84. local goldCnt = ManagerContainer.LuaBattleMgr:GetRewardCnt(Enum.ItemType.Diamond)
  85. local evilCnt = ManagerContainer.LuaBattleMgr:GetRewardCnt(Enum.ItemType.EvilExp)
  86. self.ExpLbl.text.text = expCnt .. ""
  87. self.ParnterExpLbl.text.text = partnerExpCnt .. ""
  88. self.ZenyLbl.text.text = zenyCnt .. ""
  89. self.CruiseLbl.text.text = treasureCnt .. ""
  90. self.GoldLbl.text.text = goldCnt .. ""
  91. self.EvilLbl.text.text = evilCnt .. ""
  92. self:RefreshVipView()
  93. for i = 1, #ManagerContainer.LuaBattleMgr.rewardItemList do
  94. local item = ManagerContainer.LuaBattleMgr.rewardItemList[i];
  95. if item.key >= 100 then
  96. self.itemList[#self.itemList+1] = item
  97. end
  98. end
  99. if #self.itemList == 0 then
  100. self.None:SetActive(true)
  101. self.ItemScrollView:SetActive(false)
  102. else
  103. self.None:SetActive(false)
  104. self.ItemScrollView:SetActive(true)
  105. end
  106. self:Sort();
  107. CommonUtil.LoopGridViewEleCreateNew(self,
  108. self.ItemScrollView.loopVerticalScrollRect,
  109. self.ItemContent.gridLayoutGroup,self.itemList,0,self,self.OnUpdateItemData)
  110. end
  111. function UIBattleRewardView:Sort()
  112. if #self.itemList <= 0 then return; end
  113. table.sort(self.itemList, function (a, b)
  114. local _aCfg = ManagerContainer.CfgMgr:GetItemById(a.key);
  115. local _bCfg = ManagerContainer.CfgMgr:GetItemById(b.key);
  116. if _aCfg ~= nil and _bCfg == nil then
  117. return true;
  118. elseif _aCfg == nil and _bCfg ~= nil then
  119. return false;
  120. elseif _aCfg ~= nil and _bCfg ~= nil then
  121. local _aQuality = _aCfg.Quality;
  122. local _bQuality = _bCfg.Quality;
  123. if _aQuality ~= nil and _bQuality == nil then
  124. return true;
  125. elseif _aQuality == nil and _bQuality ~= nil then
  126. return false;
  127. elseif _aQuality ~= nil and _bQuality ~= nil then
  128. if _aQuality ~= _bQuality then
  129. return _aQuality > _bQuality;
  130. else
  131. return a.key < b.key;
  132. end
  133. else
  134. return a.key < b.key;
  135. end
  136. else
  137. return a.key < b.key;
  138. end
  139. end)
  140. end
  141. function UIBattleRewardView:OnUpdateItemData(itemLua,idx)
  142. local item = self.itemList[idx+1];
  143. if item~= nil then
  144. CommonUtil.SetRewardItemData(self,item.key,itemLua,item.value, self.OnClickItem)
  145. end
  146. end
  147. function UIBattleRewardView:OnClickItem(btn,params)
  148. --local logicData = params[0]
  149. --ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIItemTips, item)
  150. local data = params[0]
  151. local itemData = ManagerContainer.DataMgr.BagData:GetItemDataByCfgId(data.cfgId)
  152. data.timeStamp = itemData and itemData.timeStamp or nil
  153. ManagerContainer.LuaUIMgr:OpenTips(data)
  154. end
  155. function UIBattleRewardView:OnClickClose()
  156. ManagerContainer.LuaUIMgr:ClosePage(Enum.UIPageName.UIBattleReward)
  157. end
  158. --刷新升级所需的挂机时间
  159. function UIBattleRewardView:RefreshLevelUpTime()
  160. local _canLevelUp, _needTime, _toNextLevel = self:GetLevelUpNeedTime();
  161. self.talkBox1.levelUpTime.gameObject:SetActive(_canLevelUp);
  162. if _canLevelUp then
  163. self.talkBox1.levelUpTime.time.text.text = _needTime;
  164. self.talkBox1.levelUpTime.title.text.text = _toNextLevel;
  165. end
  166. end
  167. --计算升级需要的挂机时间,返回值第一个是bool类型,表示是否不能再升级,第二个是升级到下一个等级需要的时间,第三个是升级到**等级
  168. function UIBattleRewardView:GetLevelUpNeedTime()
  169. local _baseLv = ManagerContainer.DataMgr.UserData:GetRoleLv();
  170. local _nextBaseLv = _baseLv + 1;
  171. local _roleAttrData = ManagerContainer.CfgMgr:GetRoleExpData(_baseLv);
  172. local _roleAttrNextData = ManagerContainer.CfgMgr:GetRoleExpData(_nextBaseLv);
  173. if not _roleAttrData or not _roleAttrNextData then --没有该等级说明出bug了,没有改等级的下一等级,说明满级了,不可能再升级
  174. return false , "";
  175. end
  176. local _curLevel = ManagerContainer.LuaBattleMgr:GetCurLevelUniqueId();
  177. local _levelData = ManagerContainer.CfgMgr:GetLevelDataById(_curLevel);
  178. if not _levelData then
  179. LogError("没有找到对应当前等级的level表数据。当前等级是:" .. tostring(_curLevel))
  180. return false, "";
  181. end
  182. local _roleExp = ManagerContainer.DataMgr.UserData:GetRoleExp();
  183. local _curBaseMaxExp = ManagerContainer.DataMgr.UserData:GetHeroCurBaseMaxExp();
  184. local _rewardIntervalTime = GlobalConfig.Instance:GetConfigIntValue(47)
  185. local _needExp = _curBaseMaxExp - _roleExp;
  186. local _exp = _levelData.BaseExpOl or 0;
  187. local _expPerSecond = _exp / _rewardIntervalTime;
  188. local _needSeconds = _needExp / _expPerSecond;
  189. local _time = "";
  190. if _needSeconds >= 60 and _needSeconds < Constant.OneDaySeconds then
  191. _time = DateTimeUtil.convertSeconds2TimeStr1(_needSeconds, true, false, false);
  192. elseif _needSeconds >= Constant.OneDaySeconds then
  193. _time = DateTimeUtil.convertSeconds2TimeStr1(_needSeconds, false, false, false);
  194. else
  195. _time = "1" .. I18N.T("MINS");
  196. end
  197. local _toNextLevel = I18N.SetLanguageValue("LevelUpTime", _nextBaseLv)
  198. return true, _time, _toNextLevel;
  199. end
  200. function UIBattleRewardView:RefreshVipView()
  201. local vipLv = nil
  202. local boliLv = nil
  203. if self.controller:GetData() ~= 1 then
  204. vipLv = ManagerContainer.DataMgr.UserData:GetVipLv()
  205. boliLv = ManagerContainer.DataMgr.BoliShopData:GetCurLv()
  206. end
  207. if vipLv and vipLv >= 1 and boliLv then
  208. local vipCfg = ManagerContainer.CfgMgr:GetVipCfgById(vipLv)
  209. local BoliVipCfg = ManagerContainer.CfgMgr:GetBoLiVipCfgById(boliLv)
  210. if vipCfg and BoliVipCfg then
  211. self:RefreshVipItemView(self.ExpVipTag, vipCfg.BaseExpUp + BoliVipCfg.BaseExpUp)
  212. self:RefreshVipItemView(self.ParnterExpVipTag, vipCfg.PartnerExpUp + BoliVipCfg.PartnerExpUp)
  213. self:RefreshVipItemView(self.ZenyVipTag, vipCfg.SilverUp + BoliVipCfg.SilverUp)
  214. self:RefreshVipItemView(self.CruiseVipTag, vipCfg.SkillExpUp + BoliVipCfg.SkillExpUp)
  215. self:RefreshEvilItemView(self.EvilVipTag, vipCfg.DevilsUp + BoliVipCfg.DevilsUp)
  216. self:RefreshVipIconView(self.ExpVipTag.icon.image, nil)
  217. self:RefreshVipIconView(self.ParnterExpVipTag.icon.image, nil)
  218. self:RefreshVipIconView(self.ZenyVipTag.icon.image, nil)
  219. self:RefreshVipIconView(self.CruiseVipTag.icon.image, nil)
  220. CommonUtil.LoadIcon(self, vipCfg.SmallIcon, function(sprite)
  221. if sprite then
  222. self:RefreshVipIconView(self.ExpVipTag.icon.image, sprite)
  223. self:RefreshVipIconView(self.ParnterExpVipTag.icon.image, sprite)
  224. self:RefreshVipIconView(self.ZenyVipTag.icon.image, sprite)
  225. self:RefreshVipIconView(self.CruiseVipTag.icon.image, sprite)
  226. end
  227. end)
  228. CommonUtil.LoadIcon(self, BoliVipCfg.SmallIcon, function(sprite)
  229. if sprite then
  230. self:RefreshVipIconView(self.EvilVipTag.icon.image, sprite)
  231. end
  232. end)
  233. return
  234. end
  235. end
  236. self:RefreshVipItemView(self.ExpVipTag, nil)
  237. self:RefreshVipItemView(self.ParnterExpVipTag, nil)
  238. self:RefreshVipItemView(self.ZenyVipTag, nil)
  239. self:RefreshVipItemView(self.CruiseVipTag, nil)
  240. self:RefreshVipIconView(self.ExpVipTag.icon.image, nil)
  241. self:RefreshVipIconView(self.ParnterExpVipTag.icon.image, nil)
  242. self:RefreshVipIconView(self.ZenyVipTag.icon.image, nil)
  243. self:RefreshVipIconView(self.CruiseVipTag.icon.image, nil)
  244. end
  245. function UIBattleRewardView:RefreshVipItemView(vipTag, value)
  246. if value and value > 0 then
  247. vipTag:SetActive(true)
  248. vipTag.number.text.text = '+' .. CommonUtil.GetPreciseDecimal(value * 0.01, 2) .. '%'
  249. else
  250. vipTag:SetActive(false)
  251. end
  252. end
  253. function UIBattleRewardView:RefreshEvilItemView(vipTag,value)
  254. if value and value > 0 then
  255. vipTag:SetActive(true)
  256. vipTag.number.text.text = '+' .. tostring(value)
  257. else
  258. vipTag:SetActive(false)
  259. end
  260. end
  261. function UIBattleRewardView:RefreshVipIconView(image, sprite)
  262. image.sprite = sprite
  263. image.enabled = (sprite ~= nil)
  264. end
  265. return UIBattleRewardView