252 lines
10 KiB
Lua
252 lines
10 KiB
Lua
--[[
|
||
* @ClassName CumulativeSignInPage
|
||
* @Description 累计签到
|
||
* @Date 2019/8/1 20:07
|
||
* @Author MagicianJoker, fengliudianshao@outlook.com
|
||
* @Copyright Copyright (c) 2019, MagicianJoker
|
||
--]]
|
||
---@class CumulativeSignInPage
|
||
local CumulativeSignInPage = quick_class("CumulativeSignInPage")
|
||
local kMaxDay = 31
|
||
--已领取 再领一次
|
||
local receiveImage={[1]="s_slbz_yilingqu",[2]="r_meiriqiandao_zailingyici"}
|
||
--本地标记可领取次数
|
||
local receiveNum=0
|
||
--今日是否充值标记 1未充值 2已充值
|
||
local rechargeNum=0
|
||
local items={}
|
||
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),
|
||
}
|
||
|
||
|
||
function CumulativeSignInPage:ctor(mainPanel, gameObject)
|
||
self.mainPanel = mainPanel
|
||
self.gameObject = gameObject
|
||
|
||
self.signInContent = Util.GetGameObject(self.gameObject, "signList/viewPort/content")
|
||
self.signInItem = Util.GetGameObject(self.signInContent, "signInItem")
|
||
self.signInItem:SetActive(false)
|
||
self.signInList = {}
|
||
self.signInRewardList = {}
|
||
end
|
||
local sortingOrder = 0
|
||
function CumulativeSignInPage:OnShow(_sortingOrder)
|
||
sortingOrder = _sortingOrder
|
||
Game.GlobalEvent:AddEvent(GameEvent.FiveAMRefresh.ServerNotifyRefresh, self.RefreshPanel, self)
|
||
self.gameObject:SetActive(true)
|
||
self:RefreshPanel()
|
||
end
|
||
|
||
function CumulativeSignInPage:OnHide()
|
||
self.gameObject:SetActive(false)
|
||
Game.GlobalEvent:RemoveEvent(GameEvent.FiveAMRefresh.ServerNotifyRefresh, self.RefreshPanel, self)
|
||
end
|
||
|
||
function CumulativeSignInPage:RefreshPanel()
|
||
self.SignData = OperatingManager.GetSignInData()
|
||
if table.nums(self.signInList) <= 0 then
|
||
self:CreateSignList()
|
||
end
|
||
self:RefreshSignList()
|
||
self:RefreshBox()
|
||
end
|
||
|
||
function CumulativeSignInPage:RefreshBox()
|
||
|
||
local content = Util.GetGameObject(self.gameObject, "content")
|
||
local text = Util.GetGameObject(self.gameObject, "content/day/Text"):GetComponent("Text")
|
||
local progressBottom = Util.GetGameObject(content, "progressBottom/Image"):GetComponent("Image")
|
||
local rewardPanel = Util.GetGameObject(self.gameObject, "content/RewardPanel")
|
||
local maskBtn = Util.GetGameObject(self.gameObject, "content/RewardPanel/rewardMaskBtn")
|
||
local itemview = Util.GetGameObject(self.gameObject, "content/RewardPanel/ViewRect/ItemView")
|
||
|
||
|
||
local curDay = data.value
|
||
progressBottom.fillAmount = curDay/7
|
||
text.text = curDay.."天"
|
||
rewardPanel:SetActive(false)
|
||
|
||
for i = 1, #data.mission do
|
||
local btnBox = Util.GetGameObject(content,"progressBottom/BoxBtn"..i)
|
||
btnBox:GetComponent("Button").interactable = data.mission[i].state == 0
|
||
if data.mission[i].state == 0 then--未领取
|
||
if curDay<SignRewardConfig[i].Values[1][1] then
|
||
--点击显示预览
|
||
Util.AddOnceClick(btnBox,function()
|
||
local getInfo Util.GetGameObject(rewardPanel,"getInfo"):GetComponent("Text").text = "连续签到"..SignRewardConfig[i].Values[1][1].."天获得:"
|
||
for j = 1, #SignRewardConfig[i].Reward do
|
||
if not items[j] then
|
||
local view = SubUIManager.Open(SubUIConfig.ItemView,Util.GetTransform(rewardPanel, "ViewRect/grid").transform)
|
||
items[j] = view
|
||
view.gameObject:SetActive(false)
|
||
end
|
||
items[j]:OnOpen(false, {SignRewardConfig[i].Reward[j][1],SignRewardConfig[i].Reward[j][2]}, 0.8,false,false,false,self.sortingOrder)
|
||
items[j].gameObject:SetActive(true)
|
||
end
|
||
rewardPanel:SetActive(true)
|
||
rewardPanel:GetComponent("RectTransform").localPosition = pos[i]
|
||
end)
|
||
|
||
elseif curDay>=SignRewardConfig[i].Values[1][1] then
|
||
Util.AddOnceClick(btnBox,function()
|
||
NetManager.GetActivityRewardRequest(data.mission[i].missionId, data.activityId, function(drop)
|
||
UIManager.OpenPanel(UIName.RewardItemPopup,drop,1)
|
||
self:RefreshBox()
|
||
end)
|
||
end)
|
||
end
|
||
end
|
||
end
|
||
|
||
|
||
|
||
Util.AddOnceClick(maskBtn,function()
|
||
for i = 1, #items do
|
||
items[i].gameObject:SetActive(false)
|
||
end
|
||
rewardPanel:SetActive(false)
|
||
end)
|
||
end
|
||
|
||
function CumulativeSignInPage:OnSortingOrderChange(cursortingOrder)
|
||
if self.signInRewardList then
|
||
for i=1, #self.signInRewardList do
|
||
self.signInRewardList[i]:SetEffectLayer(cursortingOrder)
|
||
end
|
||
end
|
||
end
|
||
--创建List
|
||
function CumulativeSignInPage:CreateSignList()
|
||
for i = 1, kMaxDay do
|
||
self.signInList[i] = newObjToParent(self.signInItem, self.signInContent)
|
||
self.signInList[i].gameObject.name = "signInReward_"..i
|
||
self.signInRewardList[i] = SubUIManager.Open(SubUIConfig.ItemView, Util.GetGameObject(self.signInList[i], "rewardPos").transform)
|
||
end
|
||
table.walk(self.signInList, function(signInItem)
|
||
signInItem:SetActive(false)
|
||
end)
|
||
end
|
||
--刷新List
|
||
function CumulativeSignInPage:RefreshSignList()
|
||
receiveNum=PrivilegeManager.GetPrivilegeRemainValue(PRIVILEGE_TYPE.DAY_SIGN_IN)--可领取次数
|
||
rechargeNum=PrivilegeManager.GetPrivilegeNumber(PRIVILEGE_TYPE.DAY_SIGN_IN)--充值标记 1未充值 2已充值
|
||
CheckRedPointStatus(RedPointType.CumulativeSignIn)
|
||
|
||
table.walk(self.signInList, function(signInItem)
|
||
signInItem:SetActive(false)
|
||
end)
|
||
|
||
--控制添加点击事件
|
||
local _month = 1--math.floor(os.date("%m", GetTimeStamp()))
|
||
local signInConfigs = ConfigManager.GetConfig(ConfigName.SignInConfig)--, "Month", _month)
|
||
local i = 0
|
||
for _, signInfo in ConfigPairs(signInConfigs) do
|
||
i = i + 1
|
||
local day = i
|
||
Util.AddOnceClick(Util.GetGameObject(self.signInList[i], "receiveBtn"), function()
|
||
self:OnSignInClicked(signInfo.Id, day)
|
||
end)
|
||
self.signInRewardList[i]:OnOpen(false, signInfo.reward,1,false,false,false,sortingOrder)
|
||
self.signInList[i]:SetActive(true)
|
||
end
|
||
|
||
local dayIndexEnd
|
||
if self.SignData.state == 0 then
|
||
dayIndexEnd = self.SignData.days
|
||
else
|
||
dayIndexEnd = self.SignData.days + 1
|
||
end
|
||
dayIndexEnd = dayIndexEnd >= kMaxDay and kMaxDay or dayIndexEnd
|
||
|
||
for i, signInItem in ipairs(self.signInList) do
|
||
if i < dayIndexEnd then
|
||
--默认已过去的天数都赋值已领取图片
|
||
Util.GetGameObject(signInItem, "received"):GetComponent("Image").sprite=Util.LoadSprite(receiveImage[1])
|
||
self:SetIcon(1,Util.GetGameObject(self.signInList[dayIndexEnd-1], "received"))
|
||
end
|
||
Util.GetGameObject(signInItem, "received"):SetActive(i < dayIndexEnd)--已过天数显示已领取
|
||
Util.GetGameObject(signInItem, "receiveBtn"):SetActive(i < dayIndexEnd)--已过天数开启按钮点击事件
|
||
end
|
||
|
||
--当已第一次签到 设置图片
|
||
if self.SignData.state==1 and ((receiveNum==0 and rechargeNum==1) or (receiveNum==1 and rechargeNum==2)) then
|
||
local received=Util.GetGameObject(self.signInList[dayIndexEnd-1], "received")
|
||
received:GetComponent("Image").sprite=Util.LoadSprite(receiveImage[2])
|
||
self:SetIcon(2,received)
|
||
Util.GetGameObject(self.signInList[dayIndexEnd-1], "redPoint"):SetActive(self:CheckRedPoint())--红点显隐
|
||
Util.GetGameObject(self.signInList[dayIndexEnd-1], "receiveBtn"):SetActive(self:CheckIsReceive())--该奖励按钮是否可点击
|
||
else
|
||
Util.GetGameObject(self.signInList[dayIndexEnd], "redPoint"):SetActive(self:CheckRedPoint())--红点显隐
|
||
Util.GetGameObject(self.signInList[dayIndexEnd], "receiveBtn"):SetActive(self:CheckIsReceive())--该奖励按钮是否可点击
|
||
end
|
||
|
||
--
|
||
if dayIndexEnd >= 25 then
|
||
self.signInContent.transform.anchoredPosition3D = Vector3(0, 150, 0)
|
||
end
|
||
end
|
||
|
||
--点击事件
|
||
function CumulativeSignInPage:OnSignInClicked(Id, index)
|
||
Log(index.."||"..self.SignData.days)
|
||
if index < self.SignData.days then
|
||
PopupTipPanel.ShowTip(Language[10350])
|
||
elseif index == self.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
|
||
})
|
||
self.SignData.state = 1
|
||
Util.GetGameObject(self.signInList[index], "redPoint"):SetActive(false)
|
||
self:RefreshSignList()
|
||
self:RefreshBox()
|
||
end)
|
||
elseif receiveNum==0 and rechargeNum==1 then
|
||
MsgPanel.ShowTwo(Language[11446], function()
|
||
end, function()
|
||
JumpManager.GoJump(27001)
|
||
end, Language[10719], Language[10023],nil, false)
|
||
else
|
||
PopupTipPanel.ShowTip(Language[10350])
|
||
end
|
||
else
|
||
PopupTipPanel.ShowTip(Language[11447])
|
||
end
|
||
end
|
||
|
||
--检查是否可领取 当未第一次签到 或 第一次签到后 (未充值 本地领s取次数为0)或(已充值 今天有领取次数)
|
||
function CumulativeSignInPage:CheckIsReceive()
|
||
return self.SignData.state==0 or (self.SignData.state==1 and ((receiveNum==0 and rechargeNum==1) or (receiveNum==1 and rechargeNum==2)))
|
||
end
|
||
|
||
function CumulativeSignInPage:CheckRedPoint()
|
||
return self.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)
|
||
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
|
||
|
||
function CumulativeSignInPage:OnDestroy()
|
||
items={}
|
||
end
|
||
|
||
return CumulativeSignInPage |