Files
MiniGame_Unity_GP/Assets/Scripts/ModuleUI/Puzzle/PuzzleUI.cs
T

334 lines
12 KiB
C#
Raw Normal View History

2026-07-06 16:27:14 +08:00
using FGUI.ZM_Common_01;
using UnityEngine;
using FairyGUI;
using Newtonsoft.Json;
using System.Collections.Generic;
using SGModule.Common.Extensions;
using DG.Tweening;
namespace TowerClimberChronicles
{
public class PuzzleUI : BaseUI
{
private PuzzleUICtrl ctrl;
private PuzzleModel model;
private FGUI.Game_puzzle.com_puzzle ui;
public PuzzleUI(PuzzleUICtrl ctrl) : base(ctrl)
{
uiName = UIConst.PuzzleUI;
this.ctrl = ctrl;
}
protected override void SetUIInfo(UIInfo uiInfo)
{
uiInfo.packageName = "Game_puzzle";
uiInfo.assetName = "com_puzzle";
uiInfo.layerType = UILayerType.Normal;
uiInfo.isNeedOpenAnim = false;
uiInfo.isNeedCloseAnim = false;
uiInfo.isNeedUIMask = false;
}
#region 生命周期
protected override void OnInit()
{
//model = ModuleManager.Instance.GetModel(ModelConst.PuzzleModel) as PuzzleModel;
}
protected override void OnClose()
{
HallManager.Instance.UpdateSecondEvent -= UpdateSec;
}
protected override void OnBind()
{
ui = baseUI as FGUI.Game_puzzle.com_puzzle;
}
protected override void OnOpenBefore(object args)
{
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.PuzzleSuccess, PuzzleSuccessFunc);
GameDispatcher.Instance.AddListener(GameMsg.PuzzleTimeStart, TimeStart);
GameDispatcher.Instance.AddListener(GameMsg.PuzzleBuyItem, SetItemBtn);
GameDispatcher.Instance.AddListener(GameMsg.PuzzleAddTime, AddTime);
GameDispatcher.Instance.AddListener(GameMsg.PuzzleReset, PuzzleResetFunc);
GameDispatcher.Instance.AddListener(GameMsg.Update101, Set101);
}
protected override void RemoveListener()
{
GameDispatcher.Instance.RemoveListener(GameMsg.PuzzleSuccess, PuzzleSuccessFunc);
GameDispatcher.Instance.RemoveListener(GameMsg.PuzzleTimeStart, TimeStart);
GameDispatcher.Instance.RemoveListener(GameMsg.PuzzleBuyItem, SetItemBtn);
GameDispatcher.Instance.RemoveListener(GameMsg.PuzzleAddTime, AddTime);
GameDispatcher.Instance.RemoveListener(GameMsg.PuzzleReset, PuzzleResetFunc);
GameDispatcher.Instance.RemoveListener(GameMsg.Update101, Set101);
}
#endregion
List<JigsawPuzzle> puzzleList = ConfigSystem.GetConfig<JigsawPuzzle>();
private void PuzzleResetFunc(object a = null)
{
Debug.Log("ui里的reset");
JigsawPuzzle PuzzleData;
if (puzzle_level < puzzleList.Count)
{
PuzzleData = puzzleList[puzzle_level];
}
else PuzzleData = puzzleList[puzzleList.Count - 1];
// CreatPuzzle.instance.CreatPuzzleItem(PuzzleData.Type, PuzzleData.ResourceImage, PuzzleData.Pieces, puzzle_level);
CreatPuzzle.instance.CreatPuzzleItem(PuzzleData.Type, "2", PuzzleData.Pieces, puzzle_level);
Debug.Log("chongzhiguanka");
DataMgr.PuzzleTimeCoinsUse.Value = false;
is_time_begin = false;
remain_time = PuzzleData.PlayTime;
ui.text_time.text = CommonHelper.TimeFormat(remain_time, CountDownType.Minute);
ui.t0.Play();
HallManager.Instance.UpdateSecondEvent -= UpdateSec;
ui.text_level.SetVar("level", (DataMgr.PuzzleLevel.Value + 1).ToString()).FlushVars();
}
private void PuzzleSuccessFunc(object a = null)
{
float[] cash_array = GameHelper.GetRewardValue(0);
var temp = new SuccessData();
temp.IsWin = true;
temp.ch_number = cash_array[0];
temp.rate = (int)cash_array[1];
temp.IsLevelSuccess = false;
temp.IsH5Reward = false;
temp.boost_array = GameHelper.GetRewardBoost(0);
temp.level = puzzle_level + 1;
DataMgr.PuzzleTimeCoinsUse.Value = false;
puzzle_level += 1;
DataMgr.PuzzleLevel.Value = DataMgr.PuzzleLevel.Value + 1;
HallManager.Instance.UpdateSecondEvent -= UpdateSec;
DOVirtual.DelayedCall(0.55f, () =>
{
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.PuzzleEndUI_Open, temp);
});
// puzzle_level += 1;
// DataMgr.PuzzleLevel.Value = DataMgr.PuzzleLevel.Value + 1;
// JigsawPuzzle PuzzleData = puzzleList[puzzle_level];
// CreatPuzzle.instance.CreatPuzzleItem(PuzzleData.Type, PuzzleData.ResourceImage, PuzzleData.Pieces, puzzle_level);
// Debug.Log("chongzhiguanka");
// is_time_begin = false;
// remain_time = PuzzleData.PlayTime;
// ui.text_time.text = CommonHelper.TimeFormat(remain_time, CountDownType.Minute);
// HallManager.Instance.UpdateSecondEvent -= UpdateSec;
}
void AddTime(object a = null)
{
remain_time += 15;
HallManager.Instance.UpdateSecondEvent += UpdateSec;
}
private bool is_time_begin = false;
void TimeStart(object a = null)
{
if (!is_time_begin)
{
is_time_begin = true;
HallManager.Instance.UpdateSecondEvent += UpdateSec;
}
}
void UpdateSec()
{
remain_time -= 1;
if (remain_time <= 0)
{
remain_time = 0;
HallManager.Instance.UpdateSecondEvent -= UpdateSec;
uiCtrlDispatcher.Dispatch(UICtrlMsg.PuzzleBuyItemUI_Open, 3);
}
ui.text_time.text = CommonHelper.TimeFormat(remain_time, CountDownType.Minute);
}
private int remain_time;
private int puzzle_level = 0;
//初始化页面逻辑
private void InitView()
{
puzzle_level = DataMgr.PuzzleLevel.Value;
DataMgr.PuzzleTimeCoinsUse.Value = true;
// uiCtrlDispatcher.Dispatch(UICtrlMsg.PuzzleBuyItemUI_Open, 3); //zhushi
Debug.Log(JsonConvert.SerializeObject(ConfigSystem.GetConfig<JigsawPuzzle>()));
JigsawPuzzle PuzzleData;
if (puzzle_level < puzzleList.Count)
{
PuzzleData = puzzleList[puzzle_level];
}
else PuzzleData = puzzleList[puzzleList.Count - 1];
// CreatPuzzle.instance.CreatPuzzleItem(PuzzleData.Type, PuzzleData.ResourceImage, PuzzleData.Pieces, puzzle_level);
CreatPuzzle.instance.CreatPuzzleItem(PuzzleData.Type,"1", PuzzleData.Pieces, puzzle_level);
remain_time = PuzzleData.PlayTime;
ui.text_time.text = CommonHelper.TimeFormat(remain_time, CountDownType.Minute);
ui.t0.Play();
SetItemBtn();
UpdataAvatar();
Set101();
ui.btn_close.SetClick(() =>
{
CreatPuzzle.instance.PuzzlenResetFunc();
OnBackToHall();
});
if (Screen.safeArea.y != 0)
{
ui.btn_gold.y += Screen.safeArea.y;
}
ui.text_level.SetVar("level", (DataMgr.PuzzleLevel.Value + 1).ToString()).FlushVars();
}
private void OnBackToHall(object obj = null)
{
Debug.Log("??????????jjjjkkkkkkkk0");
if (!GameHelper.GetVipPrivilege(Subscription.RemoveInterstitialAd.As<int>()) && GameHelper.IsGiftSwitch())
{
int random_ = UnityEngine.Random.Range(1, 100);
Debug.Log($"[back hall] SaveData.GetSaveObject().is_get_removead=========={SaveData.GetSaveObject().is_get_removead} ");
if (!SaveData.GetSaveObject().is_get_removead && random_ < GameHelper.GetCommonModel().HomeInterstitialAd)
{
//GameHelper.ShowInterstitial("BackHall");
uiCtrlDispatcher.Dispatch(UICtrlMsg.AdcomingUI_Open);
}
}
// for (int i = 0; i < card_item_list.Count; i++)
// {
// for (int j = 0; j < card_item_list[i].Count; j++)
// {
// if (card_item_list[i][j] != null)
// {
// GameObject.Destroy(card_item_list[i][j].sheep_card);
// }
// }
// }
// SaveJson();
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.PuzzleUI_Close);
GameDispatcher.Instance.Dispatch(GameMsg.BackMainScene);
CtrlCloseUI();
}
void SetItemBtn(object a = null)
{
if (DataMgr.PuzzleItem0.Value > 0)
{
ui.btn_item0.state.selectedIndex = 1;
ui.btn_item0.text_number.text = DataMgr.PuzzleItem0.Value.ToString();
ui.btn_item0.SetClick(() =>
{
int childCount = puzzleParent.transform.childCount;
if (childCount <= 0)
{
GameHelper.ShowTips("Cannot Use Now");
return;
}
UseProp(3);
DataMgr.PuzzleItem0.Value = DataMgr.PuzzleItem0.Value - 1;
SetItemBtn();
});
}
else
{
ui.btn_item0.state.selectedIndex = 0;
ui.btn_item0.SetClick(() =>
{
uiCtrlDispatcher.Dispatch(UICtrlMsg.PuzzleBuyItemUI_Open, 0);
});
}
if (DataMgr.PuzzleItem1.Value > 0)
{
ui.btn_item1.state.selectedIndex = 1;
ui.btn_item1.text_number.text = DataMgr.PuzzleItem1.Value.ToString();
ui.btn_item1.SetClick(() =>
{
int childCount = puzzleParent.transform.childCount;
if (childCount <= 0)
{
GameHelper.ShowTips("Cannot Use Now");
return;
}
UseProp(1);
DataMgr.PuzzleItem1.Value = DataMgr.PuzzleItem1.Value - 1;
SetItemBtn();
});
}
else
{
ui.btn_item1.state.selectedIndex = 0;
ui.btn_item1.SetClick(() =>
{
uiCtrlDispatcher.Dispatch(UICtrlMsg.PuzzleBuyItemUI_Open, 1);
});
}
if (DataMgr.PuzzleItem2.Value > 0)
{
ui.btn_item2.state.selectedIndex = 1;
ui.btn_item2.text_number.text = DataMgr.PuzzleItem2.Value.ToString();
ui.btn_item2.SetClick(() =>
{
int childCount = puzzleParent.transform.childCount;
if (childCount <= 0)
{
GameHelper.ShowTips("Cannot Use Now");
return;
}
UseProp(3);
DataMgr.PuzzleItem2.Value = DataMgr.PuzzleItem2.Value - 1;
SetItemBtn();
});
}
else
{
ui.btn_item2.state.selectedIndex = 0;
ui.btn_item2.SetClick(() =>
{
uiCtrlDispatcher.Dispatch(UICtrlMsg.PuzzleBuyItemUI_Open, 2);
});
}
}
GameObject puzzleParent = GameObject.Find("puzzle_parent");
void UseProp(int numbers)
{
CreatPuzzle.instance.FlyLastN(numbers);
}
private void UpdataAvatar(object obj = null)
{
var headId = DataMgr.PlayerAvatarId.Value;
Debug.Log("qqqqqqqqqqqqqqqqqqqqqqq" + headId);
}
public void Set101(object a = null)
{
int coin = DataMgr.Coin.Value;
var btnCoin = ui.btn_gold as com_gold;
btnCoin.text_gold.text = $"{coin:N0}";
}
}
}