//------------------------------------------------------------ // Game Framework // Copyright © 2013-2021 loyalsoft. All rights reserved. // Homepage: http://www.game7000.com/ // Feedback: http://www.game7000.com/ //------------------------------------------------------------ using GameFramework; using GameFramework.Network; using System.Collections.Generic; using UnityEngine; namespace UnityGameFramework.Runtime { /// /// 网络组件。 /// [DisallowMultipleComponent] [AddComponentMenu("Game Framework/Network")] public sealed class NetworkComponent : GameFrameworkComponent { private INetworkManager m_NetworkManager = null; private EventComponent m_EventComponent = null; /// /// 获取网络频道数量。 /// public int NetworkChannelCount { get { return m_NetworkManager.NetworkChannelCount; } } /// /// 游戏框架组件初始化。 /// protected override void Awake() { base.Awake(); m_NetworkManager = GameFrameworkEntry.GetModule(); if (m_NetworkManager == null) { Log.Fatal("Network manager is invalid."); return; } m_NetworkManager.NetworkConnected += OnNetworkConnected; m_NetworkManager.NetworkClosed += OnNetworkClosed; m_NetworkManager.NetworkMissHeartBeat += OnNetworkMissHeartBeat; m_NetworkManager.NetworkError += OnNetworkError; m_NetworkManager.NetworkCustomError += OnNetworkCustomError; } private void Start() { m_EventComponent = GameEntry.GetComponent(); if (m_EventComponent == null) { Log.Fatal("Event component is invalid."); return; } } /// /// 检查是否存在网络频道。 /// /// 网络频道名称。 /// 是否存在网络频道。 public bool HasNetworkChannel(string name) { return m_NetworkManager.HasNetworkChannel(name); } /// /// 获取网络频道。 /// /// 网络频道名称。 /// 要获取的网络频道。 public INetworkChannel GetNetworkChannel(string name) { return m_NetworkManager.GetNetworkChannel(name); } /// /// 获取所有网络频道。 /// /// 所有网络频道。 public INetworkChannel[] GetAllNetworkChannels() { return m_NetworkManager.GetAllNetworkChannels(); } /// /// 获取所有网络频道。 /// /// 所有网络频道。 public void GetAllNetworkChannels(List results) { m_NetworkManager.GetAllNetworkChannels(results); } /// /// 创建网络频道。 /// /// 网络频道名称。 /// 网络服务类型。 /// 网络频道辅助器。 /// 要创建的网络频道。 public INetworkChannel CreateNetworkChannel(string name, ServiceType serviceType, INetworkChannelHelper networkChannelHelper) { return m_NetworkManager.CreateNetworkChannel(name, serviceType, networkChannelHelper); } /// /// 销毁网络频道。 /// /// 网络频道名称。 /// 是否销毁网络频道成功。 public bool DestroyNetworkChannel(string name) { return m_NetworkManager.DestroyNetworkChannel(name); } private void OnNetworkConnected(object sender, GameFramework.Network.NetworkConnectedEventArgs e) { m_EventComponent.Fire(this, NetworkConnectedEventArgs.Create(e)); } private void OnNetworkClosed(object sender, GameFramework.Network.NetworkClosedEventArgs e) { m_EventComponent.Fire(this, NetworkClosedEventArgs.Create(e)); } private void OnNetworkMissHeartBeat(object sender, GameFramework.Network.NetworkMissHeartBeatEventArgs e) { m_EventComponent.Fire(this, NetworkMissHeartBeatEventArgs.Create(e)); } private void OnNetworkError(object sender, GameFramework.Network.NetworkErrorEventArgs e) { m_EventComponent.Fire(this, NetworkErrorEventArgs.Create(e)); } private void OnNetworkCustomError(object sender, GameFramework.Network.NetworkCustomErrorEventArgs e) { m_EventComponent.Fire(this, NetworkCustomErrorEventArgs.Create(e)); } } }