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

412 lines
16 KiB
Lua
Raw Normal View History

2021-06-15 11:41:37 +08:00
local LingLongBaoJingPanel = {}
local data = {}
2021-06-10 15:36:59 +08:00
---转盘旋转类型
local TableTurnType={
Normal=1,--默认旋转
Expedite=2,--加快旋转
}
local curTurnPos=1 --当前位置
local sortingOrder = 0
2021-06-15 11:41:37 +08:00
function LingLongBaoJingPanel:New(gameObject)
2021-06-10 15:36:59 +08:00
local b = {}
b.gameObject = gameObject
b.transform = gameObject.transform
2021-06-15 11:41:37 +08:00
setmetatable(b, { __index = LingLongBaoJingPanel })
2021-06-10 15:36:59 +08:00
return b
end
2021-06-16 17:55:19 +08:00
local a,b,c,d
local configs
2021-06-10 15:36:59 +08:00
---初始化组件(用于子类重写)
2021-06-15 11:41:37 +08:00
function LingLongBaoJingPanel:InitComponent(gameObject)
2021-06-10 15:36:59 +08:00
self.spLoader = SpriteLoader.New()
self.luckyTurnPanel = Util.GetGameObject(self.gameObject,"Panel")
self.upView = SubUIManager.Open(SubUIConfig.UpView, self.luckyTurnPanel.transform, { showType = UpViewOpenType.ShowLeft })
self.mask = Util.GetGameObject(self.luckyTurnPanel,"Mask")
self.title = Util.GetGameObject(self.luckyTurnPanel,"BG/title"):GetComponent("Image")
---跑马灯位置(物品位置)
self.itemList = {}
self.itemViewList = {}
for i = 1,2 do
if not self.itemList[i] then
self.itemList[i] = {}
end
self.itemList[i].go = Util.GetGameObject(self.luckyTurnPanel, "TurnTable/ItemList"..i)
self.itemList[i].pre = Util.GetGameObject(self.luckyTurnPanel, "TurnTable/pre"..i)
for j = 1,self.itemList[i].go.transform.childCount do
if not self.itemList[i][j] then
self.itemList[i][j] = {}
2021-06-15 11:41:37 +08:00
end
2021-06-10 15:36:59 +08:00
self.itemList[i][j].pos = Util.GetGameObject(self.itemList[i].go, "item"..j)
self.itemList[i][j].item = newObjToParent(self.itemList[i].pre,self.itemList[i][j].pos)
self.itemList[i][j].mask = Util.GetGameObject(self.itemList[i][j].item, "bg/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")
2021-06-16 13:42:32 +08:00
self.itemList[i][j].selectKuang.gameObject:SetActive(false)
2021-06-15 11:41:37 +08:00
self.itemList[i][j].itemView = SubUIManager.Open(SubUIConfig.ItemView, self.itemList[i][j].itemPos.transform)
2021-06-10 15:36:59 +08:00
self.itemList[i][j].itemView.gameObject:SetActive(false)
end
end
--拥有道具数量
self.propBtn = Util.GetGameObject(self.luckyTurnPanel,"button/Prop")
self.propImage = Util.GetGameObject(self.luckyTurnPanel, "button/Prop/PropImage"):GetComponent("Image")--道具
self.propText =Util.GetGameObject(self.luckyTurnPanel, "button/Prop/PropText"):GetComponent("Text")
-- 奖励预览
self.btnPreview = Util.GetGameObject(self.gameObject, "button/previewBtn")
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")
for i=1,5 do
2021-06-16 17:55:19 +08:00
if not self.rewardBoxList[i] then
self.rewardBoxList[i] = {}
end
self.rewardBoxList[i].go=Util.GetGameObject(self.rewardBox,"Item"..i)
self.rewardBoxList[i].icon =Util.GetGameObject(self.rewardBoxList[i].go,"icon"):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")--幸运值
2021-06-10 15:36:59 +08:00
end
self.itemRewardList = {}
2021-06-16 17:55:19 +08:00
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])
2021-06-10 15:36:59 +08:00
end
---绑定事件(用于子类重写)
2021-06-15 11:41:37 +08:00
function LingLongBaoJingPanel:BindEvent()
2021-06-10 15:36:59 +08:00
--帮助按钮
Util.AddClick(self.helpBtn,function()
--Log("==YSP==点击帮助按钮")
UIManager.OpenPanel(UIName.HelpPopup,HELP_TYPE.LuckyTurn,self.helpPosition.x,self.helpPosition.y)
end)
Util.AddClick(self.btnPreview, function()
2021-06-16 17:55:19 +08:00
UIManager.OpenPanel(UIName.RewardPreviewPopup,PRE_REWARD_POOL_TYPE.LINGLONG)
2021-06-10 15:36:59 +08:00
end)
2021-06-15 11:41:37 +08:00
Util.AddClick(self.propBtn, function()
2021-06-16 17:55:19 +08:00
if not self.enough then
PopupTipPanel.ShowTip("道具不足")
return
end
2021-06-16 13:42:32 +08:00
LingLongBaoJingManager.QiMenDunJiaDrawRequest(self.actId,function(idList,drop)
-- local drop = {}
-- drop.itemlist = {}
-- local idList = {1,1}
local x = function(isGetBigReward)
LingLongBaoJingManager.SetDataListState(idList)
local tempData = {}
for i = 1,#idList do
table.insert(tempData,data[idList[i]])
2021-06-15 11:41:37 +08:00
end
2021-06-16 13:42:32 +08:00
self:RefreshTreasureTypeState(0,tempData)
UIManager.OpenPanel(UIName.RewardItemPopup,drop,1,function()
LuckyTurnTableManager.isCanGetWorldMessage=true
if isGetBigReward then
if LingLongBaoJingManager.IsAllGet() then
LingLongBaoJingManager.SetDataListState(nil,1)
self:RefreshTreasureTypeState(1)
end
LingLongBaoJingManager.SetDataListState(nil,2)
self:RefreshTreasureTypeState(2)
self.itemList[1][idList[2]].selectKuang.gameObject:SetActive(false)
self.itemList[2][1].selectKuang.gameObject:SetActive(false)
self.itemList[2][2].selectKuang.gameObject:SetActive(false)
else
self.itemList[2][idList[1]].selectKuang.gameObject:SetActive(false)
2021-06-16 17:55:19 +08:00
end
self:SetPropShow()
self:RrFreshInfo()
2021-06-15 11:41:37 +08:00
end)
end
2021-06-16 13:42:32 +08:00
curTurnPos = 1
self:SetTableTurnEffect(TableTurnType.Expedite,2,idList[1],function()
if idList[2] and idList[2] > 0 then
PopupTipPanel.ShowTip("播放一些开门的特效")
self:RefreshTreasureMaskByType(1,false)
curTurnPos = 1
self:SetTableTurnEffect(TableTurnType.Expedite,1,idList[2],function()
self:RefreshTreasureMaskByType(1,true)
x(true)
end)
else
x(false)
end
end)
2021-06-15 11:41:37 +08:00
end)
end)
2021-06-10 15:36:59 +08:00
end
---添加事件监听(用于子类重写)
2021-06-15 11:41:37 +08:00
function LingLongBaoJingPanel:AddListener()
2021-06-10 15:36:59 +08:00
end
---移除事件监听(用于子类重写)
2021-06-15 11:41:37 +08:00
function LingLongBaoJingPanel:RemoveListener()
2021-06-10 15:36:59 +08:00
end
--界面打开时调用(用于子类重写)
2021-06-15 11:41:37 +08:00
function LingLongBaoJingPanel:OnOpen(_activityConfig,_index,parent)
2021-06-10 15:36:59 +08:00
self.actConfig = _activityConfig
self.pageIndex = _index
self.parent = parent
end
2021-06-15 11:41:37 +08:00
function LingLongBaoJingPanel:OnSortingOrderChange(_sortingOrder)
2021-06-10 15:36:59 +08:00
self.sortingOrder = _sortingOrder
end
-- 打开,重新打开时回调
2021-06-15 11:41:37 +08:00
function LingLongBaoJingPanel:OnShow(_sortingOrder)
2021-06-16 17:55:19 +08:00
self.parent.tabbox.gameObject:SetActive(false)
2021-06-10 15:36:59 +08:00
self.gameObject:SetActive(true)
2021-06-15 11:41:37 +08:00
self.sortingOrder = _sortingOrder
2021-06-10 15:36:59 +08:00
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
2021-06-15 11:41:37 +08:00
self.turnEffect = Timer.New()
self:RefreshTreasureType()
self:DelayMaskWithTime(1.5)
2021-06-16 13:42:32 +08:00
self:SetPropShow()
2021-06-16 17:55:19 +08:00
self:CreatBox()
2021-06-15 11:41:37 +08:00
end
2021-06-16 13:42:32 +08:00
--赋值
2021-06-15 11:41:37 +08:00
function LingLongBaoJingPanel:RefreshTreasureType()
data = LingLongBaoJingManager.GetRewardList()
for k,v in pairs(data) do
self.itemList[v.typeIndex][v.address].itemView:OnOpen(false, v.reward,1,false,false,false,self.sortingOrder)
self.itemList[v.typeIndex][v.address].itemView.gameObject:SetActive(true)
self:RefreshTreasureTypeState(0,data)
2021-06-10 15:36:59 +08:00
end
2021-06-15 11:41:37 +08:00
self:RefreshTreasureMaskByType(1,true)
self:RefreshTreasureMaskByType(2,false)
end
2021-06-16 13:42:32 +08:00
--刷新状态
2021-06-15 11:41:37 +08:00
function LingLongBaoJingPanel:RefreshTreasureTypeState(typeIndex,_data)
--只重置_data
local tempData = {}
if typeIndex == 0 then
tempData = _data
--重置typeIndex对应的圈
2021-06-10 15:36:59 +08:00
else
2021-06-15 11:41:37 +08:00
data = LingLongBaoJingManager.GetRewardList()
tempData = data
2021-06-10 15:36:59 +08:00
end
2021-06-15 11:41:37 +08:00
for k,v in pairs(tempData) do
2021-06-16 13:42:32 +08:00
if (v.typeIndex == typeIndex) or typeIndex == 0 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
2021-06-15 11:41:37 +08:00
end
2021-06-10 15:36:59 +08:00
end
end
2021-06-16 13:42:32 +08:00
--外圈遮罩设置
2021-06-15 11:41:37 +08:00
function LingLongBaoJingPanel:RefreshTreasureMaskByType(typeIndex,value)
for k,v in pairs(data) do
if v.typeIndex == typeIndex then
self.itemList[v.typeIndex][v.address].mask.gameObject:SetActive(value)
end
end
end
2021-06-10 15:36:59 +08:00
---界面关闭时调用(用于子类重写)
2021-06-15 11:41:37 +08:00
function LingLongBaoJingPanel:OnClose()
2021-06-16 17:55:19 +08:00
self.parent.tabbox.gameObject:SetActive(true)
2021-06-15 11:41:37 +08:00
self.gameObject:SetActive(false)
2021-06-10 15:36:59 +08:00
if self.thread then
coroutine.stop(self.thread)
self.thread=nil
end
if self.turnEffect then
self.turnEffect:Stop()
2021-06-15 11:41:37 +08:00
self.turnEffect = nil
2021-06-10 15:36:59 +08:00
end
end
---界面销毁时调用(用于子类重写)
2021-06-15 11:41:37 +08:00
function LingLongBaoJingPanel:OnDestroy()
for k,v in ipairs(self.itemList) do
for n,m in ipairs(v) do
SubUIManager.Close(m.itemView)
end
end
self.itemList = {}
2021-06-10 15:36:59 +08:00
self.spLoader:Destroy()
SubUIManager.Close(self.upView)
end
---设置转盘滚动 1旋转类型 2探宝类型 3服务器给的探宝后位置
2021-06-15 11:41:37 +08:00
function LingLongBaoJingPanel:SetTableTurnEffect(turnType,treasureType,pos,func)
2021-06-10 15:36:59 +08:00
if turnType==TableTurnType.Normal then --默认旋转
2021-06-15 11:41:37 +08:00
self:TurnEffectReset(0.5,treasureType)
2021-06-10 15:36:59 +08:00
self.turnEffect:Start()
elseif turnType==TableTurnType.Expedite then --抽奖旋转 至指定位置
2021-06-15 11:41:37 +08:00
self:DelayMaskWithBool(true)
self.thread = coroutine.start(function()
2021-06-16 13:42:32 +08:00
self:TurnEffectReset(0.05,treasureType)
coroutine.wait(2)--2
2021-06-15 11:41:37 +08:00
self:TurnEffectReset(0.2,treasureType)
2021-06-16 13:42:32 +08:00
coroutine.wait(0.8)--0.8
2021-06-15 11:41:37 +08:00
self:TurnEffectReset(0.4,treasureType,true,pos,function()--当效果播放完毕后 从管理器取得数据
2021-06-10 15:36:59 +08:00
local timer=Timer.New(function()
2021-06-15 11:41:37 +08:00
self:DelayMaskWithBool(false)
if func then
func()
2021-06-10 15:36:59 +08:00
end
end,0.5,1,true)
timer:Start()
end)
end)
end
end
---转盘滚动特效重设 1移动速度值越小越快 2是否停止 3停止位置
2021-06-15 11:41:37 +08:00
function LingLongBaoJingPanel:TurnEffectReset(turnSpeed,treasureType,isStop,pos,func)
2021-06-10 15:36:59 +08:00
self.turnEffect:Reset(function()
2021-06-16 13:42:32 +08:00
if curTurnPos > #self.itemList[treasureType] then
curTurnPos = 1
end
2021-06-15 11:41:37 +08:00
if treasureType == 2 then
if curTurnPos == 1 or curTurnPos == 2 then
self.itemList[treasureType][#self.itemList[treasureType]].selectKuang.gameObject:SetActive(false)
2021-06-16 13:42:32 +08:00
self.itemList[treasureType][1].selectKuang.gameObject:SetActive(true)
self.itemList[treasureType][2].selectKuang.gameObject:SetActive(true)
2021-06-15 11:41:37 +08:00
else
self.itemList[treasureType][curTurnPos - 1].selectKuang.gameObject:SetActive(false)
if curTurnPos == 3 then
self.itemList[treasureType][curTurnPos - 2].selectKuang.gameObject:SetActive(false)
end
2021-06-16 13:42:32 +08:00
self.itemList[treasureType][curTurnPos].selectKuang.gameObject:SetActive(true)
2021-06-15 11:41:37 +08:00
end
2021-06-10 15:36:59 +08:00
else
2021-06-15 11:41:37 +08:00
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
2021-06-16 13:42:32 +08:00
self.itemList[treasureType][curTurnPos].selectKuang.gameObject:SetActive(true)
2021-06-10 15:36:59 +08:00
end
if isStop then
2021-06-15 11:41:37 +08:00
if (pos == curTurnPos) or (treasureType == 2 and ((pos == 1 and curTurnPos == 2) or (pos == 2 and curTurnPos == 1))) then--如果停到对应位置
2021-06-10 15:36:59 +08:00
self.turnEffect:Stop()--暂停跑马灯
if func then--回调
func()
end
end
end
2021-06-15 11:41:37 +08:00
if treasureType == 2 then
curTurnPos = curTurnPos == 1 and curTurnPos + 2 or curTurnPos + 1
2021-06-10 15:36:59 +08:00
else
2021-06-15 11:41:37 +08:00
curTurnPos = curTurnPos + 1
2021-06-10 15:36:59 +08:00
end
2021-06-15 11:41:37 +08:00
end,turnSpeed,-1,true)
2021-06-16 13:42:32 +08:00
self.turnEffect:Start()
2021-06-10 15:36:59 +08:00
end
---设置道具拥有显示 1道具id 2探宝类型
2021-06-16 13:42:32 +08:00
function LingLongBaoJingPanel:SetPropShow()
2021-06-16 17:55:19 +08:00
self.propImage.sprite = self.spLoader:LoadSprite(GetSpriteNameByItemId(self.costId))
local count = BagManager.GetItemCountById(self.costId)
local singleCount = (a * 1^3 + b * 1^2 + c * 1 ^1 + d * 1^0)
local color
if singleCount <= count then
self.enough = true
color = "FFA000"
else
self.enough = false
color = "FF0000"
end
self.propText.text = string.format("<color=#%s>%s</color>",color,singleCount)
end
function LingLongBaoJingPanel:CreatBox()
self:RefreshLuckyValue()
2021-06-10 15:36:59 +08:00
end
---刷新幸运值
2021-06-15 11:41:37 +08:00
function LingLongBaoJingPanel:RefreshLuckyValue()
2021-06-16 17:55:19 +08:00
configs = ConfigManager.GetAllConfigsDataByKey(ConfigName.ActivityRewardConfig,"ActivityId",self.actId)
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:CalutePos1(self.rewardBox,list)
for i = 1,5 do
local v3 = self.rewardBoxList[i].go:GetComponent("RectTransform").anchoredPosition3D
v3.x = pos[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 < 5 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
end
self.luckySlider.minValue = 0
self.luckySlider.maxValue = configs[#configs].Values[1][1]
self:RrFreshInfo()
end
function LingLongBaoJingPanel:CalutePos1(parent,list)
local pos = {}
local wi = parent.transform.rect.width
for i = 1,#list do
local pos1 = wi *(list[i]/list[#list])
table.insert(pos,pos1)
end
return pos
2021-06-10 15:36:59 +08:00
end
---刷新信息
2021-06-15 11:41:37 +08:00
function LingLongBaoJingPanel:RrFreshInfo()
2021-06-16 17:55:19 +08:00
-- local actInfo = ActivityGiftManager.GetActivityInfoByType(ActivityTypeDef.lingLongBaoJing)
-- self.luckyValueNum.text = actInfo.value .."/" ..configs[#configs].Values[1][1]
--self.luckySlider.value = actInfo.value
2021-06-10 15:36:59 +08:00
end
---延时遮罩 1按时间
2021-06-15 11:41:37 +08:00
function LingLongBaoJingPanel:DelayMaskWithTime(delayTime)
2021-06-10 15:36:59 +08:00
self.mask.gameObject:SetActive(true)
local closeMask=Timer.New(function()
self.mask.gameObject:SetActive(false)
end,delayTime,1,true)
closeMask:Start()
end
---延时遮罩 1按bool
2021-06-15 11:41:37 +08:00
function LingLongBaoJingPanel:DelayMaskWithBool(b)
self.mask.gameObject:SetActive(b)
2021-06-10 15:36:59 +08:00
end
2021-06-15 11:41:37 +08:00
return LingLongBaoJingPanel