using GameFramework.Event; using GFMain; using Mirror; using System; using System.Collections; using System.Collections.Generic; using UGFExtensions.Await; using UnityCommon; using UnityEngine; using UnityGameFramework.Runtime; namespace DTYJ { public class Main : MonoSingleton
{ [HideInInspector] public OnlineNetwork onlineNetwork; private void Start() { string resolution = MainEntry.Config["Resolution"]; string[] res = resolution.Split('*'); if (res.Length == 2) { int w = int.Parse(res[0]); int h = int.Parse(res[1]); bool isFull = MainEntry.Config["FullScreen"].ToLower() == "true"; Screen.SetResolution(w, h, isFull); } var strReg = PlayerPrefs.GetString("RegistrationCode"); var mac = SystemInfo.deviceUniqueIdentifier; if (string.IsNullOrEmpty(strReg)) { MainEntry.CommonUI.inputPanel.Visible = true; return; } else { var regMd5 = Utility.GetMD5WithString(mac + "swsj202312"); if (regMd5 != strReg) { MainEntry.CommonUI.inputPanel.Visible = true; return; } } onlineNetwork = GameEntry.GetComponent(); onlineNetwork.InitNetworkManager(() => { Init(); }); MainEntry.CameraCtrl.ToNone(); MainEntry.Event.Subscribe(OnlineEventArgs.EventId, OnOnlineEvent); LoadScene(); } private void OnOnlineEvent(object sender, GameEventArgs e) { OnlineEventArgs args = (OnlineEventArgs)e; switch (args.m_onlineEventType) { case OnlineEventArgs.OnlineEventType.OnClientError: OnClientError(); break; case OnlineEventArgs.OnlineEventType.OnClientDisconnect: OnClientDisconnect(); break; case OnlineEventArgs.OnlineEventType.OnStartClient: OnStartClient(); break; } } private void OnStartClient() { } public UIMainMenu uiMainMenu; private async void Init() { OnlineCtrl.Instance.Init(); var task = await MainEntry.UI.OpenUIFormAsync("Assets/_DTYJ/Scripts/UI/MainMenu.prefab", "Default", 1, false, this); uiMainMenu = task.Logic as UIMainMenu; #if !UNITY_EDITOR #if UNITY_SERVER //StartServer(); #else //StartClient(); #endif #endif //StartClient_XieTong(); } private void OnClientDisconnect() { MainEntry.CommonUI.messageBox.ShowMessage("连接服务器失败,请检查网络配置后重新启动。", MessageBoxParams.MessageType.YesNoCancel, (res) => { //if (res != MessageBoxParams.ResultType.Yes) Application.Quit(); }); } private void OnClientError() { } private void LoadScene() { LoadStations(); } async void LoadStations() { await MainEntry.Scene.LoadSceneAsync("Assets/Levels/Common.unity"); //var task1 = await MainEntry.Resource.LoadAssetAsync("Assets/_DTYJ/Prefabs/站/Station_1.prefab"); //Instantiate(task1.gameObject); //var task2 = await MainEntry.Resource.LoadAssetAsync("Assets/_DTYJ/Prefabs/站/Station_2.prefab"); //Instantiate(task2.gameObject); Utility.DelayExe(2, () => { //uiMainMenu?.InitPositionJump(); #if !UNITY_EDITOR OnlineNetworkManager.singleton.GetComponent().enabled = false; switch (MainEntry.Config["OnlineLaunchType"].ToLower()) { case "host": StartHost(); break; case "server": StartServer(); break; case "client": StartClient(); break; default: MainEntry.CommonUI.messageBox.ShowMessage("无该启动模式:" + MainEntry.Config["OnlineLaunchType"].ToLower(), MessageBoxParams.MessageType.Confirm, (res) => { Application.Quit(); }); break; } #else OnlineNetworkManager.singleton.GetComponent().enabled = true; #endif }); } private void StartServer() { onlineNetwork.StartServer(ushort.Parse(MainEntry.Config["Online_Port"])); } private void StartHost() { onlineNetwork.StartHost(ushort.Parse(MainEntry.Config["Online_Port"])); } private void StartClient() { onlineNetwork.StartClient(MainEntry.Config["Online_IP"], ushort.Parse(MainEntry.Config["Online_Port"])); } //ClientSocket clientSocket = new ClientSocket(); private void Update() { #region Socket测试 //if (clientSocket.connected) //{ // clientSocket.BeginReceive(); //} //var msg = clientSocket.GetMsgFromQueue(); //if (!string.IsNullOrEmpty(msg)) //{ // Debug.Log("RecvCallBack: " + msg); //} #endregion //if (Input.GetKeyDown(KeyCode.K)) //{//测试固定视角 // if (MainEntry.CameraCtrl.cameraStateCurrent is MotionlessState) // MainEntry.CameraCtrl.ToPreCamerastate(); // else // MainEntry.CameraCtrl.ToMotionless(MainEntry.CameraCtrl.cameraController.cameraMain.transform.position + MainEntry.CameraCtrl.cameraController.cameraMain.transform.forward * 5, MainEntry.CameraCtrl.cameraController.cameraMain.transform.rotation); //} } } }