Files
BallCrushBest_GP/Assets/Scripts/ModuleUI/PassView/PassViewUI.cs
T
2026-04-20 12:06:34 +08:00

615 lines
24 KiB
C#

using System.Collections.Generic;
using UnityEngine;
using FairyGUI;
using DG.Tweening;
using System;
using Spine.Unity;
using FGUI.ZM_Pass_14;
using FGUI.ZM_Common_01;
namespace BallKingdomCrush
{
public class PassViewUI : BaseUI
{
private PassViewUICtrl ctrl;
private PassViewModel model;
private FGUI.ZM_Pass_14.com_pass_view ui;
List<PassingTask> passing_list = new List<PassingTask>();
List<Durationtasks> Durationtasks_list = new List<Durationtasks>();
List<Passportrewards> Passportrewards_list = new List<Passportrewards>();
private Vector2 start_pos;
private Action closeCallback;
public PassViewUI(PassViewUICtrl ctrl) : base(ctrl)
{
uiName = UIConst.PassViewUI;
this.ctrl = ctrl;
}
protected override void SetUIInfo(UIInfo uiInfo)
{
uiInfo.packageName = "ZM_Pass_14";
uiInfo.assetName = "com_pass_view";
uiInfo.layerType = UILayerType.Popup;
uiInfo.isNeedOpenAnim = false;
uiInfo.isNeedCloseAnim = false;
uiInfo.isNeedUIMask = true;
}
#region
protected override void OnInit()
{
model = ModuleManager.Instance.GetModel(ModelConst.PassViewModel) as PassViewModel;
}
protected override void OnClose()
{
GameHelper.showGameUI = true;
HallManager.Instance.UpdateSecondEvent -= upData;
}
protected override void OnBind()
{
ui = baseUI as FGUI.ZM_Pass_14.com_pass_view;
}
protected override void OnOpenBefore(object args)
{
if (Screen.safeArea.y != 0)
{
ui.gold.y += Screen.safeArea.y;
ui.close.y += Screen.safeArea.y;
}
if (GameHelper.GetGameday() != DateTime.Now.Day)
{
DataMgr.GameTime.Value = 0;
SaveData.GetSaveObject().time_task_record = new List<int>();
GameHelper.SetGameday();
}
HallManager.Instance.UpdateSecondEvent += upData;
InitView();
}
protected override void OnOpen(object args)
{
}
protected override void OnHide()
{
}
protected override void OnDisplay(object args)
{
}
#endregion
#region
protected override void AddListener()
{
GameDispatcher.Instance.AddListener(GameMsg.apple_pay_success, pay_success);
GameDispatcher.Instance.AddListener(GameMsg.Update101, OnUpdate101);
}
protected override void RemoveListener()
{
GameDispatcher.Instance.RemoveListener(GameMsg.apple_pay_success, pay_success);
GameDispatcher.Instance.AddListener(GameMsg.Update101, OnUpdate101);
}
#endregion
public void OnUpdate101(object a = null)
{
com_gold btn_gold = ui.gold as com_gold;
btn_gold.text_gold.text = $"{DataMgr.Coin.Value:N0}";
}
private void pay_success(object a)
{
string type = (string)a;
if (type == PurchasingManager.GetPaySku(PayType.battle_pass))
{
DOVirtual.DelayedCall(0.5f, () =>
{
SaveData.GetSaveObject().is_get_battlepass = true;
int gold = 0;
int _out = 0;
int _back = 0;
int _refresh = 0;
List<int> paylist = SaveData.GetSaveObject().battle_pass_paylist;
for (int i = 0; i < Passportrewards_list.Count; i++)
{
if (GameHelper.GetBattleLv() > i)
{
if (Passportrewards_list[i].Paid_rewards_type == 0) gold += Passportrewards_list[i].Paid_rewards_num;
else if (Passportrewards_list[i].Paid_rewards_type == 1) _out += Passportrewards_list[i].Paid_rewards_num;
else if (Passportrewards_list[i].Paid_rewards_type == 2) _back += Passportrewards_list[i].Paid_rewards_num;
else if (Passportrewards_list[i].Paid_rewards_type == 3) _refresh += Passportrewards_list[i].Paid_rewards_num;
SaveData.GetSaveObject().battle_pass_paylist.Add(i + 1);
}
else break;
}
GameDispatcher.Instance.Dispatch(GameMsg.Gold_refresh);
// GameHelper.AddItemNumber(0, _out);
// GameHelper.AddItemNumber(1, _back);
// GameHelper.AddItemNumber(2, _refresh);
// GameDispatcher.Instance.Dispatch(GameMsg.Sheep_item_refresh);
SaveData.SaveDataFunc();
GameHelper.ShowTips("purchase_succ", true);
if (gold > 0)
{
GetReward(gold, -1);
}
ui.pass_list.numItems = Passportrewards_list.Count;
ui.btn_recive.visible = false;
});
}
}
//初始化页面逻辑
private void InitView()
{
ui.close.SetClick(() => { UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.PassViewUI_Close); });
ui.btn_recive.ad_icon.visible = false;
ui.gold.GetChild("text_gold").text = $"{DataMgr.Coin.Value:N0}";
passing_list = ConfigSystem.GetConfig<PassingTask>();
Durationtasks_list = ConfigSystem.GetConfig<Durationtasks>();
Passportrewards_list = ConfigSystem.GetConfig<Passportrewards>();
setPassCom();
gotoItem();
ui.btn_tips.SetClick(() =>
{
ui.t0.Play();
tips_time = 0;
});
}
private int tips_time = 20;
void upData()
{
ui.remain_time.text = CommonHelper.TimeFormat(
SaveData.GetSaveObject().battle_pass_time + Passportrewards_list[0].Passportrewards_CD * 24 * 3600 - Convert.ToInt32(GameHelper.GetNowTime()),
CountDownType.Day);
if ((SaveData.GetSaveObject().battle_pass_time + Passportrewards_list[0].Passportrewards_CD * 24 * 3600) < GameHelper.GetNowTime())
{
SaveData.GetSaveObject().battle_pass_time = (int)GameHelper.GetNowTime();
SaveData.GetSaveObject().battle_pass_freelist.Clear();
SaveData.GetSaveObject().battle_pass_paylist.Clear();
SaveData.GetSaveObject().is_get_battlepass = false;
GameHelper.ResetGameExp();
SaveData.SaveDataFunc();
setPassCom();
}
tips_time++;
if (tips_time > 20)
{
ui.t0.Play();
tips_time = 0;
}
}
void setPassCom()
{
if ((SaveData.GetSaveObject().battle_pass_time + Passportrewards_list[0].Passportrewards_CD * 24 * 3600) < GameHelper.GetNowTime())
{
SaveData.GetSaveObject().battle_pass_time = (int)GameHelper.GetNowTime();
GameHelper.ResetGameExp();
SaveData.GetSaveObject().battle_pass_freelist.Clear();
SaveData.GetSaveObject().battle_pass_paylist.Clear();
SaveData.GetSaveObject().is_get_battlepass = false;
SaveData.SaveDataFunc();
}
upData();
ui.pass_list.itemRenderer = battle_itemRender;
ui.pass_list.numItems = Passportrewards_list.Count;
ui.text_level.text = GameHelper.GetBattleLv().ToString();
ui.progress_pass.value = GameHelper.GetGameExp();
if (GameHelper.GetBattleLv() >= Passportrewards_list.Count)
{
ui.progress_pass.max = Passportrewards_list[GameHelper.GetBattleLv() - 1].Eliminating_quantity;
ui.progress_pass.text_num.text = GameHelper.GetGameExp().ToString();
}
else
{
ui.progress_pass.max = Passportrewards_list[GameHelper.GetBattleLv()].Eliminating_quantity;
ui.progress_pass.text_num.text = GameHelper.GetGameExp() + "/" + Passportrewards_list[GameHelper.GetBattleLv()].Eliminating_quantity;
}
ui.btn_recive.visible = !SaveData.GetSaveObject().is_get_battlepass;
ui.btn_recive.SetClick(() =>
{
// if (!GameHelper.IsGiftSwitch())UnlockPass();
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.PassunlockUI_Open);
});
}
void setItemUrl(GLoader loader, int urltype)
{
if (urltype == 0) loader.url = "ui://ZM_Pass_14/master_pass_box_01_gold";
else if (urltype == 4) loader.url = "ui://ZM_Pass_14/master_pass_box_02_gold";
else if (urltype == 1) loader.url = "ui://ZM_Common_01/main_prize_iocn_dj_03";
else if (urltype == 2) loader.url = "ui://ZM_Common_01/main_prize_iocn_dj_02";
else if (urltype == 3) loader.url = "ui://ZM_Common_01/main_prize_iocn_dj_01";
}
void seItemClick(com_item_award item, int number, int type, int index = 0)
{
if (type == 0)
{
GetReward(number, index);
getRewardIndex = -1;
}
else
{
GameHelper.AddItemNumber(type - 1, number);
GameDispatcher.Instance.Dispatch(GameMsg.Sheep_item_refresh);
}
ui.pass_list.numItems = Passportrewards_list.Count;
GameDispatcher.Instance.Dispatch(GameMsg.RefreshRedDot);
}
private void UnlockPass()
{
GameHelper.ShowVideoAd("pass_unlock", isSuccess =>
{
if (isSuccess)
{
SaveData.GetSaveObject().is_get_battlepass = true;
int gold = 0;
int out_ = 0;
int back_ = 0;
int refresh_ = 0;
for (int i = 0; i < Passportrewards_list.Count; i++)
{
if (GameHelper.GetBattleLv() > i)
{
if (Passportrewards_list[i].Paid_rewards_type == 0) gold += Passportrewards_list[i].Paid_rewards_num;
else if (Passportrewards_list[i].Paid_rewards_type == 1) out_ += Passportrewards_list[i].Paid_rewards_num;
else if (Passportrewards_list[i].Paid_rewards_type == 2) back_ += Passportrewards_list[i].Paid_rewards_num;
else if (Passportrewards_list[i].Paid_rewards_type == 3) refresh_ += Passportrewards_list[i].Paid_rewards_num;
SaveData.GetSaveObject().battle_pass_paylist.Add(i + 1);
}
else break;
}
if (gold > 0)
{
GetReward(gold);
// var start = GameHelper.GetUICenterPosition(ui.btn_recive);
// var end = GameHelper.GetUICenterPosition(ui.gold.GetChild("ani_node"));
// var rewardData = new RewardData();
// var rewardSingleData = new RewardSingleData(101, gold, RewardOrigin.AdTask);
// rewardData.AddReward(rewardSingleData);
// rewardData.displayType = RewardDisplayType.RewardFly | RewardDisplayType.ValueChange;
// rewardData.AddCompleted((isScu) =>
// {
// DOVirtual.DelayedCall(0.5f, () =>
// {
// var startNum = PreferencesMgr.Instance.Currency101 - gold;
// DOVirtual.Float((float)startNum, (float)GameHelper.GetGoldNumber(), 1f,
// value => { ui.gold.GetChild("text_gold").text = ((int)value).ToString(); });
// });
// });
// GameDispatcher.Instance.Dispatch(GameMsg.GetReward, rewardData);
}
GameHelper.AddItemNumber(0, out_);
GameHelper.AddItemNumber(1, back_);
GameHelper.AddItemNumber(2, refresh_);
GameDispatcher.Instance.Dispatch(GameMsg.Sheep_item_refresh);
ui.pass_list.numItems = Passportrewards_list.Count;
ui.btn_recive.visible = false;
SaveData.SaveDataFunc();
}
});
}
private void GetReward(int awardNum, int index = 0)
{
var rewardData = new RewardData();
var end = GameHelper.GetUICenterPosition((ui.gold as com_gold).img);
var rewardSingleData = new RewardSingleData(101, awardNum, RewardOrigin.Passview, index)
{
startPosition = start_pos,
endPosition = new Vector2(end.x, end.y)
};
rewardData.AddReward(rewardSingleData);
if (index >= 0)
{
rewardData.displayType = RewardDisplayType.RewardFly | RewardDisplayType.Dialog |
RewardDisplayType.ValueChange;
}
else
rewardData.displayType = RewardDisplayType.RewardFly | RewardDisplayType.ValueChange;
rewardData.AddCompleted(success =>
{
if (success)
{
var startNum = DataMgr.Coin.Value - awardNum;
DOVirtual.Float((float)startNum, (float)GameHelper.GetGoldNumber(), 1f,
value => { ui.gold.GetChild("text_gold").text = GameHelper.Get101Str((decimal)value); }).OnComplete(() =>
{
// 动画完成时确保最终值被正确设置
ui.gold.GetChild("text_gold").text = GameHelper.Get101Str((decimal)GameHelper.GetGoldNumber());
});
}
});
GameDispatcher.Instance.Dispatch(GameMsg.GetReward, rewardData);
}
private int getRewardIndex = -1;
void gotoItem()
{
if (getRewardIndex > 0)
{
ui.pass_list.ScrollToView(getRewardIndex - 1);
}
}
void battle_itemRender(int index, GObject obj)
{
index++;
com_pass_item item = (com_pass_item)obj;
int pass_level = GameHelper.GetBattleLv();
item.index_text.text = index.ToString();
item.free_item.type.selectedIndex = 0;
item.pay_item.type.selectedIndex = 1;
List<int> freelist = SaveData.GetSaveObject().battle_pass_freelist;
List<int> paylist = SaveData.GetSaveObject().battle_pass_paylist;
if (index > 0)
{
item.free_item.number_text.text = "x" + GameHelper.Get101Str(Passportrewards_list[index - 1].Free_rewards_num);
item.pay_item.number_text.text = "x" + GameHelper.Get101Str(Passportrewards_list[index - 1].Paid_rewards_num);
if (Passportrewards_list[index - 1].Free_rewards_type == 0)
{
setItemUrl(item.free_item.item_loader, 0);
}
else
{
setItemUrl(item.free_item.item_loader, Passportrewards_list[index - 1].Paid_rewards_type);
}
if (Passportrewards_list[index - 1].Paid_rewards_type == 0)
{
setItemUrl(item.pay_item.item_loader, 4);
}
else
{
setItemUrl(item.pay_item.item_loader, Passportrewards_list[index - 1].Paid_rewards_type);
// if (Passportrewards_list[index - 1].Paid_rewards_type >= 1 && Passportrewards_list[index - 1].Paid_rewards_type <= 3)
// {
// item.pay_item.item_loader.SetScale(0.55f, 0.55f);
// }
}
if (index <= pass_level)//等级超过了
{
if (freelist.Contains(index))//领取过
{
item.free_item.state.selectedIndex = 2;
item.free_item.ani_node.visible = false;
item.free_item.SetClick(() => { });
}
else
{
if (getRewardIndex < 0) getRewardIndex = index;
item.free_item.state.selectedIndex = 1;
item.free_item.SetClick(() =>
{
freelist.Add(index);
SaveData.SaveDataFunc();
seItemClick(item.free_item, Passportrewards_list[index - 1].Free_rewards_num, Passportrewards_list[index - 1].Free_rewards_type, index - 1);
});
}
if (paylist.Contains(index))//领取过
{
item.pay_item.state.selectedIndex = 2;
item.pay_item.SetClick(() => { });
}
else
{
if (SaveData.GetSaveObject().is_get_battlepass)
{
if (getRewardIndex < 0) getRewardIndex = index;
item.pay_item.state.selectedIndex = 1;
item.pay_item.SetClick(() =>
{
paylist.Add(index);
SaveData.SaveDataFunc();
seItemClick(item.pay_item, Passportrewards_list[index - 1].Paid_rewards_num, Passportrewards_list[index - 1].Paid_rewards_type, -1);
});
}
else
{
item.pay_item.state.selectedIndex = 4;
item.pay_item.SetClick(() =>
{
// if (!GameHelper.IsGiftSwitch()) UnlockPass();
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.PassunlockUI_Open);
});
}
}
}
else
{
item.free_item.state.selectedIndex = 0;//不可领取
item.free_item.SetClick(() =>
{
GameHelper.ShowTips("no_enough_lv_ps", true);
});
item.pay_item.SetClick(() =>
{
if (SaveData.GetSaveObject().is_get_battlepass)
{
GameHelper.ShowTips("no_enough_lv_ps", true);
}
else
{
// if (!GameHelper.IsGiftSwitch()) UnlockPass();
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.PassunlockUI_Open);
}
});
if (SaveData.GetSaveObject().is_get_battlepass)
{
item.pay_item.state.selectedIndex = 0;
}
else
{
item.pay_item.state.selectedIndex = 3;
}
}
}
if (index < pass_level)//进度条
{
item.is_full.selectedIndex = com_pass_item.Is_full_full;
}
else if (index >= pass_level)
{
item.is_full.selectedIndex = com_pass_item.Is_full_full;
}
else
{
item.is_full.selectedIndex = com_pass_item.Is_full_full;
}
if (index == 0)
{
// item.state.selectedIndex = 3;
// index++;
}
if (index == 1)
{
item.state.selectedIndex = 0;
if (pass_level > 0)
{
item.progress_0_top.height = 154;
if (((float)(GameHelper.GetGameExp() - Passportrewards_list[0].Eliminating_quantity) / (Passportrewards_list[1].Eliminating_quantity - Passportrewards_list[0].Eliminating_quantity)) > 0.5)
{
item.progress_0_down.height = 175;
}
else
{
item.progress_0_down.height = (float)(GameHelper.GetGameExp() - Passportrewards_list[0].Eliminating_quantity) / (Passportrewards_list[1].Eliminating_quantity - Passportrewards_list[0].Eliminating_quantity) * 2 * 175;
}
}
else
{
item.progress_0_top.height = (float)GameHelper.GetGameExp() / Passportrewards_list[0].Eliminating_quantity * 154;
item.progress_0_down.height = 0;
}
}
else if (index == Passportrewards_list.Count)
{
item.state.selectedIndex = 2;
if (((float)(GameHelper.GetGameExp() - Passportrewards_list[index - 2].Eliminating_quantity) / (Passportrewards_list[index - 1].Eliminating_quantity - Passportrewards_list[index - 2].Eliminating_quantity)) > 0.5)
{
float height = (((float)(GameHelper.GetGameExp() - Passportrewards_list[index - 2].Eliminating_quantity) / (Passportrewards_list[index - 1].Eliminating_quantity - Passportrewards_list[index - 2].Eliminating_quantity)) - 0.5f) * 2 * 188;
if (height > 188) height = 188;
item.progress_2_top.height = height;
}
else item.progress_2_top.height = 0;
}
else
{
item.state.selectedIndex = 1;
if (pass_level >= index)
{
item.progress_1_top.height = 192;
}
else
{
if (pass_level == (index - 1))
{
if (((float)(GameHelper.GetGameExp() - Passportrewards_list[index - 2].Eliminating_quantity) / (Passportrewards_list[index - 1].Eliminating_quantity - Passportrewards_list[index - 2].Eliminating_quantity)) > 0.5)
{
float height = (((float)(GameHelper.GetGameExp() - Passportrewards_list[index - 2].Eliminating_quantity) / (Passportrewards_list[index - 1].Eliminating_quantity - Passportrewards_list[index - 2].Eliminating_quantity)) - 0.5f) * 2 * 192;
if (height > 192) height = 192;
item.progress_1_top.height = height;
}
else item.progress_1_top.height = 0;
}
else
{
item.progress_1_top.height = 0;
}
}
if (pass_level == index)
{
if (((float)(GameHelper.GetGameExp() - Passportrewards_list[index - 1].Eliminating_quantity) / (Passportrewards_list[index].Eliminating_quantity - Passportrewards_list[index - 1].Eliminating_quantity)) <= 0.5)
{
float height = (float)(GameHelper.GetGameExp() - Passportrewards_list[index - 1].Eliminating_quantity) / (Passportrewards_list[index].Eliminating_quantity - Passportrewards_list[index - 1].Eliminating_quantity) * 2 * 188;
if (height > 188) height = 188;
item.progress_1_down.height = height;
}
else
{
item.progress_1_down.height = 188;
}
}
else
{
if (pass_level > index) item.progress_1_down.height = 188;
else item.progress_1_down.height = 0;
}
}
}
}
}