miduo_client/Assets/ManagedResources/~Lua/Modules/Guild/RedPacketView/RedPacketPanel.lua

183 lines
6.1 KiB
Lua

----- 公会红包 -----
require("Base/BasePanel")
local RedPacketPanel = Inherit(BasePanel)
local this=RedPacketPanel
local TabBox = require("Modules/Common/TabBox")
local _TabImgData = {select = "r_tongyong_xiaanniu_01", default = "r_tongyong_xiaanniu_02",}
local _TabFontColor = { default = Color.New(130 / 255, 128 / 255, 120 / 255, 1),
select = Color.New(243 / 255, 235 / 255, 202 / 255, 1) }
local _TabData = {
[1]= {txt = Language[11037]},
[2]= {txt = "发福利红包"},
[3]= {txt = Language[11038]},
[4]= {txt = Language[11039]},
}
--子模块脚本
this.contents = {
--主面板
[1] = {view = require("Modules/Guild/RedPacketView/RedPacket_SendView"), panelName = "SendView"},
--发送福利红包
[2] = {view = require("Modules/Guild/RedPacketView/RedPacket_SendWealView"), panelName = "SendWealView"},
--天官赐福
[3] = {view = require("Modules/Guild/RedPacketView/RedPacket_GetView"), panelName = "GetView"},
--每日仙缘礼
[4] = {view = require("Modules/Guild/RedPacketView/RedPacket_RankView"), panelName = "RankView"},
}
-- this.contentPanel={}
this.sortingOrder = 0
this.curIndex=1
--初始化组件(用于子类重写)
function RedPacketPanel:InitComponent()
this.panel=Util.GetGameObject(self.gameObject, "Panel")
this.backBtn=Util.GetGameObject(this.panel,"BackBtn")
this.tabbox = Util.GetGameObject(this.panel, "Contents/TabBox")
this.content=Util.GetGameObject(this.panel,"Contents")
this.contentPanel={}
--预设
for i = 1, #this.contents do
this.contentPanel[i]=Util.GetGameObject(this.content,this.contents[i].panelName)
end
--脚本
for i = 1, #this.contents do
this.contents[i].view:InitComponent(Util.GetGameObject(this.content, this.contents[i].panelName))
this.spLoader = SpriteLoader.New()
end
this.redPoint=Util.GetGameObject(this.content,"RedPoint")
end
--绑定事件(用于子类重写)
function RedPacketPanel:BindEvent()
for i = 1, #this.contents do
this.contents[i].view:BindEvent()
end
Util.AddClick(this.backBtn,function()
self:ClosePanel()
end)
end
--添加事件监听(用于子类重写)
function RedPacketPanel:AddListener()
for i = 1, #this.contents do
this.contents[i].view:AddListener()
end
Game.GlobalEvent:AddEvent(GameEvent.GuildRedPacket.OnCloseRedPointClick, this.CloseRedPointClick)
end
--移除事件监听(用于子类重写)
function RedPacketPanel:RemoveListener()
for i = 1, #this.contents do
this.contents[i].view:RemoveListener()
end
Game.GlobalEvent:RemoveEvent(GameEvent.GuildRedPacket.OnCloseRedPointClick, this.CloseRedPointClick)
end
--界面打开时调用(用于子类重写)
function RedPacketPanel:OnOpen(index)
if index then
this.curIndex=index
end
end
local redPointList
--界面打开或者重新打开后,界面刷新时调用(用于子类重写)
function RedPacketPanel:OnShow()
-- BindRedPointObject(RedPointType.Guild_RedPacket,this.redPoint)
this.tabbox:SetActive(true)
this.TabCtrl = TabBox.New()
this.TabCtrl:SetTabAdapter(this.TabAdapter)
this.TabCtrl:SetChangeTabCallBack(this.OnTabChange)
this.TabCtrl:Init(this.tabbox, _TabData,this.curIndex)
redPointList = {}
for i = 1, Util.GetGameObject(this.tabbox,"box").transform.childCount do
redPointList[i] =Util.GetGameObject(Util.GetGameObject(this.tabbox,"box").transform:GetChild(i-1).gameObject,"RedPoint")
redPointList[i]:SetActive(false)
end
if redPointList[2] and redPointList[3] then
BindRedPointObject(RedPointType.Guid_SendPackage, redPointList[2])
BindRedPointObject(RedPointType.Guid_GetPackage, redPointList[3])
end
--CheckRedPointStatus(RedPointType.Guid_SendPackage)
--CheckRedPointStatus(RedPointType.Guid_GetPackage)
end
--重设层级
function RedPacketPanel:OnSortingOrderChange()
this.sortingOrder = self.sortingOrder
end
--界面关闭时调用(用于子类重写)
function RedPacketPanel:OnClose()
for i = 1, #this.contents do
this.contents[i].view:OnClose()
end
ClearRedPointObject(RedPointType.Guild_RedPacket,this.redPoint)
if redPointList[2] and redPointList[3] then
ClearRedPointObject(RedPointType.Guid_SendPackage, redPointList[2])
ClearRedPointObject(RedPointType.Guid_GetPackage, redPointList[3])
end
end
--界面销毁时调用(用于子类重写)
function RedPacketPanel:OnDestroy()
for i = 1, #this.contents do
this.contents[i].view:OnDestroy()
this.spLoader:Destroy()
end
redPointList=nil
end
-- tab按钮自定义显示设置
function this.TabAdapter(tab, index, status)
local img = Util.GetGameObject(tab, "Image")
local txt = Util.GetGameObject(tab, "Text")
img:GetComponent("Image").sprite = this.spLoader:LoadSprite(_TabImgData[status])
txt:GetComponent("Text").text = _TabData[index].txt
txt:GetComponent("Text").color = _TabFontColor[status]
end
-- tab改变回调事件
function this.OnTabChange(index, lastIndex)
if lastIndex then
this.CloseView(lastIndex)
end
this.OpenView(index)
if index==2 then
Game.GlobalEvent:DispatchEvent(GameEvent.GuildRedPacket.OnCloseRedPointClick)
end
end
-- 打开View
function this.OpenView(index)
this.contents[index].view:OnShow(this.sortingOrder)
for i = 1, #this.contentPanel do
this.contentPanel[i]:SetActive(i==index)
end
end
-- 关闭View
function this.CloseView(lastIndex)
--CheckRedPointStatus(RedPointType.Guild_RedPacket)
--CheckRedPointStatus(RedPointType.Guid_SendPackage)
--CheckRedPointStatus(RedPointType.Guid_GetPackage)
MyGuildManager.ReuqsetRedPackage()
this.contents[lastIndex].view:OnClose()
end
-- 刷新红包查看后红点点击操作
function this.CloseRedPointClick()
GuildRedPacketManager.isCheck=false
--CheckRedPointStatus(RedPointType.Guild_RedPacket)
--CheckRedPointStatus(RedPointType.Guid_SendPackage)
--CheckRedPointStatus(RedPointType.Guid_GetPackage)
MyGuildManager.ReuqsetRedPackage()
end
return RedPacketPanel