145 lines
4.3 KiB
C#
145 lines
4.3 KiB
C#
using CSNetwork.GPDataType;
|
|
using CSNetwork.Protocols.RPCData;
|
|
using System.Data;
|
|
using BrewMonster.PerfectWorld.Scripts.Vfx;
|
|
using Unity.Cinemachine;
|
|
using Unity.VisualScripting;
|
|
using UnityEngine;
|
|
using UnityEngine.UIElements;
|
|
|
|
public class GameController : MonoBehaviour
|
|
{
|
|
private static GameController instance;
|
|
|
|
[SerializeField] private GameObject characterPrefab;
|
|
[SerializeField] private CECMonster monsterPrefab;
|
|
[SerializeField] private CECNPCServer npcServerPrefab;
|
|
[SerializeField] private CinemachineCamera cinemachineCamera;
|
|
[SerializeField] private GameObject _testVfxPrefab;
|
|
public GameObject SelectingVfxPrefab;
|
|
//[SerializeField] private Transform ground;
|
|
CECHostPlayer hostPlayer;
|
|
|
|
public CinemachineFreeLook freeLookCam;
|
|
public float rotateSpeedX = 300f; // tốc độ xoay ngang
|
|
public float rotateSpeedY = 2f; // tốc độ xoay dọc
|
|
|
|
|
|
public static GameController Instance
|
|
{
|
|
get
|
|
{
|
|
if (instance == null)
|
|
{
|
|
instance = FindAnyObjectByType<GameController>();
|
|
}
|
|
return instance;
|
|
}
|
|
}
|
|
private void Awake()
|
|
{
|
|
if (instance == null)
|
|
{
|
|
instance = this;
|
|
}
|
|
}
|
|
|
|
public void Log(string s)
|
|
{
|
|
Debug.LogError(s);
|
|
}
|
|
public CECHostPlayer GetHostPlayer()
|
|
{
|
|
if (hostPlayer == null)
|
|
{
|
|
hostPlayer = FindAnyObjectByType<CECHostPlayer>();
|
|
}
|
|
return hostPlayer;
|
|
}
|
|
public void InitCharacter(cmd_self_info_1 info)
|
|
{
|
|
if (characterPrefab == null)
|
|
{
|
|
Debug.LogError("null prefab");
|
|
return;
|
|
}
|
|
CECPlayer.InitStaticRes();
|
|
hostPlayer = Instantiate(characterPrefab, transform).AddComponent<CECHostPlayer>();
|
|
hostPlayer.InitCharacter(info);
|
|
cinemachineCamera.Follow = hostPlayer.transform;
|
|
cinemachineCamera.ForceCameraPosition(hostPlayer.transform.position, Quaternion.identity);
|
|
CinemachineTouchOrbit.Instance.SetOrbitTarget(hostPlayer.transform);
|
|
//Vector3 pos = new Vector3(info.pos.x, info.pos.y, info.pos.z);
|
|
//Vector3 posCam = pos;
|
|
//posCam.z -= 10f;
|
|
//camera.transform.position = posCam;
|
|
//Vector3 posGround = pos;
|
|
//posGround.y -= 2f;
|
|
//ground.transform.position = posGround;
|
|
}
|
|
public CECMonster GetMonster()
|
|
{
|
|
return Instantiate(monsterPrefab, transform);
|
|
}
|
|
|
|
public CECNPCServer GetNPCServer()
|
|
{
|
|
return Instantiate(npcServerPrefab, transform);
|
|
}
|
|
public GameObject GetTestVfx()
|
|
{
|
|
return Instantiate(_testVfxPrefab, transform);
|
|
}
|
|
public void DestroyTestVfx(GameObject go, float delayTime)
|
|
{
|
|
Destroy(go,delayTime);
|
|
}
|
|
public GameObject InitCharacter(info_player_1 info)
|
|
{
|
|
if (characterPrefab == null)
|
|
{
|
|
Debug.LogError("null prefab");
|
|
return null;
|
|
}
|
|
GameObject character = Instantiate(characterPrefab, transform);
|
|
return character.gameObject;
|
|
}
|
|
private void OnDestroy()
|
|
{
|
|
instance = null;
|
|
}
|
|
public GameObject InstantiateObject(GameObject prefab)
|
|
{
|
|
return Instantiate(prefab, transform);
|
|
}
|
|
|
|
//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;
|
|
// }
|
|
//}
|
|
}
|