Frame/Assets/Scripts/Game.cs

97 lines
3.4 KiB
C#

using System;
using Cysharp.Threading.Tasks;
using Game.Pathfinding;
using Game.Player;
using Game.Room;
using UnityEngine;
namespace Game
{
public class Game : MonoBehaviour
{
private static Game _game;
private UIManager _uiManager;
private ResourceManager _resourceManager;
private ProcedureManager _procedureManager;
public PlayerManager _playerManager;
public BFSManager _bfsManager;
public RoomManager _roomManager;
[SerializeField] private LoadType _loadType = LoadType.Editor;
[SerializeField] private float time;
public static IProcedureManager procedureManager => _game._procedureManager;
public static IResourceManager resourceManager => _game._resourceManager;
public static IUIManager uiManager => _game._uiManager;
public static IPlayerManager playerManager => _game._playerManager;
public static IBFSManager bfsManager => _game._bfsManager;
public static IRoomManager roomManager => _game._roomManager;
private void Awake()
{
_game = this;
DontDestroyOnLoad(this.gameObject);
AssemblyManager.Initialize();
this._uiManager = new UIManager();
this._resourceManager = new ResourceManager();
this._procedureManager = new ProcedureManager();
this._playerManager = new PlayerManager();
this._bfsManager = new BFSManager();
this._roomManager = new RoomManager();
this._resourceManager.Init();
this._uiManager.Init();
this._procedureManager.Init();
this._playerManager.Init();
this._bfsManager.Init();
this._roomManager.Init();
// ProcedureBase[] procedureBases = new ProcedureBase[]
// {
// new LoadingGameSceneProcedure(), new GameSceneLogicProcedure()
// };
// this._procedureManager.AddProcedure(procedureBases);
}
private void Start()
{
UniTask.Create(
async () =>
{
await _resourceManager.InitLoadModeAsync(_loadType);
// var loadingGameSceneUI = UIManager.Instance.CreateUI(UIType.LoadingGameSceneUI);
// UIManager.Instance.ShowUI(UIType.LoadingGameSceneUI);
// await this._resourceManager.LoadSceneAsync(SceneType.Game.ToString());
// EventManager.Instance.FireNow(this,new LoadingGameSceneFinishEventArgs(true));
this._procedureManager.StartProcedure(ProcedureType.LoadingGameSceneProcedure);
return "11";
}).Forget();
}
private void Update()
{
time = Time.deltaTime;
this._resourceManager.Update(time);
this._uiManager.Update(time);
this._procedureManager.Update(time);
this._bfsManager.Update(time);
this._playerManager.Update(time);
this._roomManager.Update(time);
}
private void OnDestroy()
{
this._resourceManager.Dispose();
this._uiManager.Dispose();
this._procedureManager.Dispose();
this._bfsManager.Dispose();
this._playerManager.Dispose();
this._roomManager.Dispose();
}
}
}