protected override void OnConnect(Event e) { Peer peer = e.Peer; uint id = peer.ID + 1; // Increase by 1 so ID of 0 remains free for host if (peer.IsSet) { NetworkLogger.Log($"Client [{id}] connected", LogCategory.Connections); var client = new FlareClientShell(peer) { Id = id }; ClientManager?.AddClient(client); // Send the client its ID manually PayloadHandler.AddCallback <ClientAssigned>(PushClientConnected); SendMessage(new IdAssignment { id = id }, 0, peers: client.Peer); } else { NetworkLogger.Log("Unset peer connected. How?", LogCategory.Connections, LogLevel.Error); } }
private void PushClientConnected(ClientAssigned p) { NetworkLogger.Log("Client connection finalized", LogCategory.Connections); PayloadHandler.RemoveCallback <ClientAssigned>(PushClientConnected); if (ClientManager.TryGetClient(p.id, out var client)) { PayloadHandler.PushPayload(new ClientConnected { Client = client }); } }
protected override void OnDisconnect(Event e) { Peer peer = e.Peer; uint id = peer.ID + 1; if (peer.IsSet) { NetworkLogger.Log($"Client [{id}] disconnected", LogCategory.Connections); ClientManager?.RemoveClient(id); PayloadHandler.PushPayload(new ClientDisconnected { ClientId = id }); } else { NetworkLogger.Log("Unset peer disconnected!", LogCategory.Connections, LogLevel.Error); } }
protected override void OnMessageReceived(Event e) { NetworkLogger.Log($"Packet from client [{e.Peer.ID + 1}] on channel [{e.ChannelID}] with length [{e.Packet.Length}]", LogCategory.Packets); PayloadHandler.ProcessPacket(e.Packet); }