public void AddPlayer(Player player) { this.players.Add(player); Packet packet = new Packet(PacketType.PlayerDataPacket); packet.Message.Write(player.PlayerIndex); packet.Message.Write(player.Name); packet.Message.Write(player.Level); packet.Message.Write(player.Position); packet.Message.Write(player.Direction); packet.Message.Write(player.TextureNumber); foreach (var mPlayer in this.players.Where(mPlayer => mPlayer != player)) { mPlayer.Connection.SendMessage(packet.Message, NetDeliveryMethod.ReliableOrdered, (int)ChannelTypes.WORLD); } }
private void HandlePlayerRegister(PacketReceivedEventArgs args) { var username = args.Message.ReadString(); var password = args.Message.ReadString(); var player = this.GetPlayer(args.Connection.RemoteUniqueIdentifier); player.Name = username; player.Password = password; var registrationOkay = this.RegisterPlayer(player); Packet packet = new Packet(PacketType.RegistrationPacket); packet.Message.Write(registrationOkay); if (registrationOkay) { packet.Message.Write("Your account has been registered, logging in now..."); packet.Message.Write(args.Connection.RemoteUniqueIdentifier); player.Connection.SendMessage(packet.Message, NetDeliveryMethod.ReliableOrdered, (int)ChannelTypes.WORLD); player.EnterGame(); } else { packet.Message.Write("Your account has failed to register..."); } }
private void HandlePlayerLogin(PacketReceivedEventArgs args) { string username = args.Message.ReadString(); string password = args.Message.ReadString(); var player = this.GetPlayer(args.Connection.RemoteUniqueIdentifier); player.Name = username; player.Password = password; bool loginOkay = this.LoginPlayer(args.Connection.RemoteUniqueIdentifier); Packet packet = new Packet(PacketType.LoginPacket); packet.Message.Write(loginOkay); if (loginOkay) { packet.Message.Write("Login sucess!"); packet.Message.Write(args.Connection.RemoteUniqueIdentifier); player.Connection.SendMessage(packet.Message, NetDeliveryMethod.ReliableOrdered, (int)ChannelTypes.WORLD); player.EnterGame(); } else { // Login failure. } }
private void HandleMapCheck(PacketReceivedEventArgs args) { var player = this.GetPlayer(args.Connection.RemoteUniqueIdentifier); var response = args.Message.ReadBoolean(); if (response == false) { Packet packet = new Packet(PacketType.MapDataPacket); packet.Message.Write(player.Map.GetMapData()); player.Connection.SendMessage(packet.Message, NetDeliveryMethod.ReliableOrdered, (int)ChannelTypes.WORLD); return; } // The player is now in the map. // Set their inMap variable to true. // This is to make sure they're able to actually see the map before any map updates occur. player.InMap = true; player.SendPlayerData(); // Send all of the players... foreach (var mapPlayer in player.Map.GetPlayers()) { if (mapPlayer == player) continue; Packet packet = new Packet(PacketType.PlayerDataPacket); packet.Message.Write(mapPlayer.GetPlayerData()); player.Connection.SendMessage(packet.Message, NetDeliveryMethod.ReliableOrdered, (int)ChannelTypes.WORLD); } // Send all of the items currently spawned in the map. foreach (var mapItem in player.Map.GetMapItems()) { Packet packet = new Packet(PacketType.SpawnMapItemPacket); packet.Message.Write(mapItem.Item.Name); packet.Message.Write(mapItem.Item.TextureNumber); packet.Message.Write(mapItem.Position); packet.Message.Write(mapItem.SpawnDuration); player.Connection.SendMessage(packet.Message, NetDeliveryMethod.ReliableOrdered, (int)ChannelTypes.WORLD); } }
private void HandleChatMessage(PacketReceivedEventArgs args) { var player = this.GetPlayer(args.Connection.RemoteUniqueIdentifier); var chatMessage = player.Name + " says: " + args.Message.ReadString(); Packet packet = new Packet(PacketType.ChatMessagePacket); packet.Message.Write(chatMessage); player.Map.SendPacket(packet, NetDeliveryMethod.Unreliable, ChannelTypes.CHAT); }
public void SendVitals() { Packet packet = new Packet(PacketType.UpdatePlayerStatsPacket); packet.Message.Write(this.GetStat(Stats.Health)); packet.Message.Write(0); this.Connection.SendMessage(packet.Message, NetDeliveryMethod.ReliableOrdered, (int)ChannelTypes.WORLD); }
public void SendPlayerData() { Packet packet = new Packet(PacketType.PlayerDataPacket); packet.Message.Write(this.GetPlayerData()); this.Connection.SendMessage(packet.Message, NetDeliveryMethod.ReliableOrdered, (int)ChannelTypes.WORLD); this.SendInventory(); this.SendVitals(); }
public void SendMessage(string message) { Packet packet = new Packet(PacketType.ChatMessagePacket); packet.Message.Write(message); this.Connection.SendMessage(packet.Message, NetDeliveryMethod.Unreliable, (int)ChannelTypes.CHAT); }
public void SendInventory() { Packet packet = new Packet(PacketType.UpdateInventoryPacket); packet.Message.Write(this.InventoryCount); foreach (var item in this.GetInventory()) { packet.Message.Write(item.Name); packet.Message.Write(item.TextureNumber); } this.Connection.SendMessage(packet.Message, NetDeliveryMethod.ReliableOrdered, (int)ChannelTypes.WORLD); }
public void MoveTo(Vector vector, byte direction) { this.Direction = direction; //// If the tile is blocked, we obviously can't move to it. if (vector.X >= 0 && vector.Y >= 0 && vector.X < this.Map.MapWidth && vector.Y < this.Map.MapHeight && !this.Map.GetTile(vector).Blocked && !this.Map.GetTile(vector).IsOccupied) { // Unblock the previous tile so that another entity may occupy it. this.Map.GetTile(this.Position).IsOccupied = false; // Change our character's position to the new position. this.Position = vector; // Block the tile that we're moving to. this.Map.GetTile(vector).IsOccupied = true; } Packet packet = new Packet(PacketType.PlayerMovementPacket); packet.Message.Write(this.PlayerIndex); packet.Message.Write(this.Position); packet.Message.Write(direction); //this.Connection.SendMessage(packet, NetDeliveryMethod.ReliableOrdered, (int)ChannelTypes.WORLD); // SENDTOMAP }
public void JoinMap(Map map) { if (this.Map != null) this.LeaveMap(false); map.AddPlayer(this); this.Map = map; this.MapNum = ContentManager.Instance.MapManager.GetMapIndex(map); this.InMap = false; Packet packet = new Packet(PacketType.MapCheckPacket); packet.Message.Write(this.Map.Name); packet.Message.Write(this.Map.Version); this.Connection.SendMessage(packet.Message, NetDeliveryMethod.ReliableOrdered, (int)ChannelTypes.WORLD); }
public void EnterGame() { this.LoggedIn = true; this.SetStat(Stats.Health, 100); if (this.MapNum < 0) this.MapNum = 0; this.JoinMap(ContentManager.Instance.MapManager.GetMap(this.MapNum)); Console.WriteLine(this.Name + " has logged in!"); // var chatMessagePacket = new ChatMessagePacket(); // chatMessagePacket.WriteData(this.Name + " has logged in!"); // PlayerManager.Instance.BroadcastPacket(chatMessagePacket); var packet = new Packet(PacketType.ChatMessagePacket); packet.Message.Write(string.Format("Welcome to {0}, {1}", ServerConfiguration.GameName, this.Name)); this.Connection.SendMessage(packet.Message, NetDeliveryMethod.Unreliable, (int)ChannelTypes.CHAT); }
public void SpawnItem(Item item, Vector position, int spawnTime) { var mapItem = new MapItem(item, position, spawnTime); this.items.Add(mapItem); Packet packet = new Packet(PacketType.SpawnMapItemPacket); packet.Message.Write(mapItem.Item.Name); packet.Message.Write(mapItem.Item.TextureNumber); packet.Message.Write(mapItem.Position); packet.Message.Write(mapItem.SpawnDuration); this.SendPacket(packet, NetDeliveryMethod.ReliableOrdered, ChannelTypes.WORLD, true); }
public void SendPacket(Packet packet, NetDeliveryMethod method, ChannelTypes type, bool checkPlayerLoaded = false) { foreach (var player in this.players) { if (checkPlayerLoaded) { if (!player.InMap) continue; } player.Connection.SendMessage(packet.Message, method, (int)type); } }
public void RemovePlayer(Player player, bool leftGame) { // Free up the tile. this.GetTile(player.Position).IsOccupied = false; // Remove the player from the map player list. this.players.Remove(player); Packet packet = new Packet(PacketType.LogoutPacket); packet.Message.Write(player.PlayerIndex); this.SendPacket(packet, NetDeliveryMethod.ReliableOrdered, ChannelTypes.WORLD); if (!leftGame) return; foreach (var mapPlayer in this.players) { mapPlayer.SendMessage(player.Name + " has left " + ServerConfiguration.GameName + "."); } }
public void RemoveMapItem(MapItem mapItem) { Packet packet = new Packet(PacketType.DespawnMapItemPacket); packet.Message.Write(mapItem.Position); this.SendPacket(packet, NetDeliveryMethod.ReliableOrdered, ChannelTypes.WORLD, true); this.items.Remove(mapItem); }