miduo_client/Assets/ManagedResources/~Lua/Modules/Operating/CumulativeSignInPage.lua

302 lines
12 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 CumulativeSignInPage = {}
local sortingOrder = 0
--已领取 再领一次
local receiveImage={[1] = "s_slbz_yilingqu_zh",[2]="m_zhouka_sign"}
--本地标记可领取次数
local receiveNum=0
--今日是否充值标记 1未充值 2已充值
local rechargeNum=0
local data = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.SignInfo)
local SignRewardConfig = ConfigManager.GetAllConfigsDataByKey(ConfigName.ActivityRewardConfig,"ActivityId",ActivityTypeDef.SignInfo)
local pos = {
[1] = Vector3.New(-98,184,100),
[2] = Vector3.New(188,184,100),
}
local SignData = {}
--表数据
local signInConfigs = ConfigManager.GetConfig(ConfigName.SignInConfig)
function CumulativeSignInPage:New(gameObject)
local b = {}
b.gameObject = gameObject
b.transform = gameObject.transform
setmetatable(b, { __index = CumulativeSignInPage })
return b
end
--初始化组件(用于子类重写)
function CumulativeSignInPage:InitComponent()
self.spLoader = SpriteLoader.New()
self.signInContent = Util.GetGameObject(self.gameObject, "signList/viewPort/content")
self.signInItem = Util.GetGameObject(self.gameObject, "signList/signInItem")
self.signInItem:SetActive(false)
self.content = Util.GetGameObject(self.gameObject, "content")
self.dayText = Util.GetGameObject(self.gameObject, "content/day/Text"):GetComponent("Text")
self.progressBottom = Util.GetGameObject(self.content, "progressBottom/Image"):GetComponent("Image")
self.boxs = {}
for i = 1, 2 do
self.boxs[i] = {}
self.boxs[i].btnBox = Util.GetGameObject(self.content,"progressBottom/BoxBtn"..i)
self.boxs[i].effectKeKaiQi = Util.GetGameObject(self.boxs[i].btnBox,"UI_Effect_BaoXiang_KeKaiQi")
self.boxs[i].effectKaiQi = Util.GetGameObject(self.boxs[i].btnBox,"UI_Effect_BaoXiang_KaiQi")
self.boxs[i].KaiQi = Util.GetGameObject(self.boxs[i].effectKaiQi,"KaiQi")
end
--self.signInItem 的列表
self.signInList = {}
--itemview 的列表
self.signInRewardList = {}
end
--绑定事件(用于子类重写)
function CumulativeSignInPage:BindEvent()
for i = 1, #self.boxs do
Util.AddOnceClick(self.boxs[i].btnBox,function()
if data.mission[i].state == 0 then--未领取
if data.value < SignRewardConfig[i].Values[1][1] then
local rewardData = {}
rewardData.title = Language[10763]
rewardData.content = Language[11350]..SignRewardConfig[i].Values[1][1]..Language[11351]
rewardData.shows = SignRewardConfig[i].Reward
rewardData.pos = pos[i]
if not self.rewardPanel then
self.rewardPanel = SubUIManager.Open(SubUIConfig.RewardPanel,self.parent.content.transform)
end
self.rewardPanel:SetData(rewardData,sortingOrder)
else
NetManager.GetActivityRewardRequest(data.mission[i].missionId, data.activityId, function(drop)
UIManager.OpenPanel(UIName.RewardItemPopup,drop,1)
self:RefreshBox()
end)
end
end
end)
end
end
--添加事件监听(用于子类重写)
function CumulativeSignInPage:AddListener()
Game.GlobalEvent:AddEvent(GameEvent.FiveAMRefresh.ServerNotifyRefresh, self.OnShow)
end
--移除事件监听(用于子类重写)
function CumulativeSignInPage:RemoveListener()
Game.GlobalEvent:RemoveEvent(GameEvent.FiveAMRefresh.ServerNotifyRefresh, self.OnShow)
end
--界面打开时调用(用于子类重写)
function CumulativeSignInPage:OnOpen(_activityConfig,_index,parent)
self.actConfig = _activityConfig
self.pageIndex = _index
self.parent = parent
end
function CumulativeSignInPage:OnSortingOrderChange()
end
-- 打开,重新打开时回调
function CumulativeSignInPage:OnShow(_sortingOrder)
self.gameObject:SetActive(true)
sortingOrder = _sortingOrder
rechargeNum=PrivilegeManager.GetPrivilegeNumber(PRIVILEGE_TYPE.DAY_SIGN_IN)--充值标记 1未充值 2已充值
receiveNum=PrivilegeManager.GetPrivilegeRemainValue(PRIVILEGE_TYPE.DAY_SIGN_IN)--可领取次数
--receiveNum=0
LogError("receiveNum=="..receiveNum)
SignData = OperatingManager.GetSignInData()
if table.nums(self.signInList) <= 0 then
self:CreateSignList()
else
self:RefreshSignList()
self:RefreshBox()
end
CheckRedPointStatus(RedPointType.CumulativeSignIn)
end
--创建List
function CumulativeSignInPage:CreateSignList()
coroutine.start(function()
-- 刷新盒子显示
self:RefreshBox()
local i = 0
for _, signInfo in ConfigPairs(signInConfigs) do
i = i + 1
self.signInList[i] = {}
self.signInList[i].go = newObjToParent(self.signInItem, self.signInContent)
self.signInList[i].go.gameObject.name = "signInReward_"..i
self.signInList[i].receiveBtn = Util.GetGameObject(self.signInList[i].go, "receiveBtn") --领取按钮
self.signInList[i].receivedIma = Util.GetGameObject(self.signInList[i].go, "received"):GetComponent("Image") --领取图片
self.signInList[i].receivedTxt = Util.GetGameObject(self.signInList[i].go, "received/Text"):GetComponent("Text")
self.signInList[i].redPoint = Util.GetGameObject(self.signInList[i].go, "redPoint") --红点
Util.GetGameObject(self.signInList[i].go, "Text"):GetComponent("Text").text=string.format(Language[12324],i) --第几天
self.signInRewardList[i] = SubUIManager.Open(SubUIConfig.ItemView, Util.GetGameObject(self.signInList[i].go, "rewardPos").transform)
self.signInRewardList[i]:OnOpen(false, signInfo.reward,1,false,false,false,sortingOrder)
if (i-1) % 5 == 4 then
coroutine.wait(0.03)
end
end
table.walk(self.signInList, function(signInItem)
signInItem.go.gameObject:SetActive(false)
end)
self:RefreshSignList()
end)
end
--刷新List
function CumulativeSignInPage:RefreshSignList()
table.walk(self.signInList, function(signInItem)
signInItem.go.gameObject:SetActive(false)
end)
local i = 0
for _, signInfo in ConfigPairs(signInConfigs) do
i = i + 1
self:RefreshSignSingle(i,signInfo,self.signInList[i])
self.signInList[i].go.gameObject:SetActive(true)
end
if SignData.days >= 25 then
self.signInContent.transform.anchoredPosition3D = Vector3(0, 150, 0)
end
end
--i:天 signInfo天对应的奖励 signInPre天预设
function CumulativeSignInPage:RefreshSignSingle(i,signInfo,signInPre)
--过去的
--LogError("SignData.state=="..SignData.state)
if i < SignData.days then
--默认已过去的天数都赋值已领取图片
signInPre.receivedIma.gameObject:SetActive(true)
signInPre.receiveBtn.gameObject:SetActive(true)
--signInPre.receivedIma.sprite=self.spLoader:LoadSprite(receiveImage[1])
self:SetIcon(1,signInPre.receivedTxt)
signInPre.redPoint.gameObject:SetActive(false)
elseif i == SignData.days then
--当已第一次签到 设置图片
-- if SignData.state==1 and ((receiveNum==0 and rechargeNum==1) or (receiveNum==1 and rechargeNum==2)) then
-- signInPre.receivedIma.gameObject:SetActive(true)
-- signInPre.receivedIma.sprite=self.spLoader:LoadSprite(receiveImage[2])
-- self:SetIcon(2,signInPre.receivedIma.gameObject)
-- else
if SignData.state == 0 then
signInPre.receivedIma.gameObject:SetActive(false)
else
signInPre.receivedIma.gameObject:SetActive(true)
--signInPre.receivedIma.sprite=self.spLoader:LoadSprite(receiveImage[1])
self:SetIcon(1,signInPre.receivedTxt)
end
signInPre.redPoint:SetActive(self:CheckRedPoint())--红点显隐
signInPre.receiveBtn:SetActive(self:CheckIsReceive())--该奖励按钮是否可点击
else
signInPre.receivedIma.gameObject:SetActive(false)
signInPre.redPoint.gameObject:SetActive(false)
signInPre.receiveBtn.gameObject:SetActive(false)
end
Util.AddOnceClick(signInPre.receiveBtn, function()
self:OnSignInClicked(signInfo.Id, i)
end)
end
--点击事件
function CumulativeSignInPage:OnSignInClicked(Id, index)
if index < SignData.days then
PopupTipPanel.ShowTip(Language[10101])
elseif index == SignData.days then
if receiveNum>0 then
NetManager.RequestSignIn(Id, function(respond)
PrivilegeManager.RefreshPrivilegeUsedTimes(PRIVILEGE_TYPE.DAY_SIGN_IN,1)--本地刷新下次数
UIManager.OpenPanel(UIName.RewardItemPopup, respond.drop, 1)
OperatingManager.SetSignInData({
days = index,
state = 1
})
SignData.state = 1
rechargeNum=PrivilegeManager.GetPrivilegeNumber(PRIVILEGE_TYPE.DAY_SIGN_IN)--充值标记 1未充值 2已充值
--LogGreen("rechargeNum:"..rechargeNum)
receiveNum=PrivilegeManager.GetPrivilegeRemainValue(PRIVILEGE_TYPE.DAY_SIGN_IN)--可领取次数
--LogGreen("receiveNum:"..receiveNum)
self:RefreshSignSingle(index,signInConfigs[Id],self.signInList[index])
self:RefreshBox()
CheckRedPointStatus(RedPointType.CumulativeSignIn)
end)
elseif receiveNum==0 and rechargeNum==1 then
-- MsgPanel.ShowTwo(Language[11352], function()
-- end, function()
-- JumpManager.GoJump(36004)
-- end, Language[10731], Language[10019],nil, false)
else
PopupTipPanel.ShowTip(Language[10101])
end
else
PopupTipPanel.ShowTip(Language[11353])
end
end
--检查是否可领取 当未第一次签到 或 第一次签到后 (未充值 本地领s取次数为0已充值 今天有领取次数)
function CumulativeSignInPage:CheckIsReceive()
return SignData.state==0 or (SignData.state==1 and ((receiveNum==0 and rechargeNum==1) or (receiveNum==1 and rechargeNum==2)))
end
function CumulativeSignInPage:CheckRedPoint()
return SignData.state==0 --or receiveNum>0
end
--设置图片转换 index 1已领取 2再领一次
function CumulativeSignInPage:SetIcon(index,root)
if index==1 then
--root:GetComponent("Image"):SetNativeSize()
--root.transform.localEulerAngles = Vector3.New(0, 0, 0)
--root.transform.sizeDelta = Vector2.New(190, 116)
root.text="已领取"
elseif index==2 then
root.text="再领一次"
--root:GetComponent("Image"):SetNativeSize()
--root.transform.localEulerAngles = Vector3.New(0, 0, 6.2)
--root.transform.sizeDelta = Vector2.New(185.57, 99.26)
end
end
function CumulativeSignInPage:RefreshBox()
data = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.SignInfo)
local curDay = data.value
self.progressBottom.fillAmount = curDay/7
self.dayText.text = curDay..Language[10017]
if self.rewardPanel then
self.rewardPanel.gameObject:SetActive(false)
end
for i = 1, #data.mission do
if self.boxs[i] then
self.boxs[i].btnBox:GetComponent("Image").enabled = data.mission[i].state == 0
self.boxs[i].effectKeKaiQi:SetActive((curDay>=SignRewardConfig[i].Values[1][1]) and (data.mission[i].state == 0))
self.boxs[i].effectKaiQi:SetActive(data.mission[i].state == 1)
self.boxs[i].KaiQi:SetActive(data.mission[i].state == 1)
self.boxs[i].btnBox:GetComponent("Button").interactable = data.mission[i].state == 0
end
end
end
--界面关闭时调用(用于子类重写)
function CumulativeSignInPage:OnClose()
self.gameObject:SetActive(false)
end
--界面销毁时调用(用于子类重写)
function CumulativeSignInPage:OnDestroy()
self.spLoader:Destroy()
--itemview 的列表
for k,v in pairs(self.signInRewardList) do
SubUIManager.Close(v)
end
self.signInRewardList = {}
if self.rewardPanel then
SubUIManager.Close(self.rewardPanel)
end
self.rewardPanel = nil
Util.ClearChild(self.signInContent.transform)
--self.signInItem 的列表
self.signInList = {}
end
return CumulativeSignInPage