Advertisement
_EagleOwle_

NetworkController

Aug 22nd, 2020
1,678
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.05 KB | None | 0 0
  1. using GalaxyCoreCommon.InternalMessages;
  2. using GalaxyCoreLib;
  3. using GalaxyCoreLib.Api;
  4. using GameServerCommon;
  5. using System.Collections;
  6. using System.Collections.Generic;
  7. using UnityEngine;
  8. using UnityEngine.SceneManagement;
  9.  
  10. public class NetworkController : MonoBehaviour
  11. {
  12.     #region SINGLETON
  13.     public static NetworkController Singleton;
  14.     #endregion
  15.  
  16.     /// <summary>
  17.     /// Ip адрес сервера
  18.     /// </summary>
  19.     public string serverIP = "127.0.0.1";
  20.     /// <summary>
  21.     /// Порт сервера
  22.     /// </summary>
  23.     public int serverPort = 30200;
  24.     /// <summary>
  25.     /// Конфигурация клиента
  26.     /// </summary>
  27.     Config config = new Config();
  28.  
  29.     private void Awake()
  30.     {
  31.         if (Singleton == null)
  32.         {
  33.             Singleton = this;
  34.             DontDestroyOnLoad(gameObject); // Помечаем объект как неразрушаемый при переходах между сценами
  35.         }
  36.         else
  37.         {
  38.             Destroy(gameObject);
  39.             return;
  40.         }
  41.  
  42.         config.serverIp = serverIP; // задаем указаный ип
  43.         config.serverPort = serverPort; // задаем указанный порт
  44.         config.app_name = "GameServer"; // должно соответствовать имени сервера
  45.         config.FrameRate = 25; // Устанавливаем сетевой фреймрейт
  46.  
  47.         GalaxyClientCore.Initialize(config); // инициализируем сетевое ядро
  48.         GalaxyClientCore.unityCalls.Awake(); // прокидываем Awake
  49.  
  50.     }
  51.  
  52.     private void Start()
  53.     {
  54.        Debug.Log("NetworkController Start()");
  55.  
  56.         GalaxyClientCore.unityCalls.Start(); // прокидываем Start
  57.         GalaxyEvents.OnGalaxyDisconnect += GalaxyEvents_OnGalaxyDisconnect;
  58.         GalaxyEvents.OnGalaxyConnect += GalaxyEvents_OnGalaxyConnect;
  59.        
  60.         GalaxyEvents.OnGalaxyEnterInInstance += OnGalaxyEnterInInstance;
  61.         GalaxyEvents.OnExitInstance += GalaxyEvents_OnExitInstance;
  62.  
  63.         SceneManager.sceneLoaded += SceneManager_sceneLoaded;
  64.  
  65.        
  66.     }
  67.  
  68.     private void SceneManager_sceneLoaded(Scene scene, LoadSceneMode mode)
  69.     {
  70.         //Debug.Log("OnSceneLoaded: " + scene.name);
  71.         //Debug.Log(mode);
  72.     }
  73.  
  74.     private void GalaxyEvents_OnExitInstance()
  75.     {
  76.         Player.instanceInfo = null;
  77.         Debug.Log("GalaxyEvents_OnExitInstance");
  78.  
  79.         if(GalaxyApi.connection.isConnected)
  80.         {
  81.             SceneManager.LoadScene("LobbyScene");
  82.         }
  83.         else
  84.         {
  85.             SceneManager.LoadScene("LoginScene");
  86.         }
  87.     }
  88.  
  89.     private void OnGalaxyEnterInInstance(GalaxyCoreCommon.InstanceInfo info)
  90.     {
  91.         Player.instanceInfo = info;
  92.         SceneManager.LoadScene("WorldScene");
  93.     }
  94.  
  95.     private void GalaxyEvents_OnGalaxyConnect(byte[] message)
  96.     {
  97.         MessageConnectApproval messageApproval = MessageConnectApproval.Deserialize<MessageConnectApproval>(message);
  98.  
  99.         Player.name = messageApproval.name;
  100.         Player.id = messageApproval.id;
  101.  
  102.         SceneManager.LoadScene("LobbyScene");
  103.     }
  104.  
  105.     private void GalaxyEvents_OnGalaxyDisconnect()
  106.     {
  107.         Player.name = "Disconnect";
  108.         Player.id = -1;
  109.  
  110.         Debug.Log(gameObject + " OnGalaxyDisconnect");
  111.         SceneManager.LoadScene("LoginScene");
  112.     }
  113.  
  114.     private void Update()
  115.     {
  116.         GalaxyClientCore.unityCalls.Update(Time.deltaTime); // Прокидываем update
  117.     }
  118.  
  119.     private void OnApplicationQuit()
  120.     {
  121.         GalaxyApi.connection.Disconnect(); //Посылаем команду дисконекта при выходе из приложения
  122.     }
  123.  
  124.     private void OnDisable()
  125.     {
  126.         if (GalaxyApi.connection.isConnected)
  127.         {
  128.             Debug.Log(gameObject + " OnDisable | Disconnect");
  129.             GalaxyApi.connection.Disconnect();//Посылаем команду дисконекта если go был выключен
  130.         }
  131.     }
  132. }
  133.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement