Ejemplo n.º 1
0
        public void NewPlayerConnected(Player player)
        {
            // Send new player position to all players
            var entityPositionMesageData = new EntityPositionMessageData();

            entityPositionMesageData.Uid = player.Client.PersistentId;
            entityPositionMesageData.X   = player.Position.X;
            entityPositionMesageData.Y   = player.Position.Y;
            outgoingMessageService.Send(entityPositionMesageData, playerRepository.GetPlayersConnection(new List <Player>(playerRepository.Players.Values)), player.Client.Connection);

            // Send all players position to the new player
            foreach (var p in playerRepository.Players.Values)
            {
                if (p == player)
                {
                    continue;
                }

                System.Console.WriteLine("Sending " + p.Character.Name + " position to " + player.Character.Name);

                entityPositionMesageData     = new EntityPositionMessageData();
                entityPositionMesageData.Uid = p.Client.PersistentId;
                entityPositionMesageData.X   = p.Position.X;
                entityPositionMesageData.Y   = p.Position.Y;
                outgoingMessageService.Send(entityPositionMesageData, player.Client.Connection);
            }
        }
Ejemplo n.º 2
0
        public void ProcessEntities(float deltaTime)
        {
            foreach (var p in playerRepository.Players.Values)
            {
                if (p.Velocity.Equals(Vector2.Zero))
                {
                    continue;
                }

                p.Position.X += p.Velocity.X * p.Speed * deltaTime;
                p.Position.Y += p.Velocity.Y * p.Speed * deltaTime;

                if (p.OldPosition.X == p.Position.X && p.OldPosition.Y == p.Position.Y)
                {
                    continue;
                }

                var entityPositionMesageData = new EntityPositionMessageData();
                entityPositionMesageData.Uid = p.Client.PersistentId;
                entityPositionMesageData.X   = p.Position.X;
                entityPositionMesageData.Y   = p.Position.Y;
                outgoingMessageService.Send(entityPositionMesageData, playerRepository.GetPlayersConnection(new List <Player>(playerRepository.Players.Values)));

                p.OldPosition.X = p.Position.X;
                p.OldPosition.Y = p.Position.Y;

                System.Console.WriteLine(p.Position.X + " " + p.Position.Y);
            }
        }
Ejemplo n.º 3
0
        public SNMessageData GetMessageData(short type)
        {
            ClientMessageTypes header  = (ClientMessageTypes)type;
            SNMessageData      message = null;

            switch (header)
            {
                #region Authentification
            case ClientMessageTypes.PlayerLoginSuccess:
                message = new PlayerLoginSuccessMessageData();
                break;

            case ClientMessageTypes.PlayerLoginError:
                message = new PlayerLoginErrorMessageData();
                break;

            case ClientMessageTypes.SendCharacters:
                message = new SendCharactersMessageData();
                break;

            case ClientMessageTypes.CharacterSelected:
                message = new CharacterSelectedMessageData();
                break;
                #endregion

                #region Entities
            case ClientMessageTypes.EntityPosition:
                message = new EntityPositionMessageData();
                break;

            case ClientMessageTypes.CharacterDisconnected:
                message = new CharacterDisconnectedMessageData();
                break;
                #endregion

            default:
                loggingService.Log($"Cannot build client message {header.ToString()}", LogMessageType.WARNING);
                break;
            }

            return(message);
        }