| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308 |
- local UIBattleRewardView = require("UIBattle/UIBattleRewardView_Generate")
- function UIBattleRewardView:OnAwake(data)
- self.controller = require("UIBattle/UIBattleRewardCtr"):new()
- self.controller:Init(self)
- self.controller:SetData(data)
- end
- function UIBattleRewardView:AddEventListener()
- end
- function UIBattleRewardView:FillContent(data, uiBase)
- self.itemList = {}
- 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 UIBattleRewardView:Init()
- self:ShowRewardTime();
- self:RefreshLevelUpTime();
- self:ShowBossCount();
- self:ShowShowReWardPerMinute();
- self:ShowRewardData();
- self.time:SetActive(self.controller:GetData() ~= 1 );
- self.reward120m:SetActive(self.controller:GetData() == 1 );
- end
- function UIBattleRewardView:RemoveEventListener()
- ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
- end
- function UIBattleRewardView:AddUIEventListener()
- self.uiBase:AddButtonEventListener(self.AnyBtn.button,self, self.OnClickClose)
- end
- function UIBattleRewardView:OnHide()
- end
- function UIBattleRewardView:OnShow(data)
- self.controller:SetData(data)
- self:Init()
- end
- function UIBattleRewardView:OnClose()
- end
- function UIBattleRewardView:OnDispose()
- if self.ItemScrollView and self.ItemScrollView.loopVerticalScrollRect then
- self.ItemScrollView.loopVerticalScrollRect:ClearCells()
- end
- end
- function UIBattleRewardView:ShowRewardTime()
- self.bossCount.gameObject:SetActive(false); --隐藏击败boss数量(策划需求)
- local passedTime = ManagerContainer.LuaBattleMgr.accumIncomeTime;
- local maxTime = ManagerContainer.LuaBattleMgr:MaxInComeTime() * 1000
- if passedTime >= maxTime then
- passedTime = maxTime
- -- self.RewardTimeSlider.slider.value = 1
- -- --self.MaxNode:SetActive(true)
- -- self.RewardTimeLbl.text.text = "12时"
- -- return
- end
- local _rewardIntervalTime = GlobalConfig.Instance:GetConfigIntValue(47)
- local _rewardNum = CommonUtil.GetPreciseDecimal(math.floor(passedTime / _rewardIntervalTime / 1000),0);
- if _rewardNum < 1 then _rewardNum = 1; end --只要能打开这个界面,那至少显示应该是够领取一次了,所以这个值一定是大于1的。但是有时候计时上会有误差,转换的时候这里做一个保护。
- local _timeS = _rewardNum * _rewardIntervalTime; --折算成秒
- self.RewardTimeSlider.slider.value = passedTime / maxTime;
- self.RewardTimeLbl.text.text = DateTimeUtil.convertSeconds2TimeStr(_timeS, false);
- end
- function UIBattleRewardView:ShowBossCount()
- --[[策划暂时不想让显示击杀boss数量,暂时隐藏,将来入股再想让开启再打开就是了
- local count = ManagerContainer.LuaBattleMgr:GetRewardMapCount()
- self.BossCountLbl.text.text = I18N.SetLanguageValue("BossKill", count)]]--
- end
- function UIBattleRewardView:ShowShowReWardPerMinute()
- self.profit.ExpLbl.text.text = ManagerContainer.LuaBattleMgr:CurSimpleLevelExp() .. "/" .. I18N.T("m") ;
- self.profit.ZenyLbl.text.text = ManagerContainer.LuaBattleMgr:CurSimpleLevelZeny() .. "/" .. I18N.T("m");
- self.profit.ParnterExpLbl.text.text = ManagerContainer.LuaBattleMgr:CurSimpleLevelParnterExp() .. "/" .. I18N.T("m");
- self.profit.CruiseLbl.text.text = ManagerContainer.LuaBattleMgr:CurSimpleLevelCruise() .. "/" .. I18N.T("m");
- self.profit.GoldLbl.text.text = ManagerContainer.LuaBattleMgr:CurSimpleLevelGold() .. "/" .. I18N.T("m");
- self.profit.EvilLbl.text.text = ManagerContainer.LuaBattleMgr:CurSimpleLevelEvil() .. "/" .. I18N.T("m");
- end
- function UIBattleRewardView:ShowRewardData()
- local zenyCnt = ManagerContainer.LuaBattleMgr:GetRewardCnt(Enum.ItemType.Coin)
- local partnerExpCnt = ManagerContainer.LuaBattleMgr:GetRewardCnt(Enum.ItemType.ParterExp)
- local expCnt = ManagerContainer.LuaBattleMgr:GetRewardCnt(Enum.ItemType.RoleBaseExp)
- local treasureCnt = ManagerContainer.LuaBattleMgr:GetRewardCnt(Enum.ItemType.SkillExp)
- local goldCnt = ManagerContainer.LuaBattleMgr:GetRewardCnt(Enum.ItemType.Diamond)
- local evilCnt = ManagerContainer.LuaBattleMgr:GetRewardCnt(Enum.ItemType.EvilExp)
- self.ExpLbl.text.text = expCnt .. ""
- self.ParnterExpLbl.text.text = partnerExpCnt .. ""
- self.ZenyLbl.text.text = zenyCnt .. ""
- self.CruiseLbl.text.text = treasureCnt .. ""
- self.GoldLbl.text.text = goldCnt .. ""
- self.EvilLbl.text.text = evilCnt .. ""
- self:RefreshVipView()
- for i = 1, #ManagerContainer.LuaBattleMgr.rewardItemList do
- local item = ManagerContainer.LuaBattleMgr.rewardItemList[i];
- if item.key >= 100 then
- self.itemList[#self.itemList+1] = item
- end
- end
- if #self.itemList == 0 then
- self.None:SetActive(true)
- self.ItemScrollView:SetActive(false)
- else
- self.None:SetActive(false)
- self.ItemScrollView:SetActive(true)
- end
- self:Sort();
- CommonUtil.LoopGridViewEleCreateNew(self,
- self.ItemScrollView.loopVerticalScrollRect,
- self.ItemContent.gridLayoutGroup,self.itemList,0,self,self.OnUpdateItemData)
- end
- function UIBattleRewardView:Sort()
- if #self.itemList <= 0 then return; end
- table.sort(self.itemList, function (a, b)
- local _aCfg = ManagerContainer.CfgMgr:GetItemById(a.key);
- local _bCfg = ManagerContainer.CfgMgr:GetItemById(b.key);
- if _aCfg ~= nil and _bCfg == nil then
- return true;
- elseif _aCfg == nil and _bCfg ~= nil then
- return false;
- elseif _aCfg ~= nil and _bCfg ~= nil then
- local _aQuality = _aCfg.Quality;
- local _bQuality = _bCfg.Quality;
- if _aQuality ~= nil and _bQuality == nil then
- return true;
- elseif _aQuality == nil and _bQuality ~= nil then
- return false;
- elseif _aQuality ~= nil and _bQuality ~= nil then
- if _aQuality ~= _bQuality then
- return _aQuality > _bQuality;
- else
- return a.key < b.key;
- end
- else
- return a.key < b.key;
- end
- else
- return a.key < b.key;
- end
- end)
- end
- function UIBattleRewardView:OnUpdateItemData(itemLua,idx)
- local item = self.itemList[idx+1];
- if item~= nil then
- CommonUtil.SetRewardItemData(self,item.key,itemLua,item.value, self.OnClickItem)
- end
- end
- function UIBattleRewardView:OnClickItem(btn,params)
- --local logicData = params[0]
- --ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIItemTips, item)
- local data = params[0]
- local itemData = ManagerContainer.DataMgr.BagData:GetItemDataByCfgId(data.cfgId)
- data.timeStamp = itemData and itemData.timeStamp or nil
- ManagerContainer.LuaUIMgr:OpenTips(data)
- end
- function UIBattleRewardView:OnClickClose()
- ManagerContainer.LuaUIMgr:ClosePage(Enum.UIPageName.UIBattleReward)
- end
- --刷新升级所需的挂机时间
- function UIBattleRewardView:RefreshLevelUpTime()
- local _canLevelUp, _needTime, _toNextLevel = self:GetLevelUpNeedTime();
- self.talkBox1.levelUpTime.gameObject:SetActive(_canLevelUp);
- if _canLevelUp then
- self.talkBox1.levelUpTime.time.text.text = _needTime;
- self.talkBox1.levelUpTime.title.text.text = _toNextLevel;
- end
- end
- --计算升级需要的挂机时间,返回值第一个是bool类型,表示是否不能再升级,第二个是升级到下一个等级需要的时间,第三个是升级到**等级
- function UIBattleRewardView:GetLevelUpNeedTime()
- local _baseLv = ManagerContainer.DataMgr.UserData:GetRoleLv();
- local _nextBaseLv = _baseLv + 1;
- local _roleAttrData = ManagerContainer.CfgMgr:GetRoleExpData(_baseLv);
- local _roleAttrNextData = ManagerContainer.CfgMgr:GetRoleExpData(_nextBaseLv);
- if not _roleAttrData or not _roleAttrNextData then --没有该等级说明出bug了,没有改等级的下一等级,说明满级了,不可能再升级
- return false , "";
- end
- local _curLevel = ManagerContainer.LuaBattleMgr:GetCurLevelUniqueId();
- local _levelData = ManagerContainer.CfgMgr:GetLevelDataById(_curLevel);
- if not _levelData then
- LogError("没有找到对应当前等级的level表数据。当前等级是:" .. tostring(_curLevel))
- return false, "";
- end
- local _roleExp = ManagerContainer.DataMgr.UserData:GetRoleExp();
- local _curBaseMaxExp = ManagerContainer.DataMgr.UserData:GetHeroCurBaseMaxExp();
- local _rewardIntervalTime = GlobalConfig.Instance:GetConfigIntValue(47)
- local _needExp = _curBaseMaxExp - _roleExp;
- local _exp = _levelData.BaseExpOl or 0;
- local _expPerSecond = _exp / _rewardIntervalTime;
- local _needSeconds = _needExp / _expPerSecond;
- local _time = "";
- if _needSeconds >= 60 and _needSeconds < Constant.OneDaySeconds then
- _time = DateTimeUtil.convertSeconds2TimeStr1(_needSeconds, true, false, false);
- elseif _needSeconds >= Constant.OneDaySeconds then
- _time = DateTimeUtil.convertSeconds2TimeStr1(_needSeconds, false, false, false);
- else
- _time = "1" .. I18N.T("MINS");
- end
- local _toNextLevel = I18N.SetLanguageValue("LevelUpTime", _nextBaseLv)
- return true, _time, _toNextLevel;
- end
- function UIBattleRewardView:RefreshVipView()
- local vipLv = nil
- local boliLv = nil
- if self.controller:GetData() ~= 1 then
- vipLv = ManagerContainer.DataMgr.UserData:GetVipLv()
- boliLv = ManagerContainer.DataMgr.BoliShopData:GetCurLv()
- end
- if vipLv and vipLv >= 1 and boliLv then
- local vipCfg = ManagerContainer.CfgMgr:GetVipCfgById(vipLv)
- local BoliVipCfg = ManagerContainer.CfgMgr:GetBoLiVipCfgById(boliLv)
- if vipCfg and BoliVipCfg then
- self:RefreshVipItemView(self.ExpVipTag, vipCfg.BaseExpUp + BoliVipCfg.BaseExpUp)
- self:RefreshVipItemView(self.ParnterExpVipTag, vipCfg.PartnerExpUp + BoliVipCfg.PartnerExpUp)
- self:RefreshVipItemView(self.ZenyVipTag, vipCfg.SilverUp + BoliVipCfg.SilverUp)
- self:RefreshVipItemView(self.CruiseVipTag, vipCfg.SkillExpUp + BoliVipCfg.SkillExpUp)
- self:RefreshEvilItemView(self.EvilVipTag, vipCfg.DevilsUp + BoliVipCfg.DevilsUp)
- self:RefreshVipIconView(self.ExpVipTag.icon.image, nil)
- self:RefreshVipIconView(self.ParnterExpVipTag.icon.image, nil)
- self:RefreshVipIconView(self.ZenyVipTag.icon.image, nil)
- self:RefreshVipIconView(self.CruiseVipTag.icon.image, nil)
- CommonUtil.LoadIcon(self, vipCfg.SmallIcon, function(sprite)
- if sprite then
- self:RefreshVipIconView(self.ExpVipTag.icon.image, sprite)
- self:RefreshVipIconView(self.ParnterExpVipTag.icon.image, sprite)
- self:RefreshVipIconView(self.ZenyVipTag.icon.image, sprite)
- self:RefreshVipIconView(self.CruiseVipTag.icon.image, sprite)
- end
- end)
- CommonUtil.LoadIcon(self, BoliVipCfg.SmallIcon, function(sprite)
- if sprite then
- self:RefreshVipIconView(self.EvilVipTag.icon.image, sprite)
- end
- end)
- return
- end
- end
- self:RefreshVipItemView(self.ExpVipTag, nil)
- self:RefreshVipItemView(self.ParnterExpVipTag, nil)
- self:RefreshVipItemView(self.ZenyVipTag, nil)
- self:RefreshVipItemView(self.CruiseVipTag, nil)
- self:RefreshVipIconView(self.ExpVipTag.icon.image, nil)
- self:RefreshVipIconView(self.ParnterExpVipTag.icon.image, nil)
- self:RefreshVipIconView(self.ZenyVipTag.icon.image, nil)
- self:RefreshVipIconView(self.CruiseVipTag.icon.image, nil)
- end
- function UIBattleRewardView:RefreshVipItemView(vipTag, value)
- if value and value > 0 then
- vipTag:SetActive(true)
- vipTag.number.text.text = '+' .. CommonUtil.GetPreciseDecimal(value * 0.01, 2) .. '%'
- else
- vipTag:SetActive(false)
- end
- end
- function UIBattleRewardView:RefreshEvilItemView(vipTag,value)
- if value and value > 0 then
- vipTag:SetActive(true)
- vipTag.number.text.text = '+' .. tostring(value)
- else
- vipTag:SetActive(false)
- end
- end
- function UIBattleRewardView:RefreshVipIconView(image, sprite)
- image.sprite = sprite
- image.enabled = (sprite ~= nil)
- end
- return UIBattleRewardView
|