miduo_client/Assets/ManagedResources/~Lua/Modules/TianShuMiJuan/TianShuMiJuanMainPanel.lua

262 lines
8.9 KiB
Lua
Raw Normal View History

2021-04-21 13:12:04 +08:00

2021-03-19 14:37:24 +08:00
require("Base/BasePanel")
2021-03-16 17:37:32 +08:00
local TianShuMiJuanMainPanel = Inherit(BasePanel)
local this = TianShuMiJuanMainPanel
2021-03-19 14:37:24 +08:00
local gameSetting = ConfigManager.GetConfig(ConfigName.GameSetting)
local redPointList = {}
2021-03-16 17:37:32 +08:00
-- Tab管理器
local TabBox = require("Modules/Common/TabBox")
2021-03-19 14:37:24 +08:00
local tabs = {
[1] = { --神将
2021-04-09 12:26:35 +08:00
default = "r_hero_xuanze_002", lock = "r_hero_xuanze_002", select = "r_hero_xuanze_001",tabName = Language[12274],
2021-03-23 14:13:02 +08:00
rpType = RedPointType.Hero_Fetter,funcType = -1,bg = "t_tianshumijuan_shengjiangditu",zi = "t_tianshumijuan_shenjiangpian_zi_zh",
2021-03-19 14:37:24 +08:00
},
[2] = { --魂印
2021-04-09 12:26:35 +08:00
default = "r_hero_xuanze_002", lock = "r_hero_xuanze_002", select = "r_hero_xuanze_001",tabName = Language[12275],
2021-03-23 14:13:02 +08:00
rpType = RedPointType.SoulPrint_Fetter,funcType = FUNCTION_OPEN_TYPE.hunyin,bg = "t_tianshumijuan_hunyinditu",zi = "t_tianshumijuan_hunyingpian_zi_zh", --gamesetting.EquipSignUnlock
2021-03-19 14:37:24 +08:00
},
[3] = { --灵兽
2021-04-09 12:26:35 +08:00
default = "r_hero_xuanze_002", lock = "r_hero_xuanze_002", select = "r_hero_xuanze_001",tabName = Language[12276],
2021-03-23 14:13:02 +08:00
rpType = RedPointType.TianShuPokemon_Fetter,funcType = FUNCTION_OPEN_TYPE.POKEMON,bg = "t_tianshumijuan_lingshouditu",zi = "t_tianshumijuan_lingshoupian_zi_zh",
2021-03-19 14:37:24 +08:00
},
[4] = { --装备
default = "r_hero_xuanze_002", lock = "r_hero_xuanze_002", select = "r_hero_xuanze_001",tabName = "装备篇",
rpType = RedPointType.Equip_Fetter,funcType = FUNCTION_OPEN_TYPE.COMPOUND,bg = "t_tianshumijuan_shengjiangditu",zi = "t_tianshumijuan_zhuangbeipian_zi_zh",
},
2021-03-19 14:37:24 +08:00
}
2021-03-23 14:56:13 +08:00
local status = {
2021-04-09 12:26:35 +08:00
[0] = Language[10175],
[1] = Language[11533],
[2] = Language[11947],
2021-03-23 14:56:13 +08:00
}
2021-03-19 14:37:24 +08:00
local curPage = 1
2021-03-23 14:56:13 +08:00
local data = {}
local curShai = 0 --0 全部 1 已激活 2 未激活
local curData = {}
2021-03-16 17:37:32 +08:00
--初始化组件(用于子类重写)
function TianShuMiJuanMainPanel:InitComponent()
2021-04-21 13:12:04 +08:00
this.spLoader = SpriteLoader.New()
2021-03-19 14:37:24 +08:00
self.itemPreList = {}
2021-03-22 15:16:29 +08:00
self.tabbox = Util.GetGameObject(self.gameObject,"bg/tabbox")
2021-03-19 14:37:24 +08:00
self.bg = Util.GetGameObject(self.gameObject,"bg/Bg"):GetComponent("Image")
self.title = Util.GetGameObject(self.gameObject,"bg/title"):GetComponent("Image")
self.btnBack = Util.GetGameObject(self.gameObject,"bg/btnBack")
2021-04-07 15:22:32 +08:00
self.shai = Util.GetGameObject(self.gameObject,"shai")
2021-03-19 14:37:24 +08:00
self.shaiText = Util.GetGameObject(self.shai,"Text"):GetComponent("Text")
2021-04-07 17:48:07 +08:00
SetTextVerTial(self.shaiText,Vector3.New(30,0,0),nil,nil,10)
2021-03-19 14:37:24 +08:00
self.fetterItem = Util.GetGameObject(self.gameObject,"fetterItem")
local grid = Util.GetGameObject(self.gameObject,"bg/fetterGrid")
local v21 = grid.transform.rect
2021-03-30 18:18:16 +08:00
self.scroll = SubUIManager.Open(SubUIConfig.ScrollCycleView,grid.transform,self.fetterItem,nil,Vector2.New(v21.width, v21.height), 1, 1, Vector2.New(0,25))
2021-03-19 14:37:24 +08:00
self.empty = Util.GetGameObject(self.gameObject,"bg/NoneImage")
self.Image = Util.GetGameObject(self.gameObject,"bg/static/Image (1)"):GetComponent("RectTransform")
2021-03-19 14:37:24 +08:00
end
function TianShuMiJuanMainPanel.SetTabAdapter(newTab, index, status)
local img = Util.GetGameObject(newTab.gameObject,"img"):GetComponent("Image")
local redpot = Util.GetGameObject(newTab.gameObject,"redpot")
local tabName = Util.GetGameObject(newTab.gameObject,"Text"):GetComponent("Text")
2021-03-23 17:10:04 +08:00
local lock = Util.GetGameObject(newTab.gameObject,"lock")
2021-03-19 14:37:24 +08:00
if tabs[index].rpType > 0 then
if redPointList[tabs[index].rpType] then
ClearRedPointObject(tabs[index].rpType,redPointList[tabs[index].rpType])
end
BindRedPointObject(tabs[index].rpType,redpot)
redPointList[tabs[index].rpType] = redpot
end
2021-04-21 13:12:04 +08:00
img.sprite = this.spLoader:LoadSprite(tabs[index][status])
2021-03-19 14:37:24 +08:00
tabName.text = tabs[index].tabName
2021-03-23 17:10:04 +08:00
if status == "lock" then
lock.gameObject:SetActive(true)
else
lock.gameObject:SetActive(false)
end
2021-03-25 10:57:54 +08:00
if tabs[index].funcType < 1 then
newTab.gameObject:SetActive(true)
else
local config = ConfigManager.GetConfigData(ConfigName.GlobalSystemConfig,tabs[index].funcType)
if config and config.IsOpen == 0 then
newTab.gameObject:SetActive(false)
else
newTab.gameObject:SetActive(true)
end
end
2021-03-23 17:10:04 +08:00
end
2021-03-16 17:37:32 +08:00
2021-03-23 17:10:04 +08:00
function TianShuMiJuanMainPanel.TabIsLockCheck(index)
2021-03-23 14:13:02 +08:00
if tabs[index].funcType > 0 then
2021-03-19 14:37:24 +08:00
if ActTimeCtrlManager.SingleFuncState(tabs[index].funcType) then
2021-03-23 17:10:04 +08:00
return false
2021-03-19 14:37:24 +08:00
else
2021-03-23 17:10:04 +08:00
return true,ActTimeCtrlManager.SystemOpenTip(tabs[index].funcType)
2021-03-19 14:37:24 +08:00
end
2021-03-23 14:13:02 +08:00
else
2021-03-23 17:10:04 +08:00
return false
2021-03-19 14:37:24 +08:00
end
2021-03-16 17:37:32 +08:00
end
2021-03-19 14:37:24 +08:00
function TianShuMiJuanMainPanel.SetChangeTabCallBack(index)
if curPage == index then
2021-04-07 17:48:07 +08:00
return
end
2021-03-19 14:37:24 +08:00
curPage = index
2021-03-23 14:56:13 +08:00
curShai = 0
2021-03-22 15:16:29 +08:00
this:OnShow(self)
2021-03-19 14:37:24 +08:00
end
2021-03-16 17:37:32 +08:00
--绑定事件(用于子类重写)
function TianShuMiJuanMainPanel:BindEvent()
2021-03-19 14:37:24 +08:00
Util.AddClick(self.btnBack, function()
self:ClosePanel()
end)
Util.AddClick(self.shai, function()
2021-03-23 14:56:13 +08:00
curShai = curShai + 1
curShai = curShai%3
self.shaiText.text = status[curShai]
curData = self:ShaiData()
self:RefreshData(curData)
2021-03-16 17:37:32 +08:00
end)
2021-03-22 15:16:29 +08:00
self.tabBox = TabBox.New()
self.tabBox:SetTabAdapter(self.SetTabAdapter)
self.tabBox:SetTabIsLockCheck(self.TabIsLockCheck)
self.tabBox:SetChangeTabCallBack(self.SetChangeTabCallBack)
2021-03-16 17:37:32 +08:00
end
--添加事件监听(用于子类重写)
function TianShuMiJuanMainPanel:AddListener()
2021-03-19 14:37:24 +08:00
2021-03-16 17:37:32 +08:00
end
--移除事件监听(用于子类重写)
function TianShuMiJuanMainPanel:RemoveListener()
end
--界面打开时调用(用于子类重写)
2021-03-19 14:37:24 +08:00
function TianShuMiJuanMainPanel:OnOpen(...)
local args = {...}
curPage = args[1] or 1
2021-03-23 14:56:13 +08:00
curShai = 0
self.shaiText.text = status[curShai]
2021-03-22 15:16:29 +08:00
self.tabBox:Init(self.tabbox.gameObject, tabs, curPage)
2021-03-16 17:37:32 +08:00
end
-- 打开,重新打开时回调
2021-03-19 14:37:24 +08:00
function TianShuMiJuanMainPanel:OnShow()
2021-03-23 15:23:37 +08:00
self.shaiText.text = status[curShai]
2021-04-21 13:12:04 +08:00
self.bg.sprite = this.spLoader:LoadSprite(tabs[curPage].bg)
self.title.sprite = this.spLoader:LoadSprite(tabs[curPage].zi)
2021-03-23 14:56:13 +08:00
data = TianShuMiJuanManger.GetFetterDataByFetterType(curPage)
curData = self:ShaiData()
self:RefreshData()
end
function TianShuMiJuanMainPanel:RefreshData()
self:ChengeSize()
2021-03-23 14:56:13 +08:00
self:SortData()
2021-03-19 14:37:24 +08:00
self.scroll:ForeachItemGO(function(index,go)
go.gameObject:SetActive(false)
end)
2021-03-23 14:56:13 +08:00
if not curData or #curData < 1 then
2021-03-19 14:37:24 +08:00
self.empty.gameObject:SetActive(true)
self.scroll.gameObject:SetActive(false)
2021-03-19 14:37:24 +08:00
else
self.empty.gameObject:SetActive(false)
self.scroll.gameObject:SetActive(true)
2021-03-23 14:56:13 +08:00
self.scroll:SetData(curData,function(index,go)
self:SetSingleData(go,curData[index],index)
2021-03-19 14:37:24 +08:00
end)
self.scroll:SetIndex(1)
2021-03-16 17:37:32 +08:00
end
end
--灯笼大小变化
function TianShuMiJuanMainPanel:ChengeSize()
if GetCurLanguage() == 0 then return end
local width = GetPreferredWidth(self.shaiText.transform)
local vec = self.Image.transform.sizeDelta
local shaiVect = self.shai:GetComponent("RectTransform").transform.sizeDelta
if width > 120 then
vec.y = width + 400
shaiVect.y = width + 50
else
vec.y = 482
shaiVect.y = 161
end
self.Image.transform.sizeDelta = vec
self.shai:GetComponent("RectTransform").transform.sizeDelta = shaiVect
end
2021-03-23 14:56:13 +08:00
function TianShuMiJuanMainPanel:ShaiData()
if not data or #data < 1 then
return
end
local shaiValue = 0
if curShai == 0 then
return data
elseif curShai == 1 then
shaiValue = 1
else
shaiValue = 0
end
local returnData = {}
for k,v in ipairs(data) do
if shaiValue ~= 0 and v.enabled == shaiValue then
table.insert(returnData,v)
elseif shaiValue == 0 and v.enabled < 1 then
table.insert(returnData,v)
end
end
return returnData
end
local sortData = {
[0] = 0,
2021-03-25 15:34:05 +08:00
[1] = 1,
[-1] = 2,
2021-03-23 14:56:13 +08:00
}
function TianShuMiJuanMainPanel:SortData()
if not curData or #curData < 1 then
return
end
table.sort(curData,function(a,b)
if sortData[a.enabled] == sortData[b.enabled] then
return a.id < b.id
end
return sortData[a.enabled] < sortData[b.enabled]
end)
end
2021-03-22 15:16:29 +08:00
function TianShuMiJuanMainPanel:SetSingleData(go,item,index)
2021-03-19 14:37:24 +08:00
if not self.itemPreList[go] then
2021-03-22 15:16:29 +08:00
self.itemPreList[go] = SubUIManager.Open(SubUIConfig.FetterItem,go.transform)
2021-03-19 14:37:24 +08:00
end
2021-03-22 15:16:29 +08:00
if not item then
2021-03-19 14:37:24 +08:00
go.gameObject:SetActive(false)
return
end
go.gameObject:SetActive(true)
2021-03-23 15:16:38 +08:00
self.itemPreList[go]:SetData(item,self)
2021-03-16 17:37:32 +08:00
end
--界面关闭时调用(用于子类重写)
function TianShuMiJuanMainPanel:OnClose()
2021-03-23 15:23:37 +08:00
curPage = 0
curShai = 0
2021-03-16 17:37:32 +08:00
end
--界面销毁时调用(用于子类重写)
function TianShuMiJuanMainPanel:OnDestroy()
2021-04-21 13:12:04 +08:00
this.spLoader:Destroy()
2021-03-19 14:37:24 +08:00
for k,v in pairs(redPointList) do
ClearRedPointObject(k,v)
end
for k,v in pairs(self.itemPreList) do
SubUIManager.Close(v)
end
2021-03-23 16:52:19 +08:00
SubUIManager.Close(self.scroll)
2021-03-22 15:16:29 +08:00
self.itemPreList = {}
2021-03-19 14:37:24 +08:00
redPointList = {}
2021-03-16 17:37:32 +08:00
end
return this