提交小游戏项目

This commit is contained in:
2026-07-06 16:27:14 +08:00
commit 2a717c6a2f
7575 changed files with 710847 additions and 0 deletions
+45
View File
@@ -0,0 +1,45 @@
namespace TowerClimberChronicles
{
public class HallCtrl : BaseCtrl
{
public static HallCtrl Instance { get; private set; }
private HallModel model;
#region
protected override void OnInit()
{
Instance = this;
}
protected override void OnDispose()
{
Instance = null;
}
#endregion
#region
protected override void AddListener()
{
}
protected override void RemoveListener()
{
}
protected override void AddServerListener()
{
}
protected override void RemoveServerListener()
{
}
#endregion
}
}
@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: bd5b8e4d648549379d2bc8fcaa0d9a40
timeCreated: 1671086538
+49
View File
@@ -0,0 +1,49 @@
namespace TowerClimberChronicles
{
public class HallModel : BaseModel
{
public decimal showCoin;
public decimal showDollar;
#region
protected override void OnInit()
{
}
protected override void OnDispose()
{
}
// protected override void OnReset()
// {
// }
// #endregion
// #region 读取数据
// protected override void OnReadData()
// {
// }
// #endregion
// #region 本地存储
// protected override void WriteLocalStorage()
// {
// }
#endregion
#region
protected override void AddListener()
{
}
protected override void RemoveListener()
{
}
#endregion
}
}
@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 8449d0d7ae894f44859f02aaf355ea00
timeCreated: 1671086538
+449
View File
@@ -0,0 +1,449 @@
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);
}
}
}
@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: c3aca551ceb44e4f80986c9da6881522
timeCreated: 1671086538
+164
View File
@@ -0,0 +1,164 @@
using SGModule.NetKit;
using UnityEngine;
namespace TowerClimberChronicles
{
public class HallUICtrl : BaseUICtrl
{
private HallUI ui;
private HallModel model;
private uint openUIMsg = UICtrlMsg.MainUI_Open;
private uint closeUIMsg = UICtrlMsg.MainUI_Close;
#if GAME_RELEASE
private const float _countTime = 5*60f;
#else
private const float _countTime = 60f;
#endif
#region
protected override void OnInit()
{
model = moduleManager.GetModel(ModelConst.HallModel) as HallModel;
}
protected override void OnDispose()
{
}
public override void OpenUI(object args = null)
{
if (ui == null)
{
ui = new HallUI(this);
ui.Open(args);
}
}
public override void CloseUI(object args = null)
{
if (ui != null && !ui.isClose)
{
ui.Close();
}
ui = null;
}
#endregion
#region
public override uint GetOpenUIMsg(string uiName)
{
return openUIMsg;
}
public override uint GetCloseUIMsg(string uiName)
{
return closeUIMsg;
}
protected override void AddListener()
{
uiCtrlDispatcher.AddListener(openUIMsg, OpenUI);
uiCtrlDispatcher.AddListener(closeUIMsg, CloseUI);
GameDispatcher.Instance.AddListener(GameMsg.Update101, OnUpdate101);
GameDispatcher.Instance.AddListener(GameMsg.Update101Completed, OnUpdate101Completed);
GameDispatcher.Instance.AddListener(GameMsg.Update102, OnUpdate102);
GameDispatcher.Instance.AddListener(GameMsg.Update102Completed, OnUpdate102Completed);
GameDispatcher.Instance.AddListener(GameMsg.RefreshConfig, UpdateRefresh);
HallManager.Instance.UpdateSecondEvent += RefreshConfig;
}
protected override void RemoveListener()
{
uiCtrlDispatcher.RemoveListener(openUIMsg, OpenUI);
uiCtrlDispatcher.RemoveListener(closeUIMsg, CloseUI);
GameDispatcher.Instance.RemoveListener(GameMsg.Update101, OnUpdate101);
GameDispatcher.Instance.RemoveListener(GameMsg.Update102, OnUpdate102);
GameDispatcher.Instance.RemoveListener(GameMsg.Update101Completed, OnUpdate101Completed);
GameDispatcher.Instance.RemoveListener(GameMsg.Update102Completed, OnUpdate102Completed);
GameDispatcher.Instance.RemoveListener(GameMsg.RefreshConfig, UpdateRefresh);
HallManager.Instance.UpdateSecondEvent -= RefreshConfig;
}
protected override void AddServerListener()
{
}
protected override void RemoveServerListener()
{
}
#endregion
private void OnUpdate101(object obj)
{
if (obj != null)
{
ui?.OnUpdate101(obj);
}
}
private void OnUpdate101Completed(object obj = null)
{
if (!DataMgr.IsShowRewardFly101.Value)
{
var value = DataMgr.Coin.Value;
model.showCoin = value;
ui?.Set101();
}
}
private void OnUpdate102(object obj)
{
if (obj != null)
{
ui?.OnUpdate102(obj);
}
}
private void OnUpdate102Completed(object obj = null)
{
if (!DataMgr.IsShowRewardFly102.Value)
{
var value = DataMgr.Ticket.Value;
model.showDollar = value;
if (DataMgr.MakeupTaskHistory.Value.Count == 1)
{
}
}
}
private int _lastUpdateTime;
public void UpdateRefresh(object obj = null)
{
}
private void RefreshConfig()
{
_lastUpdateTime++;
// Debug.Log($"barry RefreshConfig======= {_lastUpdateTime}");
if (_lastUpdateTime <= _countTime) return;
_lastUpdateTime = 0;
NetKit.Instance.Post<LoginModel>("settingRefresh", null, response =>
{
var savedCfgName = PlayerPrefs.GetString("ConfigFileName");
if (!response.IsSuccess) return;
if (savedCfgName.Equals(response.Data.Setting)) return;
// Debug.Log($"barry===== setting==== {obj.setting}" );
var loginData = GameHelper.GetLoginModel();
loginData.Setting = response.Data.Setting;
NetworkDispatcher.Instance.Dispatch(NetworkMsg.GetConfig, 2);
});
}
}
}
@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 27962707aa6b41ea8d03411c27188be0
timeCreated: 1671086538