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

294 lines
12 KiB
Lua
Raw Normal View History

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

2021-03-30 10:48:34 +08:00
local CumulativeSignInPage = {}
local sortingOrder = 0
2020-05-09 13:31:21 +08:00
--已领取 再领一次
2021-03-30 10:48:34 +08:00
local receiveImage={[1] = "s_slbz_yilingqu_zh",[2]="r_meiriqiandao_zailingyici_zh"}
2020-05-09 13:31:21 +08:00
--本地标记可领取次数
local receiveNum=0
--今日是否充值标记 1未充值 2已充值
local rechargeNum=0
2021-03-30 10:48:34 +08:00
2020-08-13 22:30:09 +08:00
local data = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.SignInfo)
local SignRewardConfig = ConfigManager.GetAllConfigsDataByKey(ConfigName.ActivityRewardConfig,"ActivityId",ActivityTypeDef.SignInfo)
local pos = {
2021-03-30 10:48:34 +08:00
[1] = Vector3.New(-98,184,100),
[2] = Vector3.New(188,184,100),
2020-08-13 22:30:09 +08:00
}
2021-03-30 10:48:34 +08:00
local SignData = {}
2020-05-09 13:31:21 +08:00
2021-03-30 10:48:34 +08:00
--表数据
local signInConfigs = ConfigManager.GetConfig(ConfigName.SignInConfig)
2020-05-09 13:31:21 +08:00
2021-03-30 10:48:34 +08:00
function CumulativeSignInPage:New(gameObject)
local b = {}
b.gameObject = gameObject
b.transform = gameObject.transform
setmetatable(b, { __index = CumulativeSignInPage })
return b
end
2020-05-09 13:31:21 +08:00
2021-03-30 10:48:34 +08:00
--初始化组件(用于子类重写)
function CumulativeSignInPage:InitComponent()
2021-04-21 13:12:04 +08:00
self.spLoader = SpriteLoader.New()
2020-05-09 13:31:21 +08:00
self.signInContent = Util.GetGameObject(self.gameObject, "signList/viewPort/content")
2021-03-30 10:48:34 +08:00
self.signInItem = Util.GetGameObject(self.gameObject, "signList/signInItem")
2020-05-09 13:31:21 +08:00
self.signInItem:SetActive(false)
2021-03-30 10:48:34 +08:00
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 的列表
2020-05-09 13:31:21 +08:00
self.signInList = {}
2021-03-30 10:48:34 +08:00
--itemview 的列表
2020-05-09 13:31:21 +08:00
self.signInRewardList = {}
2020-08-13 22:30:09 +08:00
end
2021-03-30 10:48:34 +08:00
--绑定事件(用于子类重写)
function CumulativeSignInPage:BindEvent()
for i = 1, #self.boxs do
2021-03-31 21:51:14 +08:00
Util.AddOnceClick(self.boxs[i].btnBox,function()
if data.mission[i].state == 0 then--未领取
if data.value < SignRewardConfig[i].Values[1][1] then
2021-04-01 18:50:06 +08:00
local rewardData = {}
2021-04-01 18:54:28 +08:00
rewardData.title = Language[10763]
rewardData.content = Language[11350]..SignRewardConfig[i].Values[1][1]..Language[11351]
2021-04-01 18:50:06 +08:00
rewardData.shows = SignRewardConfig[i].Reward
rewardData.pos = pos[i]
if not self.rewardPanel then
self.rewardPanel = SubUIManager.Open(SubUIConfig.RewardPanel,self.parent.content.transform)
2020-08-13 22:30:09 +08:00
end
2021-04-01 18:50:06 +08:00
self.rewardPanel:SetData(rewardData,sortingOrder)
2021-03-31 21:51:14 +08:00
else
2021-04-01 18:50:06 +08:00
NetManager.GetActivityRewardRequest(data.mission[i].missionId, data.activityId, function(drop)
UIManager.OpenPanel(UIName.RewardItemPopup,drop,1)
self:RefreshBox()
end)
2021-03-31 21:51:14 +08:00
end
end
end)
2020-08-13 22:30:09 +08:00
end
2020-05-09 13:31:21 +08:00
end
2020-08-13 22:30:09 +08:00
2021-03-30 10:48:34 +08:00
--添加事件监听(用于子类重写)
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
2021-06-01 20:02:48 +08:00
function CumulativeSignInPage:OnSortingOrderChange()
end
2021-03-30 10:48:34 +08:00
-- 打开,重新打开时回调
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)--可领取次数
SignData = OperatingManager.GetSignInData()
if table.nums(self.signInList) <= 0 then
self:CreateSignList()
2021-12-31 03:01:26 +08:00
else
self:RefreshSignList()
self:RefreshBox()
2020-05-09 13:31:21 +08:00
end
2021-03-30 10:48:34 +08:00
CheckRedPointStatus(RedPointType.CumulativeSignIn)
2020-05-09 13:31:21 +08:00
end
2021-03-30 10:48:34 +08:00
2020-05-09 13:31:21 +08:00
--创建List
function CumulativeSignInPage:CreateSignList()
2021-12-31 03:01:26 +08:00
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].redPoint = Util.GetGameObject(self.signInList[i].go, "redPoint") --红点
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()
2020-05-09 13:31:21 +08:00
end)
end
2021-03-30 10:48:34 +08:00
2020-05-09 13:31:21 +08:00
--刷新List
function CumulativeSignInPage:RefreshSignList()
table.walk(self.signInList, function(signInItem)
2021-03-30 10:48:34 +08:00
signInItem.go.gameObject:SetActive(false)
2020-05-09 13:31:21 +08:00
end)
2020-06-03 19:09:01 +08:00
local i = 0
for _, signInfo in ConfigPairs(signInConfigs) do
i = i + 1
2021-03-30 10:48:34 +08:00
self:RefreshSignSingle(i,signInfo,self.signInList[i])
self.signInList[i].go.gameObject:SetActive(true)
2020-05-09 13:31:21 +08:00
end
2021-03-30 10:48:34 +08:00
if SignData.days >= 25 then
self.signInContent.transform.anchoredPosition3D = Vector3(0, 150, 0)
2020-05-09 13:31:21 +08:00
end
2021-03-30 10:48:34 +08:00
end
--i:天 signInfo天对应的奖励 signInPre天预设
function CumulativeSignInPage:RefreshSignSingle(i,signInfo,signInPre)
--过去的
if i < SignData.days then
--默认已过去的天数都赋值已领取图片
signInPre.receivedIma.gameObject:SetActive(true)
signInPre.receiveBtn.gameObject:SetActive(true)
2021-04-21 13:12:04 +08:00
signInPre.receivedIma.sprite=self.spLoader:LoadSprite(receiveImage[1])
2021-03-30 10:48:34 +08:00
self:SetIcon(1,signInPre.receivedIma.gameObject)
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)
2021-04-21 13:12:04 +08:00
signInPre.receivedIma.sprite=self.spLoader:LoadSprite(receiveImage[2])
2021-03-30 10:48:34 +08:00
self:SetIcon(2,signInPre.receivedIma.gameObject)
elseif SignData.state == 0 then
signInPre.receivedIma.gameObject:SetActive(false)
else
signInPre.receivedIma.gameObject:SetActive(true)
2021-04-21 13:12:04 +08:00
signInPre.receivedIma.sprite=self.spLoader:LoadSprite(receiveImage[1])
2021-03-30 10:48:34 +08:00
self:SetIcon(1,signInPre.receivedIma.gameObject)
2020-05-09 13:31:21 +08:00
end
2021-03-30 10:48:34 +08:00
signInPre.redPoint:SetActive(self:CheckRedPoint())--红点显隐
signInPre.receiveBtn:SetActive(self:CheckIsReceive())--该奖励按钮是否可点击
2020-05-09 13:31:21 +08:00
else
2021-03-30 10:48:34 +08:00
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)
2020-05-09 13:31:21 +08:00
end
--点击事件
function CumulativeSignInPage:OnSignInClicked(Id, index)
2021-03-30 10:48:34 +08:00
if index < SignData.days then
2021-04-01 18:36:34 +08:00
PopupTipPanel.ShowTip(Language[10101])
2021-03-30 10:48:34 +08:00
elseif index == SignData.days then
2020-05-09 13:31:21 +08:00
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
})
2021-03-30 10:48:34 +08:00
SignData.state = 1
rechargeNum=PrivilegeManager.GetPrivilegeNumber(PRIVILEGE_TYPE.DAY_SIGN_IN)--充值标记 1未充值 2已充值
--LogGreen("rechargeNum:"..rechargeNum)
2021-03-30 10:48:34 +08:00
receiveNum=PrivilegeManager.GetPrivilegeRemainValue(PRIVILEGE_TYPE.DAY_SIGN_IN)--可领取次数
--LogGreen("receiveNum:"..receiveNum)
2021-03-30 10:48:34 +08:00
self:RefreshSignSingle(index,signInConfigs[Id],self.signInList[index])
2020-08-13 22:30:09 +08:00
self:RefreshBox()
2021-03-30 10:48:34 +08:00
CheckRedPointStatus(RedPointType.CumulativeSignIn)
2020-05-09 13:31:21 +08:00
end)
elseif receiveNum==0 and rechargeNum==1 then
2021-04-01 18:36:34 +08:00
MsgPanel.ShowTwo(Language[11352], function()
2020-05-09 13:31:21 +08:00
end, function()
JumpManager.GoJump(27001)
2021-04-01 18:36:34 +08:00
end, Language[10731], Language[10019],nil, false)
2020-05-09 13:31:21 +08:00
else
2021-04-01 18:36:34 +08:00
PopupTipPanel.ShowTip(Language[10101])
2020-05-09 13:31:21 +08:00
end
else
2021-04-01 18:36:34 +08:00
PopupTipPanel.ShowTip(Language[11353])
2020-05-09 13:31:21 +08:00
end
end
--检查是否可领取 当未第一次签到 或 第一次签到后 (未充值 本地领s取次数为0已充值 今天有领取次数)
function CumulativeSignInPage:CheckIsReceive()
2021-03-30 10:48:34 +08:00
return SignData.state==0 or (SignData.state==1 and ((receiveNum==0 and rechargeNum==1) or (receiveNum==1 and rechargeNum==2)))
2020-05-09 13:31:21 +08:00
end
function CumulativeSignInPage:CheckRedPoint()
2021-03-30 10:48:34 +08:00
return SignData.state==0 or receiveNum>0
2020-05-09 13:31:21 +08:00
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)
elseif index==2 then
root:GetComponent("Image"):SetNativeSize()
root.transform.localEulerAngles = Vector3.New(0, 0, 6.2)
root.transform.sizeDelta = Vector2.New(185.57, 99.26)
end
end
2021-03-30 10:48:34 +08:00
function CumulativeSignInPage:RefreshBox()
2021-03-31 21:51:14 +08:00
data = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.SignInfo)
2021-03-30 10:48:34 +08:00
local curDay = data.value
self.progressBottom.fillAmount = curDay/7
2021-04-01 18:36:34 +08:00
self.dayText.text = curDay..Language[10017]
2021-04-01 18:50:06 +08:00
if self.rewardPanel then
self.rewardPanel.gameObject:SetActive(false)
end
2021-03-30 10:48:34 +08:00
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
2020-08-13 22:30:09 +08:00
end
2021-03-30 10:48:34 +08:00
--界面关闭时调用(用于子类重写)
function CumulativeSignInPage:OnClose()
self.gameObject:SetActive(false)
end
--界面销毁时调用(用于子类重写)
function CumulativeSignInPage:OnDestroy()
2021-04-21 13:12:04 +08:00
self.spLoader:Destroy()
2021-03-30 10:48:34 +08:00
--itemview 的列表
for k,v in pairs(self.signInRewardList) do
SubUIManager.Close(v)
end
self.signInRewardList = {}
2021-04-01 18:50:06 +08:00
if self.rewardPanel then
SubUIManager.Close(self.rewardPanel)
2021-03-30 10:48:34 +08:00
end
2021-04-01 18:50:06 +08:00
self.rewardPanel = nil
2021-03-30 10:48:34 +08:00
Util.ClearChild(self.signInContent.transform)
--self.signInItem 的列表
self.signInList = {}
end
2021-04-21 13:12:04 +08:00
return CumulativeSignInPage