bingo 项目提交

This commit is contained in:
2026-04-20 13:49:36 +08:00
commit ad5920ac6a
5585 changed files with 1216243 additions and 0 deletions
@@ -0,0 +1,294 @@
using System;
using FairyGUI;
using DG.Tweening;
using UnityEngine;
using BingoBrain.Core;
using BingoBrain.HotFix;
using System.Collections.Generic;
using FGUI.JRewardPop;
using Newtonsoft.Json;
namespace BingoBrain
{
public class ExtraItemUI : BaseUI
{
private ExtraItemUICtrl ctrl;
private ExtraItemModel model;
private FGUI.JRewardPop.com_extraItem ui;
private RewardedVal data;
public int curRatio;
public List<int> ratioList = new();
public List<float> chanceList = new();
public Action<bool> onfinish;
private int type;
private bool isRead;
private float duration = 3;
private float backDuration = 0.3f;
private int round = 7;
private float sizeX = 150;
private bool isDouble;
public ExtraItemUI(ExtraItemUICtrl ctrl) : base(ctrl)
{
uiName = UIConst.ExtraItemUI;
this.ctrl = ctrl;
}
protected override void SetUIInfo(UIInfo uiInfo)
{
uiInfo.packageName = "JRewardPop";
uiInfo.assetName = "com_extraItem";
uiInfo.layerType = UILayerType.Popup;
uiInfo.isNeedOpenAnim = true;
uiInfo.isNeedCloseAnim = true;
uiInfo.isNeedUIMask = true;
}
#region
protected override void OnInit()
{
}
protected override void OnClose()
{
ui?.FadeOut();
onfinish?.Invoke(isRead);
if (type != ui._Extra_extraCoin)
{
if (type != ui._Extra_extraCard)
{
data.Release();
}
}
}
protected override void OnBind()
{
ui = baseUI as com_extraItem;
}
protected override void OnOpenBefore(object args)
{
Audio.Instance.PlayDynamicEffect("pop_open");
}
protected override void OnOpen(object args)
{
ui?.FadeIn();
data = args as RewardedVal;
if (data.Id == 102) ui.curr_type.selectedIndex = 1;
if (data != null)
{
curRatio = 1;
onfinish = data.onfinish;
type = data.cont_index;
var adRewardVo = GameHelper.GetChanceByIdAndNum(data.Id, (int)data.Sum);
Debug.Log(JsonConvert.SerializeObject(adRewardVo));
if (adRewardVo != null)
{
foreach (var chance in adRewardVo.probability)
{
chanceList.Add(chance);
}
foreach (var ratio in adRewardVo.ratio)
{
ratioList.Add(ratio);
}
}
if (ui != null)
{
ui.cont_extra.selectedIndex = data.cont_index;
ui.com_roll.list_roll.numItems = ratioList.Count;
ui.com_roll.list_roll.SetVirtualAndLoop();
ui.com_roll.list_roll.itemRenderer = OnItemRender;
ui.btn_more.SetClick(OnBtnMoreClick);
ui.btn_claim.SetClick(OnBtnClaimClick);
ui.closeButton.SetClick(OnBtnClaimClick);
ui.com_roll.list_roll.touchable = false;
ui.com_roll.list_roll.numItems = ratioList.Count;
var posX = GetPosByIndex(0);
ui.com_roll.list_roll.scrollPane.SetPosX(posX, false);
if (data.cont_index == ui._Extra_extraCoin)
{
ui.text_num.text = $"+{GameHelper.GetNoDecimalUnitStr(data.Sum)}";
}
else if (data.cont_index == ui._Extra_extraCard)
{
ui.text_cardnum.text = $"+{data.Sum}";
}
if (type != ui._Extra_extraball)
{
GameHelper.DelayedShowGObject(this, ui.closeButton, ui.btn_claim);
}
}
}
}
private void OpenCloseClick(bool val)
{
ui.btn_more.touchable = val;
ui.btn_claim.touchable = val;
ui.closeButton.touchable = val;
}
private void OnBtnClaimClick()
{
GameHelper.ShowInterstitial("interstitial_skipAd");
OpenCloseClick(false);
if (data.cont_index == ui._Extra_extraball)
{
data.onResult?.Invoke(false);
isRead = false;
}
else
{
isRead = true;
GetReward();
}
CtrlCloseUI();
}
private void OnBtnMoreClick()
{
isRead = true;
var val = string.Empty;
if (data.cont_index == ui._Extra_extraCoin)
{
val = "reward_extraCoin";
}
else if (data.cont_index == ui._Extra_extraCard)
{
val = "reward_extraCard";
}
else if (data.cont_index == ui._Extra_extraball)
{
val = "reward_extraBall";
}
else if (data.cont_index == ui._Extra_extracash3)
{
val = "reward_extraCashProp3";
}
else if (data.cont_index == ui._Extra_extracash5)
{
val = "reward_extraCashProp5";
}
GameHelper.GetVideo(val, isSuccess =>
{
if (isSuccess)
{
OpenCloseClick(false);
isDouble = true;
var index = GlobalHarmony.GetChanceList(chanceList);
curRatio = ratioList[index];
Debug.Log("x" + curRatio);
Audio.Instance.PlayDynamicEffect("extra_ad");
MoveToListPosByIndex(ui.com_roll.list_roll, index, GetReward);
}
});
}
void MoveToListPosByIndex(GList list, int index, Action onfinish)
{
var posX = GetPosByIndex(index);
var originX = GetPosByIndex(0);
var targetX = posX + sizeX * ratioList.Count * round;
var targetOffset = targetX + sizeX / 2;
DOVirtual.Float(originX, targetOffset, duration, (prg) =>
{
while (prg > sizeX * ratioList.Count)
{
prg -= sizeX * ratioList.Count;
}
list.scrollPane.SetPosX(prg, false);
}).SetEase(Ease.OutSine);
DOVirtual.DelayedCall(duration + Time.deltaTime, delegate
{
DOVirtual.Float(targetOffset, targetX, backDuration, (prg) =>
{
while (prg > sizeX * ratioList.Count)
{
prg -= sizeX * ratioList.Count;
}
list.scrollPane.SetPosX(prg, false);
}).SetEase(Ease.OutSine).OnComplete(() =>
{
DOVirtual.DelayedCall(1.5f, () => { onfinish?.Invoke(); });
});
});
}
float GetPosByIndex(int index)
{
return GetPosByIndex(index, ratioList.Count, sizeX, ui.com_roll.list_roll.width / 2);
}
public static float GetPosByIndex(int index, int count, float size, float viewCenter)
{
return size * (count - 3 + index) + (viewCenter);
}
private void GetReward()
{
data.onResult?.Invoke(true);
if (data.cont_index == ui._Extra_extraCoin)
{
// 显示金币变化
ui.text_num.text = "+" + GameHelper.GetNoDecimalUnitStr(data.Sum * curRatio);
data.Sum *= curRatio;
GameHelper.GetRewardOnly(data.Id, (decimal)data.Sum, RewardOrigin.Play);
}
else if (data.cont_index == ui._Extra_extraCard)
{
data.Sum *= curRatio;
GameHelper.GetRewardOnly(data.Id, (decimal)data.Sum, RewardOrigin.Play);
}
else if (data.cont_index == ui._Extra_extracash3)
{
// 3个钞票格子
var count = data.cont_index * data.cont_index;
GameDispatcher.Instance.Dispatch(BingoInfo.AddMoneyCell, count);
}
else if (data.cont_index == ui._Extra_extracash5)
{
// 5个钞票格子
var count = (int)data.Sum * curRatio;
GameDispatcher.Instance.Dispatch(BingoInfo.AddMoneyCell, count);
}
else if (data.cont_index == ui._Extra_extraball)
{
// 加剩余球
var val = curRatio * (int)data.Sum;
val = Mathf.Clamp(val, 0, 5);
gameDispatcher.Dispatch(BingoInfo.AddBallSum, val);
BingoCell.AddCallSum++;
}
CtrlCloseUI();
}
private void OnItemRender(int index, GObject item)
{
if (item is com_multi tmpItem)
{
tmpItem.text_multi.text = "X" + ratioList[index];
}
}
#endregion
}
}