Files
BingoGrassland/Assets/BingoBrain/ModuleUI/BingoHall/BingoHallUI.cs
T

578 lines
22 KiB
C#
Raw Normal View History

2026-04-20 13:49:36 +08:00
using Spine;
using System;
using FairyGUI;
using DG.Tweening;
using UnityEngine;
using Spine.Unity;
using BingoBrain.Core;
using BingoBrain.HotFix;
using FGUI.JMain;
using System.Collections.Generic;
using Random = UnityEngine.Random;
using FGUI.ACommon;
using System.Linq;
using Newtonsoft.Json;
namespace BingoBrain
{
public class BingoHallUI : BaseUI
{
private BingoHallUICtrl ctrl;
private BingoHallModel model;
public com_main ui;
private float moveTime = 3;
private bool isLeft = true;
private Tween waitTween;
private string RadioStr = "[color=#00FF00]{0} [/color]sent to [color=#FF0000]{1}[/color]";
private Queue<GTweener> gtweenerQueue = new();
private Queue<Tween> tweenerQueue = new();
bool IsBallonCD => GameHelper.GetNowTime() < PreferencesMgr.Instance.BallonCdTime;
public BingoHallUI(BingoHallUICtrl ctrl) : base(ctrl)
{
uiName = UIConst.BingoHallUI;
this.ctrl = ctrl;
}
protected override void SetUIInfo(UIInfo uiInfo)
{
uiInfo.packageName = "JMain";
uiInfo.assetName = "com_main";
uiInfo.layerType = UILayerType.Normal;
uiInfo.isNeedOpenAnim = false;
uiInfo.isNeedCloseAnim = false;
}
#region
protected override void OnInit()
{
model = ModuleBoardk.GetModel(ModelConst.BingoHallModel) as BingoHallModel;
}
protected override void OnClose()
{
OnClearTween();
Hall.Instance.UpdateSecondEvent -= UpdateSecond;
}
protected override void OnBind()
{
ui = baseUI as com_main;
}
protected override void OnOpenBefore(object args)
{
InitView();
2026-05-08 11:03:00 +08:00
// if (!GameHelper.IsGiftSwitch() && (ConfigSystem.GetConfig<CommonModel>().WVswitch == 1))
// {
// ui.btn_h5.visible = true;
// ui.btn_h5.GetChild("number_text").visible=false;
// }
// ui.btn_h5.SetClick(() =>
// {
// UICtrlDispatcher.Instance.Dispatch(SkinInfo.H5UI_Open);
// });
2026-04-20 13:49:36 +08:00
}
protected override void OnOpen(object args)
{
}
#endregion
#region
protected override void AddListener()
{
Hall.Instance.AddChangeGiftSwitch(InitView);
PreferencesDispatcher<int>.Instance.AddListener(PreferencesMsg.cardBoardSum, CardBoardSumChange);
GameDispatcher.Instance.AddListener(BingoInfo.RefreshMakeupData, SetMakeup);
}
protected override void RemoveListener()
{
Hall.Instance.RemoveChangeGiftSwitch(InitView);
PreferencesDispatcher<int>.Instance.RemoveListener(PreferencesMsg.cardBoardSum, CardBoardSumChange);
GameDispatcher.Instance.RemoveListener(BingoInfo.RefreshMakeupData, SetMakeup);
}
#endregion
private void InitView()
{
if (GameHelper.IsGiftSwitch())
{
ui.gift.selectedIndex = 1;
(ui.btn_ballon as btn_balloon).gift.selectedIndex = 1;
2026-05-08 11:03:00 +08:00
}
;
2026-04-20 13:49:36 +08:00
#if !UNITY_EDITOR
ui.btn_admin.visible=false;
#endif
if (Screen.safeArea.y != 0)
{//刘海屏
ui.com_cards.y += Screen.safeArea.y;
}
InitSpine();
ui.btn_play.SetClick(OnClickPlay);
ui.com_cardnum.cont_state.onChanged.Set(() => { OnCardNumChange(null); });
ui.com_cardnum.btn_add.SetClick(OnBtnAddClick);
ui.com_cardnum.btn_add.cont_button.selectedIndex = PlayerPrefs.GetInt("FirstGame", 0) == 1
? ui.com_cardnum.btn_add._Button_light
: ui.com_cardnum.btn_add._Button_dark;
ui.com_cardnum.btn_add.touchable = PlayerPrefs.GetInt("FirstGame", 0) == 1;
ui.com_cardnum.btn_minus.SetClick(OnBtnMinusClick);
OnCardNumChange(null);
ui.com_cardnum.cont_state.selectedIndex = model.CardBoardCountIndex;
ui.com_cardplay.cont_text.selectedIndex = model.CardBoardCountIndex;
2026-05-08 11:03:00 +08:00
ui.type.selectedIndex = model.CardBoardCountIndex;
2026-04-20 13:49:36 +08:00
ui.btn_ballon.visible = !IsBallonCD;
ui.btn_ballon.SetClick(OnClickBalloon);
ui.btn_ballon.sortingOrder = 100;
MoveToOtherSide();
Hall.Instance.UpdateSecondEvent += UpdateSecond;
CardBoardSumChange(null);
UpdateNextCardBoardTime();
ui.com_cards.SetClick(() =>
{
if (PreferencesMgr.Instance.CardBoardSum == 0)
{
uiCtrlDispatcher.Dispatch(SkinInfo.MoreCardUI_Open);
}
});
ui.fairyBatching = false;
SetMakeup();
ui.btn_admin.SetClick(() =>
{
2026-05-08 11:03:00 +08:00
// MakeupTaskData makeupTaskData = PreferencesMgr.Instance.MakeupTaskHistory.Last();
// makeupTaskData.videoCount = 999999;
// PreferencesMgr.Instance.MakeupTaskH5Time = 99999;
// PreferencesMgr.Instance.Currency102 = 99999;
// PreferencesMgr.Instance.Currency101 = 99999999;
// GameDispatcher.Instance.Dispatch(BingoInfo.RefreshMakeupData);
2026-04-20 13:49:36 +08:00
2026-05-08 11:03:00 +08:00
// makeupTaskData = PreferencesMgr.Instance.CoinMakeupTaskHistory.Last();
// makeupTaskData.videoCount = 99999;
// PreferencesMgr.Instance.CoinMakeupTaskH5Time = 99999;
2026-04-20 13:49:36 +08:00
});
ui.btn_set.SetClick(() =>
{
UICtrlDispatcher.Instance.Dispatch(SkinInfo.JThinkUI_Open);
});
ui.btn_question.SetClick(() =>
{
UICtrlDispatcher.Instance.Dispatch(SkinInfo.FaqUIUI_Open);
});
2026-05-08 11:03:00 +08:00
ui.btn_cashout.SetClick(() =>
{
var makeupTaskData = PreferencesMgr.Instance.MakeupTaskHistory.Last();
var vo = ConfigSystem.GetConfig<MakeupModel>().GetData(makeupTaskData.tableId);
//DataMgr.Ticket.Value=99999;
//makeupTaskData.videoCount = 50;
if (vo == null)
{
return;
}
UICtrlDispatcher.Instance.Dispatch(SkinInfo.MakeupConfirmUI_Open, makeupTaskData);
});
ui.btn_saveingpot.SetClick(() =>
{
UICtrlDispatcher.Instance.Dispatch(SkinInfo.SaveingPotUI_Open);
});
2026-04-20 13:49:36 +08:00
}
private void UpdateNextCardBoardTime()
{
if (ui.com_cards.text_time.visible)
{
ui.com_cards.text_time.text = $"New card in {model.NextCardBoardTimeStr}s";
}
}
private void CardBoardSumChange(object obj)
{
if (PreferencesMgr.Instance.CardBoardSum >= model.MaxCardBoardSum)
{
ui.com_cards.cont_cardleft.selectedIndex = com_playnum.Cardleft_full;
}
else if (PreferencesMgr.Instance.CardBoardSum == 0)
{
ui.com_cards.cont_cardleft.selectedIndex = com_playnum.Cardleft_none;
}
else
{
ui.com_cards.cont_cardleft.selectedIndex = com_playnum.Cardleft_left;
}
ui.com_cards.text_num.text = GameHelper.GetNoDecimalUnitStr(PreferencesMgr.Instance.CardBoardSum);
}
private bool isMoveFinish = true;
private Vector2 StartPos = new(9, 647);
private Vector2 FinalPos = new(925, 539);
void MoveToOtherSide()
{
if (waitTween != null)
{
return;
}
isLeft = !isLeft;
if (!ui.btn_ballon.visible)
{
return;
}
if (!isMoveFinish)
{
return;
}
var targetPos = isLeft ? StartPos : FinalPos;
float offset = 300;
targetPos.y = Random.Range(BingoCell.CenterUIPos.y - offset, BingoCell.CenterUIPos.y + offset);
isMoveFinish = false;
var tw = ui.btn_ballon.TweenMove(targetPos, moveTime).OnComplete(() =>
{
isMoveFinish = true;
ui.btn_ballon.InvalidateBatchingState();
float waitTime = Random.Range(5, 11);
waitTween = DOVirtual.DelayedCall(waitTime, () =>
{
waitTween = null;
MoveToOtherSide();
});
tweenerQueue.Enqueue(waitTween);
});
gtweenerQueue.Enqueue(tw);
}
private void UpdateSecond()
{
if (!Hall.Instance.IsGaming())
{
if (ui != null && ui.btn_ballon != null)
{
if (ui.btn_ballon.visible != !IsBallonCD)
{
ui.btn_ballon.visible = !IsBallonCD;
// 开始移动
if (ui.btn_ballon.visible)
{
MoveToOtherSide();
}
}
}
}
UpdateNextCardBoardTime();
}
private void OnClickBalloon()
{
if (BingoCell.isProcedure || BingoCell.IsGuiding)
{
return;
}
Audio.Instance.PlayDynamicEffect("button");
GameHelper.GetVideo("reward_flyballoon", isSuccess =>
{
if (isSuccess)
{
ui.btn_ballon.touchable = false;
var rewardType = GameHelper.GetCommonModel().ballonRewardType[0];
double rewardCount = 0;
if (rewardType == 102)
{
rewardCount = GameHelper.GetDynamicReward(102, GameHelper.GetCommonModel().ballonReward102);
}
ui.btn_ballon.visible = false;
PreferencesMgr.Instance.BallonCdTime =
(int)(GameHelper.GetNowTime() + GameHelper.GetCommonModel().ballonCD);
GameHelper.GetRewardOnly(rewardType, (decimal)rewardCount, RewardOrigin.Ballon,
isSuccess =>
{
ui.btn_ballon.touchable = true;
GameDispatcher.Instance.Dispatch(BingoInfo.RefreshMakeupData);
}, ui.btn_ballon, GameHelper.IsGiftSwitch() ? ui.makeup.cash_text : null);
}
});
}
private void OnBtnMinusClick()
{
model.CardBoardCountIndex--;
ui.com_cardnum.cont_state.selectedIndex = model.CardBoardCountIndex;
ui.com_cardplay.cont_text.selectedIndex = model.CardBoardCountIndex;
2026-05-08 11:03:00 +08:00
Debug.Log(model.CardBoardCountIndex);
ui.type.selectedIndex = model.CardBoardCountIndex;
// var animName = model.CardBoardCountIndex switch
// {
// 0 => "2_1",
// 1 => "4_2",
// _ => ""
// };
// NAAVsa.PlayAnim(cardSpine, animName);
2026-04-20 13:49:36 +08:00
}
private void OnBtnAddClick()
{
model.CardBoardCountIndex++;
ui.com_cardnum.cont_state.selectedIndex = model.CardBoardCountIndex;
ui.com_cardplay.cont_text.selectedIndex = model.CardBoardCountIndex;
2026-05-08 11:03:00 +08:00
ui.type.selectedIndex = model.CardBoardCountIndex;
// var animName = model.CardBoardCountIndex switch
// {
// 1 => "1_2",
// 2 => "2_4",
// _ => ""
// };
2026-04-20 13:49:36 +08:00
2026-05-08 11:03:00 +08:00
// NAAVsa.PlayAnim(cardSpine, animName);
2026-04-20 13:49:36 +08:00
}
private void OnCardNumChange(EventContext context)
{
switch (model.CardBoardCountIndex)
{
case 0:
ui.com_cardnum.btn_minus.cont_button.selectedIndex = ui.com_cardnum.btn_minus._Button_dark;
ui.com_cardnum.btn_add.cont_button.selectedIndex = ui.com_cardnum.btn_add._Button_light;
ui.com_cardnum.btn_minus.touchable = false;
ui.com_cardnum.btn_add.touchable = true;
break;
case 2:
ui.com_cardnum.btn_minus.cont_button.selectedIndex = ui.com_cardnum.btn_minus._Button_light;
ui.com_cardnum.btn_add.cont_button.selectedIndex = ui.com_cardnum.btn_add._Button_dark;
ui.com_cardnum.btn_minus.touchable = true;
ui.com_cardnum.btn_add.touchable = false;
break;
default:
ui.com_cardnum.btn_minus.cont_button.selectedIndex = ui.com_cardnum.btn_minus._Button_light;
ui.com_cardnum.btn_add.cont_button.selectedIndex = ui.com_cardnum.btn_add._Button_light;
ui.com_cardnum.btn_minus.touchable = true;
ui.com_cardnum.btn_add.touchable = true;
break;
}
}
private SkeletonAnimation cardSpine;
private Action CloseCb;
private void InitSpine()
{
if (cardSpine != null)
{
return;
}
2026-05-08 11:03:00 +08:00
// if (GameHelper.IsGiftSwitch())
// {
// FX.Instance.SetFx<SkeletonAnimation>(ui.gp_fx, Fx_Type.spine_choice_card_b, sk =>
// {
// cardSpine = sk;
2026-04-20 13:49:36 +08:00
2026-05-08 11:03:00 +08:00
// NAAVsa.AddCompleteEvent(cardSpine, OnChangeCardFinish);
// OnChangeCardFinish(null);
// }, CloseCb);
// }
// else
// {
// FX.Instance.SetFx<SkeletonAnimation>(ui.gp_fx, Fx_Type.spine_choice_card, sk =>
// {
// cardSpine = sk;
2026-04-20 13:49:36 +08:00
2026-05-08 11:03:00 +08:00
// NAAVsa.AddCompleteEvent(cardSpine, OnChangeCardFinish);
// OnChangeCardFinish(null);
// }, CloseCb);
// }
2026-04-20 13:49:36 +08:00
}
private void OnChangeCardFinish(TrackEntry trackEntry)
{
if (trackEntry != null && trackEntry.Animation.Name.Contains("animation"))
{
return;
}
var idleName = model.CardBoardCountIndex switch
{
0 => "animation1",
1 => "animation2",
_ => "animation4"
};
NAAVsa.PlayAnim(cardSpine, idleName, true);
}
private void OnClickPlay()
{
if (PreferencesMgr.Instance.CardBoardSum >= BingoCell.CardBoardCount)
{
PreferencesMgr.Instance.CardBoardSum -= BingoCell.CardBoardCount;
ui.com_cards.text_fx.text = $"-{BingoCell.CardBoardCount}";
ui.touchable = false;
ui.com_cards.fx_num.Play();
DOVirtual.DelayedCall(ui.com_cards.fx_num.totalDuration / 2, () =>
{
uiCtrlDispatcher.Dispatch(SkinInfo.SmailUI_Close);
GameDispatcher.Instance.Dispatch(BingoInfo.StartBingoGame);
});
}
else
{
uiCtrlDispatcher.Dispatch(SkinInfo.MoreCardUI_Open);
}
}
private void OnClearTween()
{
while (gtweenerQueue.Count > 0)
{
var tw = gtweenerQueue.Dequeue();
tw?.Kill();
}
while (tweenerQueue.Count > 0)
{
var tw = tweenerQueue.Dequeue();
if (tw is { active: true })
{
tw.Kill();
}
}
}
void SetMakeup(object a = null)
{
2026-05-08 11:03:00 +08:00
return;
2026-04-20 13:49:36 +08:00
// var com_box = ui.com_box;
// com_box.cont_white.selectedIndex =
// GameHelper.IsGiftSwitch() ? com_box._White_none : com_box._White_white;
// if (!GameHelper.IsGiftSwitch())
// {
// ui.text_uid.SetVar("uid", loginModel.uid.ToString()).FlushVars();
// }
// GameHelper.SetSelfCountryFlag(ui.com_box.btn_menu.loader_flag);
// SetAvatar();
// SetName();
// com_box.text_num.text = GameHelper.Get101Str(PreferencesMgr.Instance.Currency101);
// DOVirtual.Float(0, (float)PreferencesMgr.Instance.Currency101, 1,
// value => { com_box.text_num.text = GameHelper.Get101Str((decimal)value); });
if (GameHelper.IsGiftSwitch())
{
2026-05-08 11:03:00 +08:00
// var makeupTaskData = PreferencesMgr.Instance.MakeupTaskHistory.Last();
// Debug.Log(PreferencesMgr.Instance.MakeupTaskHistory.Count);
// Debug.Log(JsonConvert.SerializeObject(makeupTaskData));
// Debug.Log(ConfigSystem.GetConfig<MakeupModel>().GetCount());
// Debug.Log(JsonConvert.SerializeObject(ConfigSystem.GetConfig<MakeupModel>()));
2026-04-20 13:49:36 +08:00
makeup vo = null;
2026-05-08 11:03:00 +08:00
// foreach (makeup item in ConfigSystem.GetConfig<MakeupModel>().dataList)
// {
// Debug.Log(JsonConvert.SerializeObject(item));
// if (item.id == makeupTaskData.tableId) vo = item;
// }
2026-04-20 13:49:36 +08:00
// Debug.Log(ConfigSystem.GetConfig<MakeupModel>().GetData(0));
// Debug.Log(ConfigSystem.GetConfig<MakeupModel>().GetData(1));
// Debug.Log(ConfigSystem.GetConfig<MakeupModel>().GetData(2));
// if (vo == null)
// {
// return;
// }
DOVirtual.Float(0, (float)PreferencesMgr.Instance.Currency102, 1,
value => { ui.makeup.cash_text.text = value.ToString("0.00"); });
ui.makeup.cash_progress_text.text = PreferencesMgr.Instance.Currency102 + "/" + vo.item_need;
ui.makeup.cash_progress.value = ((float)PreferencesMgr.Instance.Currency102 * 100) / vo.item_need;
// var leftCash = (double)Math.Max(vo.item_need - PreferencesMgr.Instance.Currency101, 0);
// com_box.text_more.SetVar("left", GameHelper.Get101Str((decimal)leftCash)).FlushVars();
// com_box.pb_num.max = vo.item_need;
// com_box.pb_num.value = vo.item_need - leftCash;
// pbTxt.text =
// $"{GameHelper.Get101Str((decimal)(vo.item_need - leftCash))}/{GameHelper.Get101Str((decimal)com_box.pb_num.max)}";
2026-05-08 11:03:00 +08:00
// ui.makeup.btn_cash.SetClick(() =>
// {
// Debug.Log("999999999999999");
// // if (GameHelper.CanGuide() && !GuideCtrl.Instance.IsFinishGuide(1))
// // {
// // GuideCtrl.Instance.Dispatch("ClickButton");
// // ui.com_box.finger_place.visible = false;
// // }
// uiCtrlDispatcher.Dispatch(SkinInfo.MakeupConfirmUI_Open, makeupTaskData);
// });
2026-04-20 13:49:36 +08:00
}
{
2026-05-08 11:03:00 +08:00
// if (PreferencesMgr.Instance.CoinMakeupTaskHistory.Count == 0)
// {
2026-04-20 13:49:36 +08:00
2026-05-08 11:03:00 +08:00
// BingoDataSystem.CheckCoinMakeupTaskData();
// //PreferencesMgr.Instance.MakeupTaskHistory.Add(new MakeupTaskData());
// //Debug.Log(PreferencesMgr.Instance.MakeupTaskHistory.Count);
// }
2026-04-20 13:49:36 +08:00
2026-05-08 11:03:00 +08:00
// var makeupTaskData = PreferencesMgr.Instance.CoinMakeupTaskHistory.Last();
// var vo = ConfigSystem.GetConfig<CardRedeemNewModel>().dataList
// .FirstOrDefault(cardNew => cardNew.id == makeupTaskData.tableId);
// Debug.Log(JsonConvert.SerializeObject(vo));
// DOVirtual.Float(0, PreferencesMgr.Instance.Currency101, 1,
// value => { ui.makeup.gold_text.text = ((int)value).ToString(); });
// ui.makeup.gold_progress_text.text = PreferencesMgr.Instance.Currency101 + "/" + vo.item_need;
// ui.makeup.gold_progress.value = ((float)PreferencesMgr.Instance.Currency101 * 100) / vo.item_need;
// Debug.Log(((float)PreferencesMgr.Instance.Currency101) / vo.item_need);
// ui.makeup.coin_cash.text = "$" + vo.redeem_num;
// ui.makeup.btn_goldout.SetClick(() =>
// {
// Debug.Log(PreferencesMgr.Instance.Currency101);
// Debug.Log(vo.item_need);
// if (makeupTaskData.status == MakeupTaskStatus.None)
// {
// if (PreferencesMgr.Instance.Currency101 >= vo.item_need)
// {
// uiCtrlDispatcher.Dispatch(SkinInfo.MakeupConfirmUI_Open, makeupTaskData);
// }
// else
// {
// GameHelper.ShowTips("Not enough", true);
// }
// }
// else
// {
// uiCtrlDispatcher.Dispatch(SkinInfo.MakeupConfirmUI_Open, makeupTaskData);
// }
// });
2026-04-20 13:49:36 +08:00
}
2026-05-08 11:03:00 +08:00
(ui.btn_ballon as btn_balloon).cash_text.text = GameHelper.GetDynamicReward(102, GameHelper.GetCommonModel().ballonReward102).ToString("0.00");
2026-04-20 13:49:36 +08:00
}
}
}