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); } }
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); } }
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); }