Files
MiniGame_Unity_GP/Assets/Scripts/ModuleUI/Hall/HallUI.cs
T
2026-07-06 16:27:14 +08:00

449 lines
15 KiB
C#

using System;
using DG.Tweening;
using UnityEngine;
using Spine.Unity;
using FairyGUI;
using FGUI.ZM_Common_01;
using System.Linq;
using System.Collections.Generic;
using Random = UnityEngine.Random;
using IgnoreOPS;
using Unity.VisualScripting;
using Newtonsoft.Json;
using System.IO;
using FGUI.LG_Common;
using SGModule.Common.Extensions;
using SGModule.Common.Helper;
using SGModule.Net;
using FGUI.ZM_Lobby_03;
namespace TowerClimberChronicles
{
public class HallUI : BaseUI
{
private HallUICtrl ctrl;
private HallModel model;
public FGUI.ZM_Lobby_03.com_hall ui;
public static bool isClosed = false;
private long userUid;
public int active_cd = 10;
private Tweener tweener;
private SkeletonAnimation anim_ad;
private SkeletonAnimation anim_banma = null;
public HallUI(HallUICtrl ctrl) : base(ctrl)
{
uiName = UIConst.HallUI;
this.ctrl = ctrl;
}
private string jsonstr;
List<int[]> levelShowList = new List<int[]>()
{
new int [1]{1},
new int [2]{2,3},
new int [1]{4},
};
private List<GLoader> loader_list = new List<GLoader>();
protected override void SetUIInfo(UIInfo uiInfo)
{
uiInfo.packageName = "ZM_Lobby_03";
uiInfo.assetName = "com_hall";
uiInfo.layerType = UILayerType.Normal;
uiInfo.isNeedOpenAnim = false;
uiInfo.isNeedCloseAnim = false;
uiInfo.isNeedUIMask = false;
}
#region 生命周期
protected override void OnInit()
{
model = moduleManager.GetModel(ModelConst.HallModel) as HallModel;
InitData();
}
protected override void OnClose()
{
HallManager.Instance.UpdateSecondEvent -= UpBtnCoin;
isClosed = true;
//关闭时保存cd数据
PlayerPrefs.SetInt($"active_cd_num_{userUid}", active_cd);
// HallManager.Instance.countTimes = (int)Time.time;
CommonHelper.FadeOut(ui);
tweener?.Kill();
closeCallback?.Invoke();
foreach (var t in loader_list)
{
if (t != null && !t.isDisposed && t.texture != null)
{
t.texture.Dispose();
t.texture = null;
}
}
loader_list.Clear();
}
protected override void OnBind()
{
ui = baseUI as FGUI.ZM_Lobby_03.com_hall;
}
protected override void OnOpenBefore(object args)
{
//测试代码
// ui.top_bg.visible = false;
// ui.bg.visible = false;
Debug.Log("Cache path: " + Application.temporaryCachePath);
if (Screen.safeArea.y != 0)
{
ui.btn_gold.y += 68;
}
// ui.com_panel.scrollPane.ScrollRight(12,false);
// if(GameHelper.IsGiftSwitch())
// {
// ui.com_panel.scrollPane.touchEffect = false;
// }
CreateGoldtimeList();
var isNew = DataMgr.NoviceGuide.Value;
if (!GameHelper.IsGiftSwitch() && !isNew)
{
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.GuideViewUI_Open);
}
GameHelper.IsShowFirstReward();
isClosed = false;
var loginModel = GameHelper.GetLoginModel();
userUid = loginModel.Uid;
InitView();
UpBtnCoin();
HallManager.Instance.UpdateSecondEvent += UpBtnCoin;
ui.level_list.SetVirtual();
ui.level_list.itemRenderer = RendererList;
ui.level_list.numItems = levelShowList.Count;
// int random_ = Random.Range(0, 100);
// if (GameHelper.IsGiftSwitch() && random_ < GameHelper.GetCommonModel().HomeGuideRate)
// {
// List<int> unlocklist = new List<int>();
// if ((GameHelper.GetCommonModel().Live == 1) && (GameHelper.GetLevel() >= GameHelper.GetCommonModel().LivePreview) && (GameHelper.GetLevel() < GameHelper.GetCommonModel().UnlockLive[1]))
// {
// if (DataMgr.IsUnlockLive.Value < 0 && !GameHelper.GetVipPrivilege(Subscription.UnlockLive.As<int>()))//未解锁。
// {
// unlocklist.Add(0);
// }
// }
// if ((GameHelper.GetCommonModel().Secret == 1) && (GameHelper.GetLevel() >= GameHelper.GetCommonModel().SecretPreview) && (GameHelper.GetLevel() < GameHelper.GetCommonModel().UnlockSecret[1]))
// {
// if (DataMgr.IsUnlockSecret.Value < 0 && !GameHelper.GetVipPrivilege(Subscription.UnlockSecret.As<int>()))//未解锁。
// {
// unlocklist.Add(1);
// }
// }
// if (unlocklist.Count > 0)
// {
// int random_index = Random.Range(0, unlocklist.Count);
// if (unlocklist[random_index] == 0)
// {
// uiCtrlDispatcher.Dispatch(UICtrlMsg.LiveUnlockUI_Open);
// }
// else if (unlocklist[random_index] == 1)
// {
// uiCtrlDispatcher.Dispatch(UICtrlMsg.ScAlbumLockUI_Open);
// }
// }
// }
}
void RendererList(int index, GObject item_)
{
item_level item = (item_level)item_;
if (levelShowList[index].Length == 1)
{
item.type.selectedIndex = 0;
item.btn_big.text_level.text = "LEVEL " + levelShowList[index][0];
item.btn_big.loader_0.url = $"ui://ZM_Lobby_03/{levelShowList[index][0]}";
item.btn_big.SetClick(() =>
{
uiCtrlDispatcher.Dispatch(UICtrlMsg.GamePlayUI_Open);
GameHelper.now_level = levelShowList[index][0];
CtrlCloseUI();
GameHelper.LoadSceneAsync("scene_" + levelShowList[index][0]);
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.OpenGameUI_Open);
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.TabUI_Close);
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.MainUI_Close);
});
}
else
{
item.type.selectedIndex = 1;
item.btn_small0.text_level_0.text = "LEVEL " + levelShowList[index][0];
item.btn_small0.loader_0.url = $"ui://ZM_Lobby_03/{levelShowList[index][0]}";
item.btn_small0.SetClick(() =>
{
uiCtrlDispatcher.Dispatch(UICtrlMsg.GamePlayUI_Open);
GameHelper.now_level = levelShowList[index][0];
CtrlCloseUI();
GameHelper.LoadSceneAsync("scene_" + levelShowList[index][0]);
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.OpenGameUI_Open);
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.TabUI_Close);
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.MainUI_Close);
});
item.btn_small1.text_level_1.text = "LEVEL " + levelShowList[index][1];
item.btn_small1.loader_1.url = $"ui://ZM_Lobby_03/{levelShowList[index][1]}";
item.btn_small1.SetClick(() =>
{
uiCtrlDispatcher.Dispatch(UICtrlMsg.GamePlayUI_Open);
GameHelper.now_level = levelShowList[index][1];
CtrlCloseUI();
GameHelper.LoadSceneAsync("scene_" + levelShowList[index][1]);
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.OpenGameUI_Open);
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.TabUI_Close);
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.MainUI_Close);
});
}
}
private void getJsonData()
{
var json = DataMgr.LevelData.Value;
if (!string.IsNullOrEmpty(json))
{
jsonstr = json;
}
}
protected override void OnOpen(object args)
{
// CommonHelper.FadeIn(ui);
}
protected override void OnHide()
{
}
protected override void OnDisplay(object args)
{
}
public override void OnSwitchLanguage()
{
base.OnSwitchLanguage();
ui.btn_play.text_lv.text = Language.GetContent("Level") + " " + GameHelper.GetLevel();
// InitView();
}
#endregion
#region 消息
protected override void AddListener()
{
HallManager.Instance.AddChangeGiftSwitch(InitView);
GameDispatcher.Instance.AddListener(GameMsg.updateAvatar, UpdataAvatar);
PreferencesDispatcher<string>.Instance.AddListener(DataMsg.playerName, OnChangeName);
GameDispatcher.Instance.AddListener(GameMsg.Gold_refresh, Chang101);
GameDispatcher.Instance.AddListener(GameMsg.Update101, Chang101);
GameDispatcher.Instance.AddListener(GameMsg.BuyVip, UpdataAvatar);//VIP订阅后更新头像的vip图标
}
protected override void RemoveListener()
{
HallManager.Instance.RemoveChangeGiftSwitch(InitView);
GameDispatcher.Instance.RemoveListener(GameMsg.updateAvatar, UpdataAvatar);
PreferencesDispatcher<string>.Instance.RemoveListener(DataMsg.playerName, OnChangeName);
GameDispatcher.Instance.RemoveListener(GameMsg.Gold_refresh, Chang101);
GameDispatcher.Instance.RemoveListener(GameMsg.Update101, Chang101);
GameDispatcher.Instance.RemoveListener(GameMsg.BuyVip, UpdataAvatar);//VIP订阅后更新头像的vip图标
}
#endregion
private List<Paidcoins> Paidcoins_list = ConfigSystem.GetConfig<Paidcoins>();
private int time_count = 11;
void CreateGoldtimeList()
{
// 获取保存对象
var saveObject = SaveData.GetSaveObject();
// 检查_goldtime是否为null或者长度与Paidcoins_list.Count不相等
if (saveObject._goldtime == null || saveObject._goldtime.Length != Paidcoins_list.Count)
{
// 重置_goldtime,并创建一个新的数组,长度为Paidcoins_list.Count
saveObject._goldtime = new int[Paidcoins_list.Count];
}
}
private void UpBtnCoin()
{
com_gold btn_gold = ui.btn_gold as com_gold;
btn_gold.state.selectedIndex = 1;
for (int i = 0; i < Paidcoins_list.Count; i++)
{
if (!Paidcoins_list[i].is_paid)
{
int time = SaveData.GetSaveObject()._goldtime[i];
if (time + Paidcoins_list[i].receive_CD < GameHelper.GetNowTime())
{
btn_gold.state.selectedIndex = 2;
}
}
}
}
private void InitData()
{
model.showCoin = DataMgr.Coin.Value;
model.showDollar = DataMgr.Ticket.Value;
}
private Action closeCallback;
private void InitView()
{
Set101();
SetName(ui.text_name);
ui.btn_play.text_lv.text = Language.GetContent("Level") + " " + GameHelper.GetLevel();
ui.btn_play.SetClick(OnClickPlay);
ui.btn_setting.SetClick(OnClickSetting);
var btnCoin = ui.btn_gold as com_gold;
btnCoin.text_gold.text = $"{DataMgr.Coin.Value:N0}";
btnCoin.SetClick(OnClickShop);
ui.btn_head.SetClick(() => { UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.PersonViewUI_Open); });
UpdataAvatar();
ui.state.selectedIndex = GameHelper.IsGiftSwitch() ? 1 : 0;
ui.btn_puzzle.SetClick(OnClickPuzzle);
ui.btn_flower.SetClick(OnClickflower);
}
private void OnClickShop()
{
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.BuygoldUI_Open, true);
}
private void OnClickSetting()
{
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.MenuUI_Open, 1);
}
private void OnClickPlay()
{
if (GameHelper.GetLevel() < GameHelper.GetCommonModel().MultiModal)
{
GameHelper.gameType = 0;
GameDispatcher.Instance.Dispatch(GameMsg.OpenGame);
}
else
{
GameHelper.gameType = 0;
GameDispatcher.Instance.Dispatch(GameMsg.OpenGame);
}
}
private void OnClickPuzzle()
{
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.OpenGameUI_Open);
DOVirtual.DelayedCall(0.1f, () =>
{
GameDispatcher.Instance.Dispatch(GameMsg.OpenPuzzleGame);
});
}
private void OnClickflower()
{
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.OpenGameUI_Open);
DOVirtual.DelayedCall(0.1f, () =>
{
GameDispatcher.Instance.Dispatch(GameMsg.OpenFlowerGame);
});
}
public void OnUpdate101(object obj = null)
{
if (obj != null)
{
var changeValue = (decimal)obj;
model.showCoin += changeValue;
Set101(model.showCoin);
}
}
public void OnUpdate102(object obj = null)
{
if (obj != null)
{
var changeValue = (decimal)obj;
model.showDollar += changeValue;
}
}
private void UpdataAvatar(object obj = null)
{
var headId = DataMgr.PlayerAvatarId.Value;
}
public void Set101(decimal coin = -1)
{
if (coin < 0)
{
coin = DataMgr.Coin.Value;
}
var btnCoin = ui.btn_gold as com_gold;
btnCoin.text_gold.text = $"{coin:N0}";
}
public void Chang101(object a = null)
{
int coin = DataMgr.Coin.Value;
var btnCoin = ui.btn_gold as com_gold;
btnCoin.text_gold.text = $"{coin:N0}";
}
private void OnChangeName(ChangeValue<string> obj)
{
var name = obj.newValue;
GameHelper.SetName(ui.text_name, name);
}
private void SetName(GTextField gTextField)
{
var name = DataMgr.PlayerName.Value;
GameHelper.SetName(gTextField, name);
}
}
}