using BrewMonster; using BrewMonster.Scripts; using BrewMonster.Scripts.World; using CSNetwork; using CSNetwork.GPDataType; using Unity.Cinemachine; using UnityEngine; public partial class CECGameRun { private static CECGameRun instance; private GameObject _playerPrefab; private GameObject _monsterPrefab;//CECMonster private GameObject _npcServerPrefab;//CECNPCServer private GameObject _testVfxPrefab; // private GameRunConfig _gameRunConfig; //[SerializeField] private Transform ground; CECHostPlayer hostPlayer; private CECWorld m_pWorld; protected CECUIManager m_pUIManager; // UI manager public CECWorld GetWorld() { return m_pWorld; } public void Init() { instance = this; // _gameRunConfig = Resources.Load("GameRunConfig"); // _playerPrefab = _gameRunConfig.PlayerPrefab; // _monsterPrefab = _gameRunConfig.MonsterPrefab; // _npcServerPrefab = _gameRunConfig.NpcServerPrefab; // _testVfxPrefab = _gameRunConfig.TestVfxPrefab; LoadPrefabs(); // LoadPrefabs(); EC_ManMessage.RegisterHandler(this); } public static void Dispose() { instance = null; AddressableManager.Instance.UnloadAsset(AddressResourceConfig.PlayerPrefab); AddressableManager.Instance.UnloadAsset(AddressResourceConfig.MonsterPrefab); AddressableManager.Instance.UnloadAsset(AddressResourceConfig.NpcServerPrefab); AddressableManager.Instance.UnloadAsset(AddressResourceConfig.TestVfxPrefab); } private async void LoadPrefabs() { _playerPrefab = await AddressableManager.Instance.LoadPrefabAsync(AddressResourceConfig.PlayerPrefab); _monsterPrefab = await AddressableManager.Instance.LoadPrefabAsync(AddressResourceConfig.MonsterPrefab); _npcServerPrefab = await AddressableManager.Instance.LoadPrefabAsync(AddressResourceConfig.NpcServerPrefab); _testVfxPrefab = await AddressableManager.Instance.LoadPrefabAsync(AddressResourceConfig.TestVfxPrefab); } public bool StartGame(int idInst, Vector3 vHostPos) { if (!JumpToInstance(idInst, vHostPos)) { BMLogger.LogError("CECGameRun::StartGame, Failed to create game world."); return false; } return true; } private bool JumpToInstance(int idInst, Vector3 vHostPos, int iParallelWorldID = 0) { return true; } public static CECGameRun Instance { get { if (instance == null) { instance = new CECGameRun(); instance.Init(); } return instance; } } public CECHostPlayer GetHostPlayer() { return hostPlayer; } public void InitCharacter(cmd_self_info_1 info) { if (_playerPrefab == null) { BMLogger.LogError("null _playerPrefab"); return; } CECPlayer.InitStaticRes(); hostPlayer = ObjectSpawner.Instance.InstantiateObject(_playerPrefab, setThisAsParent:true).AddComponent(); hostPlayer.InitCharacter(info); } public CECMonster GetMonster() { return ObjectSpawner.Instance.InstantiateObject(_monsterPrefab, setThisAsParent: true) .GetComponent(); } public CECNPCServer GetNPCServer() { return ObjectSpawner.Instance.InstantiateObject(_npcServerPrefab, setThisAsParent:true).GetComponent(); } public GameObject GetTestVfx() { return ObjectSpawner.Instance.InstantiateObject(_testVfxPrefab, setThisAsParent: true); } public void DestroyTestVfx(GameObject go, float delayTime) { ObjectSpawner.Instance.DestroyGameObject(go, delayTime); } public GameObject InitCharacter(info_player_1 info) { if (_playerPrefab == null) { Debug.LogError("null prefab"); return null; } GameObject character = ObjectSpawner.Instance.InstantiateObject(_playerPrefab, setThisAsParent: true); return character.gameObject; } //private void Update() //{ // if (hostPlayer == null || hostPlayer.transform == null) // return; // bool rightClick = Input.GetMouseButton(1); // if (rightClick) // { // // Bật khả năng xoay khi giữ chuột phải // freeLookCam.m_XAxis.m_MaxSpeed = rotateSpeedX; // freeLookCam.m_YAxis.m_MaxSpeed = rotateSpeedY; // // Ghi giá trị chuột thủ công (nếu muốn override Input System cũ) // float mouseX = Input.GetAxis("Mouse X"); // float mouseY = Input.GetAxis("Mouse Y"); // // Xoay camera theo hướng chuột // freeLookCam.m_XAxis.Value += mouseX * Time.deltaTime * rotateSpeedX; // freeLookCam.m_YAxis.Value -= mouseY * Time.deltaTime * (rotateSpeedY / 100f); // } // else // { // // Khi thả chuột thì khoá xoay // freeLookCam.m_XAxis.m_MaxSpeed = 0; // freeLookCam.m_YAxis.m_MaxSpeed = 0; // } //} // Get UI manager public CECUIManager GetUIManager() { if(m_pUIManager == null) { m_pUIManager = CECUIManager.Instance; } return m_pUIManager; } }