bingo 项目提交
This commit is contained in:
@@ -0,0 +1,272 @@
|
||||
using System;
|
||||
using DG.Tweening;
|
||||
using BingoBrain.Core;
|
||||
using UnityEngine;
|
||||
using System.Collections.Generic;
|
||||
using FGUI.JBingoPlay;
|
||||
using Random = UnityEngine.Random;
|
||||
|
||||
namespace BingoBrain
|
||||
{
|
||||
public class ChestUI : BaseUI
|
||||
{
|
||||
private ChestUICtrl ctrl;
|
||||
private ChestModel model;
|
||||
private com_pickBox ui;
|
||||
List<btn_box> btnList = new();
|
||||
Gsss _gsss = new();
|
||||
List<Vector2> posList = new();
|
||||
private bool isAniming;
|
||||
private int rewardCount;
|
||||
private float lastRewardCount;
|
||||
|
||||
private QBLOX LastReward => GameHelper.GetConfig<QBLOXModel>().GetLast();
|
||||
|
||||
public ChestUI(ChestUICtrl ctrl) : base(ctrl)
|
||||
{
|
||||
uiName = UIConst.ChestUI;
|
||||
this.ctrl = ctrl;
|
||||
}
|
||||
|
||||
protected override void SetUIInfo(UIInfo uiInfo)
|
||||
{
|
||||
uiInfo.packageName = "JBingoPlay";
|
||||
uiInfo.assetName = "com_pickBox";
|
||||
uiInfo.layerType = UILayerType.Normal;
|
||||
uiInfo.isNeedOpenAnim = true;
|
||||
uiInfo.isNeedCloseAnim = false;
|
||||
uiInfo.isNeedUIMask = true;
|
||||
}
|
||||
|
||||
#region 生命周期
|
||||
|
||||
protected override void OnInit()
|
||||
{
|
||||
}
|
||||
|
||||
protected override void OnClose()
|
||||
{
|
||||
}
|
||||
|
||||
protected override void OnBind()
|
||||
{
|
||||
ui = baseUI as com_pickBox;
|
||||
}
|
||||
|
||||
protected override void OnOpenBefore(object args)
|
||||
{
|
||||
ui?.FadeIn();
|
||||
InitView();
|
||||
}
|
||||
|
||||
protected override void OnOpen(object args)
|
||||
{
|
||||
Audio.Instance.PlayDynamicEffect("pickbox_enter");
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private void InitView()
|
||||
{
|
||||
if (BingoCell.isFirstGame && PreferencesMgr.Instance.IsFirstBox)
|
||||
{
|
||||
PreferencesMgr.Instance.IsFirstBox = false;
|
||||
}
|
||||
if (GameHelper.IsGiftSwitch()) ui.com_boxdown.gift.selectedIndex = 1;
|
||||
|
||||
ui.closeButton.SetClick(CtrlCloseUI);
|
||||
GameHelper.DelayedShowGObject(this, ui.closeButton);
|
||||
|
||||
btnList.Add(ui.box1);
|
||||
btnList.Add(ui.box2);
|
||||
btnList.Add(ui.box3);
|
||||
btnList.Add(ui.box4);
|
||||
|
||||
lastRewardCount = LastReward.quantity[GameHelper.GetDynamicVersion_Cash().id - 1];
|
||||
RefreshBoxDown();
|
||||
var indexList = new List<int>();
|
||||
|
||||
for (var i = 0; i < 4; i++)
|
||||
{
|
||||
indexList.Add(i);
|
||||
}
|
||||
|
||||
isAniming = true;
|
||||
indexList = GlobalHarmony.GetRandomList(indexList, 4);
|
||||
|
||||
/*foreach (var id in indexList)
|
||||
{
|
||||
Debug.Log(id);
|
||||
}*/
|
||||
|
||||
for (var i = 0; i < indexList.Count; i++)
|
||||
{
|
||||
var index = i;
|
||||
var btn = btnList[index];
|
||||
if (GameHelper.IsGiftSwitch()) btn.gift.selectedIndex = 1;
|
||||
btn.sortingOrder = index + 1;
|
||||
posList.Add(btn.position);
|
||||
// btn.pivotAsAnchor = true;
|
||||
btn.cont_box.selectedIndex = btn._Box_front;
|
||||
btn.cont_first.selectedIndex = BingoCell.isFirstGame ? btn._First_isFirst : btn._First_none;
|
||||
|
||||
var pickBoxVo = GameHelper.GetConfig<QBLOXModel>().GetDataByIndex(index);
|
||||
var reward = pickBoxVo.isCoin
|
||||
? pickBoxVo.quantity[GameHelper.GetDynamicVersion_Coin().id - 1]
|
||||
: pickBoxVo.quantity[GameHelper.GetDynamicVersion_Cash().id - 1];
|
||||
|
||||
btn.cont_type.selectedIndex = pickBoxVo.isCoin ? btn._Type_coin : btn._Type_cash;
|
||||
btn.text_num.text = GameHelper.GetItemSum(pickBoxVo.itemId, (decimal)reward);
|
||||
btn.SetClick(() => { OnBtnBoxClick(btn, pickBoxVo, reward); });
|
||||
}
|
||||
|
||||
_gsss.Add(0.6f, (obj) =>
|
||||
{
|
||||
var duration = 0.5f;
|
||||
foreach (var btn in btnList)
|
||||
{
|
||||
btn.fx_fronttoback.invalidateBatchingEveryFrame = true;
|
||||
btn.fx_fronttoback.timeScale = 2;
|
||||
btn.fx_fronttoback.Play();
|
||||
btn.cont_box.selectedIndex = btn._Box_back;
|
||||
}
|
||||
|
||||
DOVirtual.DelayedCall(duration, obj.InvokeComplete);
|
||||
});
|
||||
Vector2 center = BingoCell.CenterUIPos - ui.box1.size / 2;
|
||||
_gsss.Add((obj) =>
|
||||
{
|
||||
var duration = 0.5f;
|
||||
foreach (var btn in btnList)
|
||||
{
|
||||
var originPos = btn.position;
|
||||
btn.TweenMove(center, 0.5f);
|
||||
var btn1 = btn;
|
||||
DOVirtual.Float(0, 1, duration, prg =>
|
||||
{
|
||||
btn1.InvalidateBatchingState();
|
||||
btn1.position = Vector2.Lerp(originPos, center, prg);
|
||||
});
|
||||
}
|
||||
|
||||
DOVirtual.DelayedCall(duration, obj.InvokeComplete);
|
||||
});
|
||||
|
||||
_gsss.Add((obj) =>
|
||||
{
|
||||
var count = 0;
|
||||
foreach (var btn in btnList)
|
||||
{
|
||||
var seq = new Gsss();
|
||||
for (var j = 0; j < 6; j++)
|
||||
{
|
||||
float distance = Random.Range(100, 200);
|
||||
|
||||
var time = Random.Range(0.1f, 0.3f);
|
||||
Vector2 targetPos;
|
||||
if (j % 2 == 0)
|
||||
{
|
||||
var dir = new Vector2(Random.Range(-1f, 1f), Random.Range(-1f, 1f));
|
||||
dir.Normalize();
|
||||
targetPos = center + dir * distance;
|
||||
}
|
||||
else
|
||||
{
|
||||
targetPos = center;
|
||||
}
|
||||
|
||||
var btn1 = btn;
|
||||
seq.Add(tmp =>
|
||||
{
|
||||
btn1.InvalidateBatchingState();
|
||||
btn1.TweenMove(targetPos, time);
|
||||
DOVirtual.DelayedCall(time, tmp.InvokeComplete);
|
||||
});
|
||||
}
|
||||
|
||||
seq.onFinish = delegate
|
||||
{
|
||||
count++;
|
||||
if (count == btnList.Count)
|
||||
{
|
||||
obj.InvokeComplete();
|
||||
}
|
||||
};
|
||||
|
||||
seq.Run();
|
||||
}
|
||||
});
|
||||
|
||||
_gsss.Add((obj) =>
|
||||
{
|
||||
var duration = 0.2f;
|
||||
for (var i = 0; i < indexList.Count; i++)
|
||||
{
|
||||
var index = indexList[i];
|
||||
var btn = btnList[i];
|
||||
Debug.Log($"{i}:{index}");
|
||||
btn.TweenMove(posList[index], duration);
|
||||
}
|
||||
|
||||
DOVirtual.DelayedCall(duration, obj.InvokeComplete);
|
||||
});
|
||||
_gsss.onFinish = delegate { isAniming = false; };
|
||||
_gsss.Run();
|
||||
}
|
||||
|
||||
|
||||
private void OnBtnBoxClick(btn_box box, QBLOX vo, float reward)
|
||||
{
|
||||
if (isAniming)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (box.cont_box.selectedIndex == box._Box_front)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Action<bool> cb = delegate
|
||||
{
|
||||
box.fx_backtofront.timeScale = 2;
|
||||
box.fx_backtofront.invalidateBatchingEveryFrame = true;
|
||||
box.fx_backtofront.Play();
|
||||
DOVirtual.DelayedCall(box.fx_backtofront.totalDuration, delegate
|
||||
{
|
||||
GameHelper.GetRewardOnly(vo.itemId, (decimal)reward, RewardOrigin.PickBox, null, box);
|
||||
rewardCount++;
|
||||
RefreshBoxDown();
|
||||
if (rewardCount == 4)
|
||||
{
|
||||
GameHelper.GetRewardOnly(LastReward.itemId, (decimal)lastRewardCount, RewardOrigin.PickBox,
|
||||
isSuccess => { CtrlCloseUI(); }, ui.com_boxdown.icon_102);
|
||||
}
|
||||
});
|
||||
box.cont_box.selectedIndex = box._Box_front;
|
||||
};
|
||||
|
||||
|
||||
if (BingoCell.isFirstGame)
|
||||
{
|
||||
cb(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
GameHelper.GetVideo("reward_PickBox", isSuccess =>
|
||||
{
|
||||
if (isSuccess)
|
||||
{
|
||||
cb(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void RefreshBoxDown()
|
||||
{
|
||||
ui.com_boxdown.pb_box.TweenValue(rewardCount, 0.5f);
|
||||
ui.com_boxdown.text_aNum.text = GameHelper.GetItemSum(LastReward.itemId, (decimal)lastRewardCount);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user