private const float BufferTime = 0.1f; //100 milliseconds public RemotePlayer(ClientPlayerManager manager, string name, PlayerJoinedPacket pjPacket) : base(manager, name, pjPacket.InitialPlayerState.Id) { _position = pjPacket.InitialPlayerState.Position; _health = pjPacket.Health; _rotation = pjPacket.InitialPlayerState.Rotation; _buffer.Add(pjPacket.InitialPlayerState); }
private void OnPlayerJoined(PlayerJoinedPacket packet) { Debug.Log($"[C] Player joined: {packet.UserName}"); var remotePlayer = new RemotePlayer(_playerManager, packet.UserName, packet); var view = RemotePlayerView.Create(_remotePlayerViewPrefab, remotePlayer); _playerManager.AddPlayer(remotePlayer, view); }
public override void ProcessPacket(Guid sourcePlayerId, Packet packet, IProcessorContext context) { PlayerJoinedPacket playerJoinedPacket = (PlayerJoinedPacket)packet; ClientProcessorContext processorContext = (ClientProcessorContext)context; processorContext.Client.PlayerManager.OnPlayerAdded(playerJoinedPacket.Player); MessageLogFlags flags; if (playerJoinedPacket.Player.Name.ToLower() == "freddy") { flags = MessageLogFlags.MessageSoundPowerDown; } else { flags = MessageLogFlags.MessageSoundNormal; } MessageLog.Show($"Player is joining game: {playerJoinedPacket.Player.Name}", null, flags); }
private void OnJoinReceived(JoinPacket joinPacket, NetPeer peer) { Debug.Log("[S] Join packet received: " + joinPacket.UserName); var player = new ServerPlayer(_playerManager, joinPacket.UserName, peer); _playerManager.AddPlayer(player); player.Spawn(new Vector2(Random.Range(-2f, 2f), Random.Range(-2f, 2f))); //Send join accept var ja = new JoinAcceptPacket { Id = player.Id, ServerTick = _serverTick }; peer.Send(WritePacket(ja), DeliveryMethod.ReliableOrdered); //Send to old players info about new player var pj = new PlayerJoinedPacket { UserName = joinPacket.UserName, NewPlayer = true, InitialPlayerState = player.NetworkState, ServerTick = _serverTick }; _netManager.SendToAll(WritePacket(pj), DeliveryMethod.ReliableOrdered, peer); //Send to new player info about old players pj.NewPlayer = false; foreach (ServerPlayer otherPlayer in _playerManager) { if (otherPlayer == player) { continue; } pj.UserName = otherPlayer.Name; pj.InitialPlayerState = otherPlayer.NetworkState; peer.Send(WritePacket(pj), DeliveryMethod.ReliableOrdered); } }
public Player CreatePlayer(Guid playerId, string username, PlayerPermissions permissions = PlayerPermissions.Standard, PlayerState state = PlayerState.ConnectedUnauthenticated) { if (connectedPlayers.Values.Any(p => p.Name == username)) { throw new UsernameTakenException(); } Player player = new Player(playerId, username, permissions, state); connectedPlayers.Add(playerId, player); Console.WriteLine($"Player created: {playerId}"); PlayerJoinedPacket playerJoinedPacket = new PlayerJoinedPacket(player); server.SendPacketToAllExcept(playerJoinedPacket, playerId); PlayerEventArgs playerEventArgs = new PlayerEventArgs(playerId); PlayerCreated?.Invoke(this, playerEventArgs); return(player); }