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

278 lines
9.8 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 this = {}
local sortingOrder=0
--按钮类型
local BtnType={
Left=1,
Right=2,
}
--红包资源名
local RedPacketName={"g_ghhb_ming_01","g_ghhb_ming_02","g_ghhb_ming_03"}
local index={42,43,44}--直购表红包索引,因表没有区分红包列,故暂时写死
local curIndex=1 --当前选中红包索引
function this:InitComponent(gameObject)
this.sendBtn=Util.GetGameObject(gameObject,"SendBtn")
this.sendBtnText=Util.GetGameObject(gameObject,"SendBtn/Text"):GetComponent("Text")
this.leftBtn=Util.GetGameObject(gameObject,"LeftBtn")
this.rightBtn=Util.GetGameObject(gameObject,"RightBtn")
this.surplusNum=Util.GetGameObject(gameObject,"SurplusNum"):GetComponent("Text")--今日还可发
this.numText=Util.GetGameObject(gameObject,"Num/NumText"):GetComponent("Text")--红包金额
this.numIcon=Util.GetGameObject(gameObject,"Num/Icon"):GetComponent("Image")--消耗道具
this.countText=Util.GetGameObject(gameObject,"Count/CountText"):GetComponent("Text")--红包个数
this.message=Util.GetGameObject(gameObject,"Message/MessageText"):GetComponent("Text")--红包寄语
this.rewardRoot=Util.GetGameObject(gameObject,"Reward/RewardRoot")--发放者奖励根节点
this.itemList={} --奖励容器
--- 红包选择 ---
this.dragView = Util.GetGameObject(gameObject, "Dragview")
this.dragViewGrid = Util.GetGameObject(this.dragView, "Grid")
this.scaleCurve = this.dragViewGrid:GetComponent(typeof(AnimationCurveContainer)).AnimDatas[0]
this.posYCurve = this.dragViewGrid:GetComponent(typeof(AnimationCurveContainer)).AnimDatas[1]--
this.dragViewItem = Util.GetGameObject(this.dragView, "Item")--预设
this.moveWidth = 600
this.count = 3
this.ItemList = {}
this.SortLayerList = {}
for i=1, this.count do
local go = newObject(this.dragViewItem)
go.name = "Item"..i
go.transform:SetParent(this.dragViewGrid.transform)
go.transform.localScale = Vector3.one
go.transform.localPosition = Vector3.zero
local off = i / this.count - 0.5
local tran = go:GetComponent("RectTransform")
go:GetComponent("RectTransform").anchoredPosition = Vector2.New(off * this.moveWidth , this.posYCurve:Evaluate(i / this.count) * 500)
tran.localScale = Vector3.one * this.scaleCurve:Evaluate(i / this.count)
this.ItemList[i] = {go = go, tran = tran, off = off}
this.SortLayerList[i] = {index=i, off=this.ItemList[i].off}
local nameImage=Util.GetGameObject(go,"NameImage"):GetComponent("Image")
-- local desc=Util.GetGameObject(go,"Desc"):GetComponent("Text")--描述
local icon=Util.GetGameObject(go,"Icon"):GetComponent("Image")
local config=ConfigManager.GetConfigData(ConfigName.GuildRedPackConfig,i)
nameImage.sprite=Util.LoadSprite(RedPacketName[i])
-- desc.text=config.Desc
end
this.dragViewItem:SetActive(false)
this.trigger = Util.GetEventTriggerListener(this.dragViewGrid) --触摸事件
this.trigger.onBeginDrag = this.trigger.onBeginDrag + this.OnBeginDrag
this.trigger.onDrag = this.trigger.onDrag + this.OnDrag
this.trigger.onEndDrag = this.trigger.onEndDrag + this.OnEndDrag
this.moveTween = this.dragViewGrid:GetComponent(typeof(UITweenSpring))
if not this.moveTween then
this.moveTween = this.dragViewGrid:AddComponent(typeof(UITweenSpring))
end
this.moveTween.enabled = false
this.moveTween.OnUpdate = this.SetPos
this.moveTween.OnMoveEnd = this.MoveTo
this.moveTween.MomentumAmount = 0.5
this.moveTween.Strength = 1
-- Util.AddClick(Util.GetGameObject(this.dragView, "lBtn"), function()
-- this.MoveTween(-1/this.count)
-- end)
-- Util.AddClick(Util.GetGameObject(this.dragView, "rBtn"), function()
-- this.MoveTween(1/this.count)
-- end)
--红包选择 end---
end
function this:BindEvent()
--右按钮
Util.AddClick(this.leftBtn,function()
this:SwitchPacketShow(BtnType.Left)
end)
--左按钮
Util.AddClick(this.rightBtn,function()
this:SwitchPacketShow(BtnType.Right)
end)
end
function this:AddListener()
Game.GlobalEvent:AddEvent(GameEvent.MoneyPay.OnPayResultSuccess, this.RechargeSuccessFunc)
Game.GlobalEvent:AddEvent(GameEvent.FiveAMRefresh.ServerNotifyRefresh, this.InitView)
end
function this:RemoveListener()
Game.GlobalEvent:RemoveEvent(GameEvent.MoneyPay.OnPayResultSuccess, this.RechargeSuccessFunc)
Game.GlobalEvent:RemoveEvent(GameEvent.FiveAMRefresh.ServerNotifyRefresh, this.InitView)
end
function this:OnShow(_sortingOrder)
sortingOrder=_sortingOrder
this:InitView()
end
function this:OnClose()
end
function this:OnDestroy()
end
---初始化面板
function this:InitView()
curIndex=1
this.SetInfo(1)
this.MoveTween(-this.ItemList[1].off)
end
---点击按钮 切换红包
function this:SwitchPacketShow(type)
if type==BtnType.Left then
curIndex=curIndex-1
if curIndex<1 then curIndex=3 end
this.MoveTween(1/this.count)
elseif type==BtnType.Right then
curIndex=curIndex+1
if curIndex>3 then curIndex=1 end
this.MoveTween(-1/this.count)
end
this.SetInfo(curIndex)
end
---设置红包信息 id-红包Id
function this.SetInfo(id)
local redpack=ConfigManager.GetConfigData(ConfigName.GuildRedPackConfig,id)
local recharge=ConfigManager.GetConfigData(ConfigName.RechargeCommodityConfig,index[id])
local surplusNum=OperatingManager.GetLeftBuyTime(GoodsTypeDef.GuildRedPacket,index[id])--今日可发数
if surplusNum>0 then
this.surplusNum.text="(今日还可发<color=green>"..surplusNum.."</color>)"
else
this.surplusNum.text="(今日还可发<color=red>"..surplusNum.."</color>)"
end
this.numText.text=redpack.TotalMoney[2]
this.numIcon.sprite=SetIcon(redpack.TotalMoney[1])
this.countText.text=redpack.Num
this.message.text=redpack.SendWord
FindFairyManager.ResetItemView(this.rewardRoot,this.rewardRoot.transform,this.itemList,4,0.9,sortingOrder,false,recharge.BaseReward)
this.sendBtn:GetComponent("Button").interactable=surplusNum>0
Util.SetGray(this.sendBtn,surplusNum<1)
this.sendBtnText.text=recharge.Price.."元 发红包"
--发红包按钮
Util.AddOnceClick(this.sendBtn,function()
if surplusNum<1 then return end
local recharge=ConfigManager.GetConfigData(ConfigName.RechargeCommodityConfig,index[id])
if AppConst.isSDK then
PayManager.Pay({ Id = recharge.Id})
else
NetManager.RequestBuyGiftGoods(recharge.Id, function()
FirstRechargeManager.RefreshAccumRechargeValue(recharge.Id)
OperatingManager.RefreshGiftGoodsBuyTimes(GoodsTypeDef.GuildRedPacket, recharge.Id)
this.SetInfo(curIndex)
PopupTipPanel.ShowTip(string.format( "成功发送%s请前往邮箱领取发放者奖励",redpack.Name))
ChatManager.RequestSendRedPacket(curIndex)
end)
end
end)
end
function this.OnBeginDrag(Pointgo, data)
this.moveTween.enabled = true
this.moveTween.Momentum = Vector3.zero
this.moveTween.IsUseCallBack = false
end
function this.OnDrag(Pointgo, data)
this.moveTween:LerpMomentum(data.delta)
this.SetPos(data.delta)
end
function this.OnEndDrag(Pointgo, data)
this.SetPos(data.delta)
this.moveTween.IsUseCallBack = true
end
---设置位置
function this.SetPos(v2)
for i=1, this.count do
local item = this.ItemList[i]
item.off = item.off + v2.x / this.moveWidth
if item.off > 0.5 then
item.off = item.off - 1
this.SortLayerList[i].off = item.off
this.SetSortLayer()
elseif item.off < -0.5 then
item.off = item.off + 1
this.SortLayerList[i].off = item.off
this.SetSortLayer()
else
this.SortLayerList[i].off = item.off
end
item.tran.anchoredPosition = Vector2.New(item.off * this.moveWidth , this.posYCurve:Evaluate(item.off + 0.5) * 500)
item.tran.localScale = Vector3.one * this.scaleCurve:Evaluate(item.off + 0.5)
end
end
---设置层级
function this.SetSortLayer()
table.sort(this.SortLayerList, function(i1,i2) return math.abs(i1.off) > math.abs(i2.off) end)
for i=1, this.count do
local index = this.SortLayerList[i].index
local item = this.ItemList[index]
item.tran:SetAsLastSibling()
end
table.sort(this.SortLayerList, function(i1,i2) return i1.index < i2.index end)
end
---手指拖动结束 ui归位
function this.MoveTo()
local d = 1
local targetIdx
for i=1, this.count do
local item = this.ItemList[i]
local dd = math.abs(this.ItemList[i].off)
if dd < d then
targetIdx = i
d = dd
end
end
curIndex=targetIdx
this.MoveTween(-this.ItemList[targetIdx].off)
this.SetInfo(targetIdx)
end
---动画移动
function this.MoveTween(moveDelta)
local lastProgress = 0
DoTween.To(DG.Tweening.Core.DOGetter_float( function () return 0 end),
DG.Tweening.Core.DOSetter_float(function (progress)
local d = progress - lastProgress
lastProgress = progress
this.SetPos(Vector2.New(d * this.moveWidth, 0))
end), moveDelta, 0.2):SetEase(Ease.Linear):OnComplete(this.SetSortLayer)
end
---直购成功回调
function this:RechargeSuccessFunc(id)
FirstRechargeManager.RefreshAccumRechargeValue(id)
OperatingManager.RefreshGiftGoodsBuyTimes(GoodsTypeDef.DirectPurchaseGift, id)
local redpack=ConfigManager.GetConfigData(ConfigName.GuildRedPackConfig,curIndex)
this.SetInfo(curIndex)
PopupTipPanel.ShowTip(string.format( "成功发送%s请前往邮箱领取发放者奖励",redpack.Name))
ChatManager.RequestSendRedPacket(curIndex)
end
return this