miduo_client/Assets/ManagedResources/~Lua/Modules/linglongbaojing/LingLongBaoJingPanel.lua

708 lines
31 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

local LingLongBaoJingPanel = {}
local data = {}
---转盘旋转类型
local TableTurnType={
Normal=1,--默认旋转
Expedite=2,--加快旋转
}
local curTurnPos=1 --当前位置
local sortingOrder = 0
function LingLongBaoJingPanel:New(gameObject)
local b = {}
b.gameObject = gameObject
b.transform = gameObject.transform
setmetatable(b, { __index = LingLongBaoJingPanel })
return b
end
local a,b,c,d
local configs
local isClose = false
local drop = nil
local skip = 0
local actconfigs
local itemWidth,interval = 0,0
local position = {
[1] = 44.2,
[2] = 126.2,
[3] = 209,
[4] = 300,
[5] = 391,
[6] = 480,
[7] = 565.6,
[8] = 654.25,
}
---初始化组件(用于子类重写)
function LingLongBaoJingPanel:InitComponent(gameObject)
self.spLoader = SpriteLoader.New()
self.luckyTurnPanel = Util.GetGameObject(self.gameObject,"Panel")
self.mask = Util.GetGameObject(self.luckyTurnPanel,"TurnTable/Mask")
self.time = Util.GetGameObject(self.luckyTurnPanel,"time"):GetComponent("Text")
self.firstLayer = Util.GetGameObject(self.luckyTurnPanel,"firstLayer"):GetComponent("Canvas")
self.secondLayer = Util.GetGameObject(self.luckyTurnPanel,"turnpanelWai"):GetComponent("Canvas")
self.thirtyLayer = Util.GetGameObject(self.luckyTurnPanel,"TurnTable"):GetComponent("Canvas")
self.forthLayer = Util.GetGameObject(self.luckyTurnPanel,"forthLayer"):GetComponent("Canvas")
self.fx_linglongbaojing_changzhu = Util.GetGameObject(self.firstLayer.transform,"fx_linglongbaojing_changzhu")
self.fx_linglongbaojing_changzhu.gameObject:SetActive(true)
self.fx_linglongbaojing_long = Util.GetGameObject(self.forthLayer.transform,"fx_linglongbaojing_long")
self.fx_linglongbaojing_long.gameObject:SetActive(false)
self.fx_linglongbaojing_chuxian = Util.GetGameObject(self.forthLayer.transform,"fx_linglongbaojing_chuxian")
self.fx_linglongbaojing_chuxian.gameObject:SetActive(false)
self.fx_linglongbaojing_longchuxian = Util.GetGameObject(self.forthLayer.transform,"fx_linglongbaojing_longchuxian")
self.fx_linglongbaojing_longchuxian.gameObject:SetActive(false)
---跑马灯位置(物品位置)
self.itemList = {}
for i = 1,2 do
if not self.itemList[i] then
self.itemList[i] = {}
end
self.itemList[i].go = Util.GetGameObject(self.luckyTurnPanel, "ItemList"..i)
for j = 1,self.itemList[i].go.transform.childCount do
if not self.itemList[i][j] then
self.itemList[i][j] = {}
end
self.itemList[i][j].pos = Util.GetGameObject(self.itemList[i].go, "item"..j)
self.itemList[i][j].item = Util.GetGameObject(self.itemList[i][j].pos, "pre")
local effect = nil
effect = Util.GetGameObject(self.itemList[i][j].item, "fx_linglongbaojing_waiquanchufacangzhu")
if not effect then
effect = Util.GetGameObject(self.itemList[i][j].item, "fx_linglongbaojing_chouzhonglongtou")
end
self.itemList[i][j].effect = effect
if self.itemList[i][j].effect then
self.itemList[i][j].effect.gameObject:SetActive(false)
end
self.itemList[i][j].mask = Util.GetGameObject(self.itemList[i][j].item, "mask")
self.itemList[i][j].itemPos = Util.GetGameObject(self.itemList[i][j].item, "itemPos")
self.itemList[i][j].get = Util.GetGameObject(self.itemList[i][j].item, "get")
self.itemList[i][j].selectKuang = Util.GetGameObject(self.itemList[i][j].item, "selectKuang")
self.itemList[i][j].selectKuang.gameObject:SetActive(false)
self.itemList[i][j].itemView = Util.GetGameObject(self.itemList[i][j].itemPos, "icon"):GetComponent("Image")--道具
self.itemList[i][j].numDi = Util.GetGameObject(self.itemList[i][j].item, "numDi")
self.itemList[i][j].num = Util.GetGameObject(self.itemList[i][j].item, "Text"):GetComponent("Text")
end
end
--拥有道具数量
self.propBtn = Util.GetGameObject(self.thirtyLayer.transform,"Prop")
self.propImage = Util.GetGameObject(self.propBtn, "PropImage"):GetComponent("Image")--道具
self.propText =Util.GetGameObject(self.propBtn, "PropText"):GetComponent("Text")
self.fx_linglongbaojing_kaiqi = Util.GetGameObject(self.propBtn,"fx_linglongbaojing_kaiqi")
self.fx_linglongbaojing_kaiqi.gameObject:SetActive(false)
-- 奖励预览
self.btnPreview = Util.GetGameObject(self.gameObject, "button/previewBtn")
self.shopBtn = Util.GetGameObject(self.gameObject, "button/shopBtn")
self.shopRed = Util.GetGameObject(self.gameObject, "button/shopBtn/red")
self.helpBtn = Util.GetGameObject(self.luckyTurnPanel,"button/helpBtn")
self.helpPosition = Util.GetGameObject(self.luckyTurnPanel,"BG/helpPos"):GetComponent("RectTransform").localPosition
self.slider = Util.GetGameObject(self.luckyTurnPanel,"Slider")
self.luckyValueNum = Util.GetGameObject(self.slider, "LuckyValue/LuckyValueNum"):GetComponent("Text")--幸运值
self.luckySlider = Util.GetGameObject(self.slider, "LuckySlider"):GetComponent("Slider")
self.rewardBoxList={}--奖励盒
self.rewardBox=Util.GetGameObject(self.slider,"RewardBox")
self.itemRewardList = {}
local bg1 = Util.GetGameObject(self.slider, "BG")
for i=1,8 do
if not self.itemRewardList[i] then
self.itemRewardList[i] = SubUIManager.Open(SubUIConfig.ItemView,bg1.transform)
end
self.itemRewardList[i].gameObject:SetActive(false)
if not self.rewardBoxList[i] then
self.rewardBoxList[i] = {}
end
self.rewardBoxList[i].go=Util.GetGameObject(self.rewardBox,"Item"..i)
self.rewardBoxList[i].yiLingQu=Util.GetGameObject(self.rewardBoxList[i].go,"yiLingQu")
self.rewardBoxList[i].icon =Util.GetGameObject(self.rewardBoxList[i].go,"BG"):GetComponent("Image")--幸运值
self.rewardBoxList[i].value =Util.GetGameObject(self.rewardBoxList[i].go,"Value"):GetComponent("Text")--幸运值
self.rewardBoxList[i].redPoint=Util.GetGameObject(self.rewardBoxList[i].go,"redPoint")
self.rewardBoxList[i].Num=Util.GetGameObject(self.rewardBoxList[i].go,"Num/Text"):GetComponent("Text")--幸运值
end
local itemWidth = self.rewardBoxList[1].go:GetComponent("RectTransform").sizeDelta.x
self.skip = Util.GetGameObject(self.gameObject,"button/skip")
self.check = Util.GetGameObject(self.skip,"Go")
self.checkText = Util.GetGameObject(self.skip,"Text"):GetComponent("Text")--幸运值
if not PlayerPrefs.HasKey("Linglongbaojing_SkipAnim"..PlayerManager.uid) then
PlayerPrefs.SetInt("Linglongbaojing_SkipAnim"..PlayerManager.uid,0)
end
skip = PlayerPrefs.GetInt("Linglongbaojing_SkipAnim"..PlayerManager.uid)
self.check.gameObject:SetActive(skip ~= 0)
local config = ConfigManager.GetConfigData(ConfigName.SpecialConfig,117)
local strs = string.split(config.Value,"|")
self.costId = tonumber(strs[1])
strs = string.split(strs[2],"#")
a = tonumber(strs[1])
b = tonumber(strs[2])
c = tonumber(strs[3])
d = tonumber(strs[4])
end
---绑定事件(用于子类重写)
function LingLongBaoJingPanel:BindEvent()
--帮助按钮
Util.AddClick(self.helpBtn,function()
--Log("==YSP==点击帮助按钮")
UIManager.OpenPanel(UIName.HelpPopup,self.actConfig.HelpId,self.helpPosition.x,self.helpPosition.y)
end)
Util.AddClick(self.btnPreview, function()
UIManager.OpenPanel(UIName.RewardPreviewPopup,PRE_REWARD_POOL_TYPE.LINGLONG)
end)
Util.AddClick(self.shopBtn, function()
JumpManager.GoJump(40036)
PlayerPrefs.SetInt(PlayerManager.uid.."lingShouBaoGe",1)
end)
Util.AddClick(self.skip, function()
skip = skip == 0 and 1 or 0
PlayerPrefs.SetInt("Linglongbaojing_SkipAnim"..PlayerManager.uid,skip)
self.check.gameObject:SetActive(skip ~= 0)
self:SetPropShow()
end)
Util.AddClick(self.propBtn, function()
if not self.enough then
PopupTipPanel.ShowTip("道具不足")
return
end
local count = BagManager.GetItemCountById(self.costId)
local TenCount = (a * 10^3 + b * 10^2 + c * 10 ^1 + d * 10^0)
local num = 1
if count >= TenCount and skip == 1 then
num = 10
end
LingLongBaoJingManager.QiMenDunJiaDrawRequest(self.actId,num,function(idList,_drop)
if not idList[1] then
PopupTipPanel.ShowTip("转盘奖励出错了")
return
end
drop = _drop
local isGetBigReward = false
CheckRedPointStatus(RedPointType.linglongBaojing)
self:DelayMaskWithBool(true)
self.fx_linglongbaojing_kaiqi.gameObject:SetActive(true)
SoundManager.PlaySound(SoundConfig.Audio_linglongbaojing_kaiqi_002)
for i = 1,#idList do
local config = ConfigManager.GetConfigData(ConfigName.LingLongPool,idList[i])
if config.Position == 1 then
isGetBigReward = true
end
end
local x = function()
local tempData = {}
for i = 1,#idList do
table.insert(tempData,data[idList[i]])
end
if drop then
UIManager.OpenPanel(UIName.RewardItemPopup,drop,1,function()
drop = nil
NetManager.QiMenDunJiaHitListRequest(self.actId,function(msg)
LingLongBaoJingManager.SetDataListState(nil,1)
LingLongBaoJingManager.SetDataListState(nil,2)
LingLongBaoJingManager.SetDataListState(msg.hitList)
self:RefreshTreasureTypeState(1)
self:RefreshTreasureTypeState(2)
end)
if isGetBigReward then
if not isClose then
self.itemList[1][data[idList[2]].address].selectKuang.gameObject:SetActive(false)
self.itemList[2][data[idList[1]].address].selectKuang.gameObject:SetActive(false)
end
else
if not isClose then
self.itemList[2][data[idList[1]].address].selectKuang.gameObject:SetActive(false)
end
end
self:SetPropShow()
self.fx_linglongbaojing_kaiqi.gameObject:SetActive(false)
if not isClose then
self.itemList[2][1].effect.gameObject:SetActive(false)
end
self.fx_linglongbaojing_longchuxian.gameObject:SetActive(false)
for i = 1,#self.itemList[1] do
if not isClose then
self.itemList[1][i].effect.gameObject:SetActive(false)
end
end
self:DelayMaskWithBool(false)
end)
end
end
curTurnPos = 1
if skip == 1 then
x()
return
end
self:SetTableTurnEffect(TableTurnType.Expedite,2,data[idList[1]].address,function()
if isGetBigReward then
--PopupTipPanel.ShowTip("播放一些开门的特效")
SoundManager.PlaySound(SoundConfig.Audio_linglongbaojing_longmengezi_004)
self.Btncoroutine = coroutine.start(function()
local isStartWai = false
while(not isClose and not isStartWai) do
self.itemList[2][1].effect.gameObject:SetActive(true)
SoundManager.PlaySound(SoundConfig.Audio_linglongbaojing_longsaoguang_006)
coroutine.wait(1)
self.fx_linglongbaojing_longchuxian.gameObject:SetActive(true)
SoundManager.PlaySound(SoundConfig.Audio_linglongbaojing_longpanxuan_005)
coroutine.wait(1)
self:RefreshTreasureMaskByType(1,false)
SoundManager.PlaySound(SoundConfig.Audio_linglongbaojing_waiquandianliang_008)
for i = 1,#self.itemList[1] do
self.itemList[1][i].effect.gameObject:SetActive(true)
end
--coroutine.wait(0.5)
isStartWai = true
end
while(not isClose and isStartWai) do
isStartWai = false
curTurnPos = 1
self:SetTableTurnEffect(TableTurnType.Expedite,1,data[idList[2]].address,function()
self:RefreshTreasureMaskByType(1,true)
x()
end)
end
end)
else
x()
end
end)
end)
end)
end
---添加事件监听(用于子类重写)
function LingLongBaoJingPanel:AddListener()
Game.GlobalEvent:AddEvent(GameEvent.Activity.OnActivityProgressStateChange,self.RefreshProgress1,self)
end
---移除事件监听(用于子类重写)
function LingLongBaoJingPanel:RemoveListener()
Game.GlobalEvent:RemoveEvent(GameEvent.Activity.OnActivityProgressStateChange,self.RefreshProgress1,self)
end
--界面打开时调用(用于子类重写)
function LingLongBaoJingPanel:OnOpen(_activityConfig,_index,parent)
self.actConfig = _activityConfig
self.pageIndex = _index
self.parent = parent
end
function LingLongBaoJingPanel:OnSortingOrderChange(_sortingOrder)
self.sortingOrder = _sortingOrder
self:SetLayer()
end
-- 打开,重新打开时回调
function LingLongBaoJingPanel:OnShow(_sortingOrder)
isClose = false
--self.parent.tabbox.gameObject:SetActive(false)
self.gameObject:SetActive(true)
self.sortingOrder = _sortingOrder
self.actId = self.actConfig.ActId
self.actType = self.actConfig.ActiveType > 0 and self.actConfig.ActiveType or self.actConfig.FunType
if self.actConfig.IfBack == 1 then
if self.actConfig.ActiveType > 0 then
local id = ActivityGiftManager.IsActivityTypeOpen(self.actConfig.ActiveType)
if id and id > 0 then
self.actId = id
local config = ConfigManager.TryGetConfigDataByThreeKey(ConfigName.ActivityGroups,"PageType",self.actConfig.PageType,"ActiveType",self.actConfig.ActiveType,"ActId",id)
if config then
self.actConfig = config
end
end
end
end
self.turnEffect = Timer.New()
self.shopRed:SetActive(PlayerPrefs.GetInt(PlayerManager.uid.."lingShouBaoGe")==0 or not OperatingManager.IsBuyGift(20017))
self:RefreshTreasureType()
self:DelayMaskWithTime(0.5)
self:SetPropShow()
self:CreatBox()
self:SetTime()
self:SetLayer()
self.fx_linglongbaojing_chuxian.gameObject:SetActive(true)
SoundManager.PlaySound(SoundConfig.Audio_linglongbaojing_gaoguang_huaban_001)
Timer.New(function()
self.fx_linglongbaojing_long.gameObject:SetActive(true)
SoundManager.PlaySound(SoundConfig.Audio_linglongbaojing_lianhuaxiazhui_003)
end,0.5):Start()
local act = ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.linglongshangshi)
self.shopBtn:SetActive(not not act)
end
function LingLongBaoJingPanel:SetLayer()
self.firstLayer.overrideSorting = true
self.firstLayer.sortingOrder = self.sortingOrder
self.secondLayer.overrideSorting = true
self.secondLayer.sortingOrder = self.sortingOrder + 1
self.thirtyLayer.overrideSorting = true
self.thirtyLayer.sortingOrder = self.sortingOrder + 2
self.forthLayer.overrideSorting = true
self.forthLayer.sortingOrder = self.sortingOrder + 3
Util.SetParticleSortLayer(self.fx_linglongbaojing_changzhu,self.sortingOrder)
Util.SetParticleSortLayer(self.fx_linglongbaojing_long,self.sortingOrder + 3)
Util.SetParticleSortLayer(self.fx_linglongbaojing_chuxian,self.sortingOrder + 3)
Util.SetParticleSortLayer(self.fx_linglongbaojing_longchuxian,self.sortingOrder + 3)
Util.SetParticleSortLayer(self.fx_linglongbaojing_kaiqi,self.sortingOrder + 2)
for i = 1,#self.itemList do
for j = 1,#self.itemList[i] do
if self.itemList[i][j].effect then
Util.SetParticleSortLayer(self.itemList[i][j].effect,self.sortingOrder + i)
end
end
end
end
function LingLongBaoJingPanel:SetTime()
if self.timer then
self.timer:Stop()
self.timer = nil
end
local time = ActivityGiftManager.GetTaskEndTime(ActivityTypeDef.lingLongBaoJing)
local remainTime = time - GetTimeStamp()
self.time.text = "活动倒计时:"..TimeToDHMS(remainTime)
self.timer = Timer.New(function()
remainTime = remainTime - 1
self.time.text = "活动倒计时:"..TimeToDHMS(remainTime)
if remainTime <= 0 then
self.time.text = "活动倒计时:"..TimeToDHMS(0)
end
end,1,-1,false)
self.timer:Start()
end
--赋值
function LingLongBaoJingPanel:RefreshTreasureType()
data = LingLongBaoJingManager.GetRewardList()
for k,v in pairs(data) do
local config = ConfigManager.GetConfigData(ConfigName.ItemConfig,v.reward[1])
if v.typeIndex == 2 and v.address == 1 then
else
self.itemList[v.typeIndex][v.address].itemView.sprite = self.spLoader:LoadSprite(GetSpriteNameByItemId(v.reward[1]))
end
if config.ItemType ~= ItemType.Hero and config.ItemType ~= ItemType.linglongbaojingkaimen then
self.itemList[v.typeIndex][v.address].numDi.gameObject:SetActive(true)
self.itemList[v.typeIndex][v.address].num.text = PrintWanNum(v.reward[2])
else
self.itemList[v.typeIndex][v.address].numDi.gameObject:SetActive(false)
end
Util.AddOnceClick(self.itemList[v.typeIndex][v.address].itemPos.gameObject, function()
if config.ItemType == ItemType.Hero then
UIManager.OpenPanel(UIName.RoleGetInfoPopup, false, v.reward[1], 5)
elseif config.ItemType == ItemType.linglongbaojingkaimen then
else
UIManager.OpenPanel(UIName.RewardItemSingleShowPopup,v.reward[1])
end
end)
self:RefreshTreasureTypeState(0,data)
end
self:RefreshTreasureMaskByType(1,true)
self:RefreshTreasureMaskByType(2,false)
end
--刷新状态
function LingLongBaoJingPanel:RefreshTreasureTypeState(typeIndex,_data)
--只重置_data
local tempData = {}
if typeIndex == 0 then
tempData = _data
--重置typeIndex对应的圈
else
data = LingLongBaoJingManager.GetRewardList()
tempData = data
end
for k,v in pairs(tempData) do
if ((v.typeIndex == typeIndex) or typeIndex == 0) and not isClose then
if v.state == 0 then
self.itemList[v.typeIndex][v.address].get.gameObject:SetActive(false)
else
self.itemList[v.typeIndex][v.address].get.gameObject:SetActive(true)
end
end
end
end
--外圈遮罩设置
function LingLongBaoJingPanel:RefreshTreasureMaskByType(typeIndex,value)
for k,v in pairs(data) do
if v.typeIndex == typeIndex and not isClose then
self.itemList[v.typeIndex][v.address].mask.gameObject:SetActive(value)
end
end
end
---界面关闭时调用(用于子类重写)
function LingLongBaoJingPanel:OnClose()
isClose = true
if drop then
UIManager.OpenPanel(UIName.RewardItemPopup,drop,1,function()
drop = nil
end)
end
--self.parent.tabbox.gameObject:SetActive(true)
self.fx_linglongbaojing_long.gameObject:SetActive(false)
self.fx_linglongbaojing_chuxian.gameObject:SetActive(false)
self.gameObject:SetActive(false)
if self.thread then
coroutine.stop(self.thread)
self.thread=nil
end
if self.Btncoroutine then
coroutine.stop(self.Btncoroutine)
self.Btncoroutine=nil
end
if self.turnEffect then
self.turnEffect:Stop()
self.turnEffect = nil
end
if self.timer then
self.timer:Stop()
self.timer = nil
end
end
---界面销毁时调用(用于子类重写)
function LingLongBaoJingPanel:OnDestroy()
self.itemList = {}
self.spLoader:Destroy()
end
---设置转盘滚动 1旋转类型 2探宝类型 3服务器给的探宝后位置
function LingLongBaoJingPanel:SetTableTurnEffect(turnType,treasureType,pos,func)
if turnType==TableTurnType.Normal then --默认旋转
self:TurnEffectReset(0.5,treasureType)
self.turnEffect:Start()
elseif turnType==TableTurnType.Expedite then --抽奖旋转 至指定位置
self.thread = coroutine.start(function()
coroutine.wait(1)--2
self:TurnEffectReset(0.05,treasureType)
coroutine.wait(2)--2
self:TurnEffectReset(0.2,treasureType)
coroutine.wait(0.8)--0.8
self:TurnEffectReset(0.4,treasureType,true,pos,function()--当效果播放完毕后 从管理器取得数据
local timer=Timer.New(function()
if func then
func()
end
end,0.5,1,true)
timer:Start()
end)
end)
end
end
---转盘滚动特效重设 1移动速度值越小越快 2是否停止 3停止位置
function LingLongBaoJingPanel:TurnEffectReset(turnSpeed,treasureType,isStop,pos,func)
if not self.turnEffect then
self.turnEffect = Timer.New()
end
self.turnEffect:Reset(function()
if curTurnPos > #self.itemList[treasureType] then
curTurnPos = 1
end
if not isClose then
if curTurnPos == 1 then
self.itemList[treasureType][#self.itemList[treasureType]].selectKuang.gameObject:SetActive(false)
else
self.itemList[treasureType][curTurnPos - 1].selectKuang.gameObject:SetActive(false)
end
self.itemList[treasureType][curTurnPos].selectKuang.gameObject:SetActive(true)
end
if treasureType == 2 then
SoundManager.PlaySound(SoundConfig.Audio_linglongbaojing_neiquanlunge_007)
else
SoundManager.PlaySound(SoundConfig.Audio_linglongbaojing_waiquanlunge_009)
end
if isStop then
if pos == curTurnPos then--如果停到对应位置
self.turnEffect:Stop()--暂停跑马灯
if func then--回调
func()
end
end
end
curTurnPos = curTurnPos + 1
end,turnSpeed,-1,true)
self.turnEffect:Start()
end
---设置道具拥有显示 1道具id 2探宝类型
function LingLongBaoJingPanel:SetPropShow()
self.propImage.sprite = self.spLoader:LoadSprite(GetSpriteNameByItemId(self.costId))
local count = BagManager.GetItemCountById(self.costId)
local tenCount = (a * 10^3 + b * 10^2 + c * 10^1 + d * 10^0)
local singleCount = (a * 1^3 + b * 1^2 + c * 1 ^1 + d * 1^0)
local color
if singleCount <= count then
self.enough = true
color = "283B41"
else
self.enough = false
color = "FF0000"
end
local tempCount = singleCount
if tenCount <= count then
self.checkText.text = "十连跳过动画"
if skip == 1 then
tempCount = tenCount
end
else
self.checkText.text = "跳过动画"
end
self.propText.text = string.format("<color=#%s>×%s</color>",color,tempCount)
end
function LingLongBaoJingPanel:CreatBox()
self:RefreshLuckyValue()
end
---刷新幸运值
function LingLongBaoJingPanel:RefreshLuckyValue()
configs = ConfigManager.GetAllConfigsDataByKey(ConfigName.ActivityRewardConfig,"ActivityId",self.actId)
--interval = self.rewardBox.transform.rect.width - (itemWidth * #configs)
local list = {}
for k,v in ipairs(configs) do
table.insert(list,v.Values[1][1])
end
table.sort(list,function(a,b) return a < b end)
--local pos = self:CalutePos2(self.rewardBox,list)
for i = 1,#self.rewardBoxList do
local v3 = self.rewardBoxList[i].go:GetComponent("RectTransform").anchoredPosition3D
v3.x = position[i]
self.rewardBoxList[i].go:GetComponent("RectTransform").anchoredPosition3D = v3
self.rewardBoxList[i].value.text = configs[i].Values[1][1]..""
self.rewardBoxList[i].redPoint.gameObject:SetActive(false)
if i < 8 then
self.rewardBoxList[i].Num.text = configs[i].Reward[1][2]
self.rewardBoxList[i].icon.sprite = self.spLoader:LoadSprite(GetSpriteNameByItemId(configs[i].Reward[1][1]))
end
self.itemRewardList[i]:OnOpen(false, {configs[i].Reward[1][1],configs[i].Reward[1][2]},1, false, false, false, sortingOrder)
Util.AddOnceClick(self.rewardBoxList[i].icon.gameObject,function()
local mission = ActivityGiftManager.GetActivityInfo(self.actId,configs[i].Id)
if mission.progress >= configs[i].Values[1][1] and mission.state == 0 then
NetManager.GetActivityRewardRequest(configs[i].Id,self.actId,function(drop)
UIManager.OpenPanel(UIName.RewardItemPopup,drop)
self:RefreshProgress(i)
end)
else
self.itemRewardList[i]:OnBtnCkickEvent(configs[i].Reward[1][1])
end
end)
end
self.luckySlider.minValue = 0
self.luckySlider.maxValue = 1
self:RefreshProgress()
end
-- function LingLongBaoJingPanel:CalutePos1(parent,list)
-- local pos = {}
-- local wi = self.rewardBox.transform.rect.width
-- for i = 1,#list do
-- local pos1 = wi * (list[i]/list[#list])
-- table.insert(pos,pos1)
-- end
-- return pos
-- end
-- function LingLongBaoJingPanel:CalutePos2(parent,list)
-- local pos = {}
-- local tmp = 0
-- local count = list[#list]
-- local tempinterval = 0
-- local position = 0
-- local wi = self.rewardBox.transform.rect.width
-- for i = 1,#list do
-- tempinterval = (list[i] - tmp) / count * interval
-- if i == 1 then
-- position = tempinterval
-- else
-- position = tempinterval + itemWidth + position
-- end
-- table.insert(pos,position)
-- end
-- return pos
-- end
function LingLongBaoJingPanel.RefreshProgress1(self)
self:RefreshProgress()
end
function LingLongBaoJingPanel:RefreshProgress(index)
CheckRedPointStatus(RedPointType.linglongBaojing)
actconfigs = ActivityGiftManager.GetActivityInfoByType(self.actId)
LogGreen("actconfigs.mission[1].progress:"..actconfigs.mission[1].progress)
self.luckySlider.value = self:CalculateInterval(actconfigs.mission[1].progress)
self.luckyValueNum.text = actconfigs.mission[1].progress.."/"..configs[#configs].Values[1][1]
if index and index > 0 then
self.rewardBoxList[index].redPoint.gameObject:SetActive(false)
self.rewardBoxList[index].yiLingQu.gameObject:SetActive(true)
else
for i = 1,#self.rewardBoxList do
local mission = ActivityGiftManager.GetActivityInfo(self.actId,configs[i].Id)
if mission.progress >= configs[i].Values[1][1] and mission.state == 0 then
self.rewardBoxList[i].redPoint.gameObject:SetActive(true)
else
self.rewardBoxList[i].redPoint.gameObject:SetActive(false)
if mission.progress >= configs[i].Values[1][1] and mission.state == 1 then
self.rewardBoxList[i].yiLingQu.gameObject:SetActive(true)
end
end
end
end
end
function LingLongBaoJingPanel:CalculateInterval(count)
if not configs or #configs < 1 then
configs = ConfigManager.GetAllConfigsDataByKey(ConfigName.ActivityRewardConfig,"ActivityId",self.actId)
end
local interval = 0
if count >= configs[8].Values[1][1] then
interval = 1
elseif count >= configs[7].Values[1][1] then
interval = position[7]/position[#position] + ((count - configs[7].Values[1][1]) * (position[8] - position[7]) / (configs[8].Values[1][1] - configs[7].Values[1][1]))/position[#position]
elseif count >= configs[6].Values[1][1] then
interval = position[6]/position[#position] + ((count - configs[6].Values[1][1]) * (position[7] - position[6]) / (configs[7].Values[1][1] - configs[6].Values[1][1]))/position[#position]
elseif count >= configs[5].Values[1][1] then
interval = position[5]/position[#position] + ((count - configs[5].Values[1][1]) * (position[6] - position[5]) / (configs[6].Values[1][1] - configs[5].Values[1][1]))/position[#position]
elseif count >= configs[4].Values[1][1] then
interval = position[4]/position[#position] + ((count - configs[4].Values[1][1]) * (position[5] - position[4]) / (configs[5].Values[1][1] - configs[4].Values[1][1]))/position[#position]
elseif count >= configs[3].Values[1][1] then
interval = position[3]/position[#position] + ((count - configs[3].Values[1][1]) * (position[4] - position[3]) / (configs[4].Values[1][1] - configs[3].Values[1][1]))/position[#position]
elseif count >= configs[2].Values[1][1] then
interval = position[2]/position[#position] + ((count - configs[2].Values[1][1]) * (position[3] - position[2]) / (configs[3].Values[1][1] - configs[2].Values[1][1]))/position[#position]
elseif count >= configs[1].Values[1][1] then
interval = position[1]/position[#position] + ((count - configs[1].Values[1][1]) * (position[2] - position[1]) / (configs[2].Values[1][1] - configs[1].Values[1][1]))/position[#position]
else
interval = 0 + ((count ) * (position[1] - 0) / (configs[1].Values[1][1] - 0))/position[#position]
end
return interval
end
---延时遮罩 1按时间
function LingLongBaoJingPanel:DelayMaskWithTime(delayTime)
self.mask.gameObject:SetActive(true)
self.parent.mask.gameObject:SetActive(true)
local closeMask=Timer.New(function()
self.mask.gameObject:SetActive(false)
self.parent.mask.gameObject:SetActive(false)
end,delayTime,1,true)
closeMask:Start()
end
---延时遮罩 1按bool
function LingLongBaoJingPanel:DelayMaskWithBool(b)
self.mask.gameObject:SetActive(b)
self.parent.mask.gameObject:SetActive(b)
end
return LingLongBaoJingPanel