using System; using System.Collections.Generic; namespace UnityEngine.Networking { // Token: 0x02000012 RID: 18 internal sealed class LocalClient : NetworkClient { // Token: 0x06000074 RID: 116 RVA: 0x000067F0 File Offset: 0x000049F0 public override void Disconnect() { ClientScene.HandleClientDisconnect(this.m_Connection); if (this.m_Connected) { this.PostInternalMessage(33); this.m_Connected = false; } this.m_AsyncConnect = NetworkClient.ConnectState.Disconnected; this.m_LocalServer.RemoveLocalClient(this.m_Connection); } // Token: 0x06000075 RID: 117 RVA: 0x00006840 File Offset: 0x00004A40 internal void InternalConnectLocalServer(bool generateConnectMsg) { if (this.m_FreeMessages == null) { this.m_FreeMessages = new Stack(); for (int i = 0; i < 64; i++) { LocalClient.InternalMsg internalMsg = default(LocalClient.InternalMsg); this.m_FreeMessages.Push(internalMsg); } } this.m_LocalServer = NetworkServer.instance; this.m_Connection = new ULocalConnectionToServer(this.m_LocalServer); base.SetHandlers(this.m_Connection); this.m_Connection.connectionId = this.m_LocalServer.AddLocalClient(this); this.m_AsyncConnect = NetworkClient.ConnectState.Connected; NetworkClient.SetActive(true); base.RegisterSystemHandlers(true); if (generateConnectMsg) { this.PostInternalMessage(32); } this.m_Connected = true; } // Token: 0x06000076 RID: 118 RVA: 0x000068F9 File Offset: 0x00004AF9 internal override void Update() { this.ProcessInternalMessages(); } // Token: 0x06000077 RID: 119 RVA: 0x00006904 File Offset: 0x00004B04 internal void AddLocalPlayer(PlayerController localPlayer) { if (LogFilter.logDev) { Debug.Log(string.Concat(new object[] { "Local client AddLocalPlayer ", localPlayer.gameObject.name, " conn=", this.m_Connection.connectionId })); } this.m_Connection.isReady = true; this.m_Connection.SetPlayerController(localPlayer); NetworkIdentity unetView = localPlayer.unetView; if (unetView != null) { ClientScene.SetLocalObject(unetView.netId, localPlayer.gameObject); unetView.SetConnectionToServer(this.m_Connection); } ClientScene.InternalAddPlayer(unetView, localPlayer.playerControllerId); } // Token: 0x06000078 RID: 120 RVA: 0x000069B4 File Offset: 0x00004BB4 private void PostInternalMessage(byte[] buffer, int channelId) { LocalClient.InternalMsg internalMsg; if (this.m_FreeMessages.Count == 0) { internalMsg = default(LocalClient.InternalMsg); } else { internalMsg = this.m_FreeMessages.Pop(); } internalMsg.buffer = buffer; internalMsg.channelId = channelId; this.m_InternalMsgs.Add(internalMsg); } // Token: 0x06000079 RID: 121 RVA: 0x00006A0C File Offset: 0x00004C0C private void PostInternalMessage(short msgType) { NetworkWriter networkWriter = new NetworkWriter(); networkWriter.StartMessage(msgType); networkWriter.FinishMessage(); this.PostInternalMessage(networkWriter.AsArray(), 0); } // Token: 0x0600007A RID: 122 RVA: 0x00006A3C File Offset: 0x00004C3C private void ProcessInternalMessages() { if (this.m_InternalMsgs.Count != 0) { List internalMsgs = this.m_InternalMsgs; this.m_InternalMsgs = this.m_InternalMsgs2; for (int i = 0; i < internalMsgs.Count; i++) { LocalClient.InternalMsg internalMsg = internalMsgs[i]; if (this.s_InternalMessage.reader == null) { this.s_InternalMessage.reader = new NetworkReader(internalMsg.buffer); } else { this.s_InternalMessage.reader.Replace(internalMsg.buffer); } this.s_InternalMessage.reader.ReadInt16(); this.s_InternalMessage.channelId = internalMsg.channelId; this.s_InternalMessage.conn = base.connection; this.s_InternalMessage.msgType = this.s_InternalMessage.reader.ReadInt16(); this.m_Connection.InvokeHandler(this.s_InternalMessage); this.m_FreeMessages.Push(internalMsg); base.connection.lastMessageTime = Time.time; } this.m_InternalMsgs = internalMsgs; this.m_InternalMsgs.Clear(); for (int j = 0; j < this.m_InternalMsgs2.Count; j++) { this.m_InternalMsgs.Add(this.m_InternalMsgs2[j]); } this.m_InternalMsgs2.Clear(); } } // Token: 0x0600007B RID: 123 RVA: 0x00006BAC File Offset: 0x00004DAC internal void InvokeHandlerOnClient(short msgType, MessageBase msg, int channelId) { NetworkWriter networkWriter = new NetworkWriter(); networkWriter.StartMessage(msgType); msg.Serialize(networkWriter); networkWriter.FinishMessage(); this.InvokeBytesOnClient(networkWriter.AsArray(), channelId); } // Token: 0x0600007C RID: 124 RVA: 0x00006BE1 File Offset: 0x00004DE1 internal void InvokeBytesOnClient(byte[] buffer, int channelId) { this.PostInternalMessage(buffer, channelId); } // Token: 0x04000051 RID: 81 private const int k_InitialFreeMessagePoolSize = 64; // Token: 0x04000052 RID: 82 private List m_InternalMsgs = new List(); // Token: 0x04000053 RID: 83 private List m_InternalMsgs2 = new List(); // Token: 0x04000054 RID: 84 private Stack m_FreeMessages; // Token: 0x04000055 RID: 85 private NetworkServer m_LocalServer; // Token: 0x04000056 RID: 86 private bool m_Connected; // Token: 0x04000057 RID: 87 private NetworkMessage s_InternalMessage = new NetworkMessage(); // Token: 0x02000013 RID: 19 private struct InternalMsg { // Token: 0x04000058 RID: 88 internal byte[] buffer; // Token: 0x04000059 RID: 89 internal int channelId; } } }