// Sends the clent player to server to be set to be destroyed public void DisconnectClientPlayer() { DisconnectMsg disconnect = new DisconnectMsg(); disconnect.player.id = clientPlayer.id; SendToServer(JsonUtility.ToJson(disconnect)); }
void OnData(DataStreamReader stream, int i) { NativeArray <byte> bytes = new NativeArray <byte>(stream.Length, Allocator.Temp); stream.ReadBytes(bytes); string recMsg = Encoding.ASCII.GetString(bytes.ToArray()); NetworkMessage header = JsonUtility.FromJson <NetworkMessage>(recMsg); switch (header.cmd) { case Commands.HANDSHAKE: HandshakeMsg hsMsg = JsonUtility.FromJson <HandshakeMsg>(recMsg); AddPlayer(hsMsg); break; case Commands.PLAYER_UPDATE: PlayerUpdateMsg puMsg = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg); UpdatePlayer(puMsg); break; case Commands.DISCONNECT: DisconnectMsg dcMsg = JsonUtility.FromJson <DisconnectMsg>(recMsg); RemovePlayer(dcMsg); break; default: Debug.Log("SERVER ERROR: Unrecognized message received!"); break; } }
public void DisconnectClient() { DisconnectMsg disconnect = new DisconnectMsg(); disconnect.serverID = localID; SendToServer(JsonUtility.ToJson(disconnect)); }
void RemovePlayer(DisconnectMsg msg) { foreach (NetworkPlayer p in Allplayers) { if (p.id == msg.player.id) { p.destroy = true; } } ServerUpdateMsg ServerUpdate = new ServerUpdateMsg(); ServerUpdate.players = Allplayers; ServerUpdate.type = ServerUpdateMsg.UpdateType.REMOVE; SendToAllClients(JsonUtility.ToJson(ServerUpdate)); }
void IObserver <Message> .OnNext(Message msg) { switch (msg.type) { case MessageType.Connect: ConnectMsg.Process(this, msg); break; case MessageType.Disconnect: DisconnectMsg.Process(this, msg); break; case MessageType.NewLayout: NewLayoutMsg.Process(this, msg); break; case MessageType.RemoveLayout: RemoveLayoutMsg.Process(this, msg); break; case MessageType.NewDevice: NewDeviceMsg.Process(this, msg); break; case MessageType.NewEvents: NewEventsMsg.Process(this, msg); break; case MessageType.ChangeUsages: ChangeUsageMsg.Process(this, msg); break; case MessageType.RemoveDevice: RemoveDeviceMsg.Process(this, msg); break; case MessageType.StartSending: StartSendingMsg.Process(this, msg); break; case MessageType.StopSending: StopSendingMsg.Process(this, msg); break; } }
void OnData(DataStreamReader stream) { NativeArray <byte> bytes = new NativeArray <byte>(stream.Length, Allocator.Temp); stream.ReadBytes(bytes); string recMsg = Encoding.ASCII.GetString(bytes.ToArray()); NetworkHeader header = JsonUtility.FromJson <NetworkHeader>(recMsg); switch (header.cmd) { case Commands.INITIALIZE: InitialMsg initMsg = JsonUtility.FromJson <InitialMsg>(recMsg); localID = initMsg.serverID; break; case Commands.HANDSHAKE: HandshakeMsg hsMsg = JsonUtility.FromJson <HandshakeMsg>(recMsg); Debug.Log("Handshake message received!: " + hsMsg.player.id); break; case Commands.PLAYER_UPDATE: PlayerUpdateMsg puMsg = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg); Debug.Log("Player update message received!"); break; case Commands.SERVER_UPDATE: ServerUpdateMsg suMsg = JsonUtility.FromJson <ServerUpdateMsg>(recMsg); Debug.Log("Server update message received!"); UpdateList(suMsg.players); break; case Commands.PLAYER_DISCONNECT: DisconnectMsg disMsg = JsonUtility.FromJson <DisconnectMsg>(recMsg); Debug.Log("Disconnection message received!: " + disMsg.serverID); RemovePlayer(disMsg.serverID); break; default: Debug.Log("Unrecognized message received!"); break; } }
void IObserver <Message> .OnNext(Message msg) { switch (msg.type) { case MessageType.Connect: ConnectMsg.Process(this, msg); break; case MessageType.Disconnect: DisconnectMsg.Process(this, msg); break; case MessageType.NewTemplate: NewTemplateMsg.Process(this, msg); break; case MessageType.RemoveTemplate: RemoveTemplateMsg.Process(this, msg); break; case MessageType.NewDevice: NewDeviceMsg.Process(this, msg); break; case MessageType.NewEvents: NewEventsMsg.Process(this, msg); break; case MessageType.ChangeUsages: ChangeUsageMsg.Process(this, msg); break; case MessageType.RemoveDevice: RemoveDeviceMsg.Process(this, msg); break; } }
void DisconnectPlayer(string id) { //remove player with that id for (int i = 0; i < players.Count; i++) { if (players[i].id == id) { players.RemoveAt(i); Debug.Log("Player Removed Succesfully: " + id); break; } } //send disconnected id to connected clients for (int i = 0; i < m_Connections.Length; i++) { if (m_Connections[i].IsCreated) { DisconnectMsg disconnect = new DisconnectMsg(); disconnect.serverID = id; SendToClient(JsonUtility.ToJson(disconnect), m_Connections[i]); } } }