Beispiel #1
0
        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);
        }
Beispiel #6
0
 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);
 }
Beispiel #7
0
        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();
        }
Beispiel #8
0
 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);
 }
Beispiel #9
0
 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);
 }
Beispiel #10
0
        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
        }
Beispiel #11
0
        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);
        }
Beispiel #12
0
        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);
        }
Beispiel #13
0
        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);
        }
Beispiel #14
0
        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);
            }
        }
Beispiel #15
0
        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 + ".");
            }
        }
Beispiel #16
0
        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);
        }