Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #4
0
        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);
            }
        }
Example #5
0
        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);
        }