302 lines
12 KiB
Lua
302 lines
12 KiB
Lua
|
||
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
|
||
|