2026-04-22 09:52:55 +08:00
|
|
|
using UnityEngine;
|
|
|
|
|
using DG.Tweening;
|
|
|
|
|
using System;
|
2026-04-22 11:13:16 +08:00
|
|
|
using FGUI.ZM_Common_01;
|
2026-04-22 09:52:55 +08:00
|
|
|
using FairyGUI;
|
|
|
|
|
using Spine.Unity;
|
|
|
|
|
|
2026-04-27 11:20:13 +08:00
|
|
|
namespace RedHotRoast
|
2026-04-22 09:52:55 +08:00
|
|
|
{
|
|
|
|
|
public class GameResultUI : BaseUI
|
|
|
|
|
{
|
|
|
|
|
private GameResultUICtrl ctrl;
|
|
|
|
|
private GameResultModel model;
|
2026-04-22 11:13:16 +08:00
|
|
|
private FGUI.ZM_GameResult_08.com_end ui;
|
2026-04-22 09:52:55 +08:00
|
|
|
private bool IsWin;
|
|
|
|
|
private bool IsLevelSuccess;
|
|
|
|
|
private bool IsH5Reward;
|
|
|
|
|
|
2026-04-22 11:13:16 +08:00
|
|
|
private float AwardGoldNum = 20;
|
2026-04-22 09:52:55 +08:00
|
|
|
private Action closeCallback;
|
|
|
|
|
|
|
|
|
|
private int AwardRate = 1;
|
|
|
|
|
|
|
|
|
|
public GameResultUI(GameResultUICtrl ctrl) : base(ctrl)
|
|
|
|
|
{
|
|
|
|
|
uiName = UIConst.GameResultUI;
|
|
|
|
|
this.ctrl = ctrl;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override void SetUIInfo(UIInfo uiInfo)
|
|
|
|
|
{
|
2026-04-22 11:13:16 +08:00
|
|
|
uiInfo.packageName = "ZM_GameResult_08";
|
2026-04-22 09:52:55 +08:00
|
|
|
uiInfo.assetName = "com_end";
|
|
|
|
|
uiInfo.layerType = UILayerType.Popup;
|
|
|
|
|
uiInfo.isNeedOpenAnim = false;
|
|
|
|
|
uiInfo.isNeedCloseAnim = false;
|
|
|
|
|
uiInfo.isNeedUIMask = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#region 生命周期
|
|
|
|
|
protected override void OnInit()
|
|
|
|
|
{
|
|
|
|
|
//model = ModuleManager.Instance.GetModel(ModelConst.GameResultModel) as GameResultModel;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override void OnClose()
|
|
|
|
|
{
|
|
|
|
|
GameHelper.SetCloseResult(false);
|
|
|
|
|
closeCallback?.Invoke();
|
|
|
|
|
if (IsLevelSuccess && !GameHelper.is_first_login) UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.OpenGameUI_Open, IsWin);
|
|
|
|
|
if (IsH5Reward)
|
|
|
|
|
{
|
2026-04-22 11:13:16 +08:00
|
|
|
|
2026-04-22 09:52:55 +08:00
|
|
|
GameDispatcher.Instance.Dispatch(GameMsg.resetH5progress);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
2026-04-22 11:13:16 +08:00
|
|
|
//
|
2026-04-22 09:52:55 +08:00
|
|
|
protected override void OnBind()
|
|
|
|
|
{
|
2026-04-22 11:13:16 +08:00
|
|
|
ui = baseUI as FGUI.ZM_GameResult_08.com_end;
|
2026-04-22 09:52:55 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override void OnOpenBefore(object args)
|
|
|
|
|
{
|
2026-04-22 11:13:16 +08:00
|
|
|
ui.btn_gold.GetChild("text_gold").text = $"{DataMgr.Coin.Value:N0}";
|
2026-04-22 09:52:55 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
var data = args as SuccessData;
|
|
|
|
|
IsH5Reward = data.IsH5Reward;
|
|
|
|
|
IsLevelSuccess = data.IsLevelSuccess;
|
|
|
|
|
|
2026-04-22 11:13:16 +08:00
|
|
|
if (GameHelper.IsGiftSwitch() && IsLevelSuccess && !IsH5Reward) {
|
2026-04-22 09:52:55 +08:00
|
|
|
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.PayloadingUI_Open);
|
|
|
|
|
|
2026-04-22 11:13:16 +08:00
|
|
|
GameHelper.PlayGameTimeEvent(1, () => {
|
2026-04-22 09:52:55 +08:00
|
|
|
GameHelper.RequestGameConfig();
|
|
|
|
|
});
|
2026-04-22 11:13:16 +08:00
|
|
|
} else {
|
2026-04-22 09:52:55 +08:00
|
|
|
GameHelper.SetCloseResult(true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (Screen.safeArea.y != 0)
|
|
|
|
|
{
|
|
|
|
|
ui.btn_gold.y += Screen.safeArea.y;
|
|
|
|
|
}
|
|
|
|
|
|
2026-04-22 11:13:16 +08:00
|
|
|
// AwardNum = data.ch_number;
|
|
|
|
|
IsWin = data.IsWin;
|
2026-04-22 09:52:55 +08:00
|
|
|
if (IsWin)
|
|
|
|
|
{
|
|
|
|
|
if (AudioManager.Instance.IsOpenEffect)
|
|
|
|
|
{
|
2026-04-22 11:13:16 +08:00
|
|
|
AudioManager.Instance.PlayDynamicEffect(AudioConst.Victoriously);
|
2026-04-22 09:52:55 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2026-04-22 11:13:16 +08:00
|
|
|
if (IsWin)
|
2026-04-22 09:52:55 +08:00
|
|
|
{
|
2026-04-22 11:13:16 +08:00
|
|
|
ui.win_lose.selectedIndex = ui._Win_lose_win;
|
2026-04-22 09:52:55 +08:00
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2026-04-22 11:13:16 +08:00
|
|
|
ui.win_lose.selectedIndex = ui._Win_lose_lose;
|
2026-04-22 09:52:55 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ui.btn_restart.SetClick(() =>
|
|
|
|
|
{
|
|
|
|
|
if (!GameHelper.GetCloseResult()) return;
|
|
|
|
|
|
|
|
|
|
GameHelper.addInterAdnumber();
|
|
|
|
|
if (!IsWin) GameHelper.SetLevelstate(3);
|
|
|
|
|
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.LevelSuccessUI_Close);
|
|
|
|
|
});
|
|
|
|
|
|
2026-04-22 11:13:16 +08:00
|
|
|
float ch_number = Mathf.Floor(data.ch_number);
|
|
|
|
|
//背景动画
|
|
|
|
|
var anim_bg = FXManager.Instance.SetFx<SkeletonAnimation>(ui.GetChild("bg_parent") as GGraph, Fx_Type.fx_end_bg, ref closeCallback);
|
|
|
|
|
if (IsWin)
|
|
|
|
|
{
|
|
|
|
|
AwardRate = data.rate;
|
|
|
|
|
ui.btn_mult.GetChild("title").text = Language.GetContentParams("exchange_succ", AwardRate);
|
|
|
|
|
anim_bg.state.SetAnimation(0, "win", false);
|
|
|
|
|
anim_bg.state.Complete += (trackEntry) =>
|
|
|
|
|
{
|
|
|
|
|
anim_bg.state.SetAnimation(0, "win_stop", true);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var fireworks = FXManager.Instance.SetFx<SkeletonAnimation>(ui.GetChild("congra_parent") as GGraph, Fx_Type.fx_win, ref closeCallback);
|
|
|
|
|
fireworks.state.SetAnimation(0, "out", true);
|
|
|
|
|
|
|
|
|
|
var coin = FXManager.Instance.SetFx<SkeletonAnimation>(ui.GetChild("coin_parent") as GGraph, Fx_Type.fx_wins, ref closeCallback);
|
|
|
|
|
coin.state.SetAnimation(0, "animation", true);
|
|
|
|
|
coin.state.Complete += (trackEntry) =>
|
|
|
|
|
{
|
|
|
|
|
coin.state.SetAnimation(0, "animation2", true);
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
anim_bg.state.SetAnimation(0, "lose", false);
|
|
|
|
|
anim_bg.state.Complete += (trackEntry) =>
|
|
|
|
|
{
|
|
|
|
|
anim_bg.state.SetAnimation(0, "lose_stop", true);
|
|
|
|
|
};
|
|
|
|
|
}
|
2026-04-22 09:52:55 +08:00
|
|
|
|
|
|
|
|
InitView();
|
|
|
|
|
|
|
|
|
|
if (GameHelper.IsGiftSwitch())
|
|
|
|
|
{
|
|
|
|
|
if (IsWin) ui.text_award.text = GameHelper.Get102Str((decimal)ch_number);
|
|
|
|
|
else
|
|
|
|
|
{
|
2026-04-22 11:13:16 +08:00
|
|
|
ui.text_award.text = GameHelper.Get102Str(DataMgr.Coin.Value);
|
2026-04-22 09:52:55 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ui.btn_mult.SetClick(() =>
|
2026-04-22 11:13:16 +08:00
|
|
|
{
|
|
|
|
|
if (!GameHelper.GetCloseResult()) return;
|
|
|
|
|
|
|
|
|
|
GameHelper.ShowVideoAd("reward_lobby", isSuccess =>
|
|
|
|
|
{
|
|
|
|
|
if (isSuccess)
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
ui.btn_claim.SetClick(() => { });
|
|
|
|
|
ui.btn_mult.SetClick(() => { });
|
|
|
|
|
float reward = ch_number * AwardRate;
|
|
|
|
|
GetReward(reward, ui.btn_mult);
|
|
|
|
|
|
|
|
|
|
GameDispatcher.Instance.Dispatch(GameMsg.RefreshMakeupData);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
});
|
2026-04-22 09:52:55 +08:00
|
|
|
ui.btn_claim.SetClick(() =>
|
|
|
|
|
{
|
|
|
|
|
if (!GameHelper.GetCloseResult()) return;
|
|
|
|
|
|
|
|
|
|
ui.btn_claim.SetClick(() => { });
|
|
|
|
|
ui.btn_mult.SetClick(() => { });
|
|
|
|
|
DOVirtual.DelayedCall(2f, () =>
|
2026-04-22 11:13:16 +08:00
|
|
|
{
|
|
|
|
|
GameHelper.addInterAdnumber();
|
|
|
|
|
});
|
|
|
|
|
GetReward(ch_number,ui.btn_claim);
|
2026-04-22 09:52:55 +08:00
|
|
|
GameDispatcher.Instance.Dispatch(GameMsg.RefreshMakeupData);
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2026-04-22 11:13:16 +08:00
|
|
|
|
|
|
|
|
ui.text_award.text = AwardGoldNum.ToString();
|
|
|
|
|
ui.btn_gold.GetChild("text_gold").text = $"{DataMgr.Coin.Value:N0}";
|
2026-04-22 09:52:55 +08:00
|
|
|
|
|
|
|
|
ui.btn_mult.SetClick(() =>
|
2026-04-22 11:13:16 +08:00
|
|
|
{
|
|
|
|
|
if (!GameHelper.GetCloseResult()) return;
|
2026-04-22 09:52:55 +08:00
|
|
|
|
2026-04-22 11:13:16 +08:00
|
|
|
GameHelper.ShowVideoAd("reward_lobby", isSuccess =>
|
|
|
|
|
{
|
|
|
|
|
if (isSuccess)
|
2026-04-22 09:52:55 +08:00
|
|
|
|
2026-04-22 11:13:16 +08:00
|
|
|
{
|
|
|
|
|
ui.btn_claim.SetClick(() => { });
|
|
|
|
|
ui.btn_mult.SetClick(() => { });
|
2026-04-22 09:52:55 +08:00
|
|
|
|
2026-04-22 11:13:16 +08:00
|
|
|
GetReward(AwardGoldNum * AwardRate, ui.btn_mult);
|
|
|
|
|
|
|
|
|
|
GameDispatcher.Instance.Dispatch(GameMsg.Gold_refresh);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
});
|
2026-04-22 09:52:55 +08:00
|
|
|
ui.btn_claim.SetClick(() =>
|
|
|
|
|
{
|
|
|
|
|
if (!GameHelper.GetCloseResult()) return;
|
|
|
|
|
|
|
|
|
|
ui.btn_claim.SetClick(() => { });
|
|
|
|
|
ui.btn_mult.SetClick(() => { });
|
|
|
|
|
|
2026-04-22 11:13:16 +08:00
|
|
|
GetReward(AwardGoldNum, ui.btn_claim);
|
2026-04-22 09:52:55 +08:00
|
|
|
GameDispatcher.Instance.Dispatch(GameMsg.Gold_refresh);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2026-04-22 11:13:16 +08:00
|
|
|
private void GetReward(float awardNum, GObject obj)
|
2026-04-22 09:52:55 +08:00
|
|
|
{
|
2026-04-22 11:13:16 +08:00
|
|
|
var startObj = obj;
|
|
|
|
|
var endObj = ui.btn_gold;
|
2026-04-22 09:52:55 +08:00
|
|
|
|
|
|
|
|
var pos = GameHelper.GetUICenterPosition(endObj);
|
|
|
|
|
|
|
|
|
|
var rewardData = new RewardData();
|
2026-04-22 11:13:16 +08:00
|
|
|
var rewardSingleData = new RewardSingleData(101, (decimal)awardNum, RewardOrigin.Play)
|
2026-04-22 09:52:55 +08:00
|
|
|
{
|
|
|
|
|
startPosition = GameHelper.GetUICenterPosition(startObj),
|
2026-04-22 11:13:16 +08:00
|
|
|
endPosition = new Vector2(pos.x - 260, pos.y - 136)
|
2026-04-22 09:52:55 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
rewardData.AddReward(rewardSingleData);
|
|
|
|
|
rewardData.displayType = RewardDisplayType.RewardFly | RewardDisplayType.ValueChange;
|
|
|
|
|
rewardData.AddCompleted(success =>
|
|
|
|
|
{
|
|
|
|
|
if (success)
|
|
|
|
|
{
|
2026-04-22 11:13:16 +08:00
|
|
|
RefreshAwardNum((decimal)awardNum, 101);
|
2026-04-22 09:52:55 +08:00
|
|
|
|
|
|
|
|
DOVirtual.DelayedCall(1.5f, () =>
|
|
|
|
|
{
|
|
|
|
|
CtrlCloseUI();
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
GameDispatcher.Instance.Dispatch(GameMsg.GetReward, rewardData);
|
|
|
|
|
}
|
|
|
|
|
|
2026-04-22 11:13:16 +08:00
|
|
|
private void RefreshAwardNum(decimal num = -1, int id = 101)
|
2026-04-22 09:52:55 +08:00
|
|
|
{
|
|
|
|
|
if (num < 0)
|
|
|
|
|
{
|
2026-04-22 11:13:16 +08:00
|
|
|
num = DataMgr.Coin.Value;
|
2026-04-22 09:52:55 +08:00
|
|
|
}
|
|
|
|
|
var btnCoin = ui.btn_gold as com_gold;
|
|
|
|
|
|
2026-04-22 11:13:16 +08:00
|
|
|
GTextField gTextField = btnCoin.text_gold;
|
2026-04-22 09:52:55 +08:00
|
|
|
CommonHelper.ShowNumAnim(gTextField, num, id);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override void OnOpen(object args)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override void OnHide()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override void OnDisplay(object args)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 消息
|
|
|
|
|
protected override void AddListener()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
protected override void RemoveListener()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
//初始化页面逻辑
|
|
|
|
|
private void InitView()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
2026-04-22 11:13:16 +08:00
|
|
|
}
|