private void DespawnMapItem(PacketReceivedEventArgs args) { var mapItemX = args.Message.ReadInt32(); var mapItemY = args.Message.ReadInt32(); if (Client.InGame) { this.Map.RemoveMapItem(mapItemX, mapItemY); } }
private void HandleMapCheck(PacketReceivedEventArgs args) { var mapName = args.Message.ReadString(); var mapVersion = args.Message.ReadInt32(); var mapExistence = File.Exists(Constants.FILEPATH_CACHE + "Maps/" + mapName + ".map"); var mapVersionMatch = false; if (mapExistence == true) { this.Map = new World.Map(); this.Map.LoadCache(mapName); mapVersionMatch = (this.Map.Version == mapVersion); } var net = ServiceLocator.NetManager; var packet = new Packet(PacketType.MapCheckPacket); packet.Message.Write(mapExistence & mapVersionMatch); net.SendMessage(packet.Message, Lidgren.Network.NetDeliveryMethod.ReliableOrdered, ChannelTypes.WORLD); }
private void HandleInventoryUpdate(PacketReceivedEventArgs args) { var inventoryItemCount = args.Message.ReadInt32(); var player = this.GetPlayer(this.ClientID); player.ClearInventory(); for (int i = 0; i < inventoryItemCount; i++) { var itemName = args.Message.ReadString(); var itemTextureNum = args.Message.ReadInt32(); player.AddInventoryItem(new Item(itemName, itemTextureNum)); } }
private void HandleUpdateStats(PacketReceivedEventArgs args) { var playerHp = args.Message.ReadInt32(); var playerMp = args.Message.ReadInt32(); this.GetPlayer(this.ClientID).Hp = playerHp; }
private void HandleRegistration(PacketReceivedEventArgs args) { // Alright, so when the player rec. the go ahead to get into the game, this code will go through if (args.Message.ReadBoolean()) { (ServiceLocator.ScreenManager.ActiveScreen as MenuScreen).SetMenuStatus(args.Message.ReadString()); this.ClientID = args.Message.ReadInt64(); ServiceLocator.ScreenManager.SetActiveScreen("gameScreen"); } else { // This should NEVER be true if all is well. Debug.Assert(ServiceLocator.ScreenManager.ActiveScreen is MenuScreen, "Graphical transition error!"); (ServiceLocator.ScreenManager.ActiveScreen as MenuScreen).SetMenuStatus(args.Message.ReadString()); } }
private void HandlePlayerMovement(PacketReceivedEventArgs args) { var id = args.Message.ReadInt64(); var x = args.Message.ReadInt32(); var y = args.Message.ReadInt32(); var direction = (Directions)args.Message.ReadByte(); this.GetPlayer(id).Move(x, y, direction); }
private void HandlePlayerData(PacketReceivedEventArgs args) { var id = args.Message.ReadInt64(); var playerName = args.Message.ReadString(); var level = args.Message.ReadInt32(); var positionX = args.Message.ReadInt32(); var positionY = args.Message.ReadInt32(); var direction = args.Message.ReadByte(); var textureNumber = args.Message.ReadInt32(); var player = new Player(ServiceLocator.ScreenManager.ActiveScreen.TextureManager.GetTexture("character" + textureNumber), new Vector2i(positionX, positionY)); this.AddPlayer(id, player); if (id == this.ClientID) { Client.InGame = true; } }
private void HandleLogout(PacketReceivedEventArgs args) { long clientID = args.Message.ReadInt64(); if (this.ClientID == clientID) { ServiceLocator.ScreenManager.SetActiveScreen("mainMenu"); this.ClearPlayers(); return; } this.RemovePlayer(clientID); }
private void HandleLogin(PacketReceivedEventArgs args) { if (args.Message.ReadBoolean()) { (ServiceLocator.ScreenManager.ActiveScreen as MenuScreen).SetMenuStatus(args.Message.ReadString()); this.ClientID = args.Message.ReadInt64(); ServiceLocator.ScreenManager.SetActiveScreen("gameScreen"); } else { // This should NEVER be true if all is well. Debug.Assert(ServiceLocator.ScreenManager.ActiveScreen is MenuScreen, "Graphical transition error!"); (ServiceLocator.ScreenManager.ActiveScreen as MenuScreen).SetMenuStatus(args.Message.ReadString()); } }
public void Update() { NetIncomingMessage message; while ((message = _netClient.ReadMessage()) != null) { switch (message.MessageType) { case NetIncomingMessageType.Data: PacketType packetType = (PacketType)message.ReadInt16(); if (_packetHandlers.ContainsKey(packetType)) { PacketReceivedEventArgs args = new PacketReceivedEventArgs(message); foreach (var handler in _packetHandlers[packetType]) handler.Invoke(args); } break; case NetIncomingMessageType.DiscoveryResponse: _netClient.Connect(message.SenderEndPoint); break; } _netClient.Recycle(message); } if (_packetCache.Count > 0 && _netClient.ConnectionStatus == NetConnectionStatus.Connected) { this.SendPacketCache(); } }
private void HandleChatMessage(PacketReceivedEventArgs args) { var message = args.Message.ReadString(); this.AddChatMessage(message, Color.White); }
private void HandleAlertMessage(PacketReceivedEventArgs args) { var alertTitle = args.Message.ReadString(); var alertMessage = args.Message.ReadString(); var alertX = args.Message.ReadInt32(); var alertY = args.Message.ReadInt32(); var r = args.Message.ReadByte(); var g = args.Message.ReadByte(); var b = args.Message.ReadByte(); var alertColor = new Color(r, g, b); this.DisplayAlert(alertTitle, alertMessage, alertX, alertY, alertColor); }
private void HandleMapData(PacketReceivedEventArgs args) { var map = new Map { Name = args.Message.ReadString(), Version = args.Message.ReadInt32() }; map.ResizeMap(args.Message.ReadInt32(), args.Message.ReadInt32()); for (int x = 0; x < map.Width; x++) { for (int y = 0; y < map.Height; y++) { map.SetTile(x, y, new Map.Tile()); map.GetTile(x, y).Blocked = args.Message.ReadBoolean(); foreach (Map.Layers layer in Enum.GetValues(typeof(Map.Layers))) { if (!args.Message.ReadBoolean()) continue; var textureNumber = args.Message.ReadInt32(); var left = args.Message.ReadInt32(); var top = args.Message.ReadInt32(); var width = args.Message.ReadInt32(); var height = args.Message.ReadInt32(); var textureRect = new IntRect(left, top, width, height); var tileSprite = new Sprite(ServiceLocator.ScreenManager.ActiveScreen.TextureManager.GetTexture("tileset" + textureNumber.ToString())) { TextureRect = textureRect }; map.GetTile(x, y).SetLayer(layer, new Map.Tile.Layer(tileSprite, x, y)); } } } var mapNpcCount = args.Message.ReadInt32(); for (int i = 0; i < mapNpcCount; i++) { var npc = new Npc() { Name = args.Message.ReadString(), Level = args.Message.ReadInt32(), Sprite = new Sprite(ServiceLocator.ScreenManager.ActiveScreen.TextureManager.GetTexture("npc" + args.Message.ReadInt32())), }; var position = args.Message.ReadVector(); npc.Position = new SFML.System.Vector2i(position.X, position.Y); } map.CacheMap(); this.Map = map; // Notify the server that we're now in the game. var net = ServiceLocator.NetManager; var packet = new Packet(PacketType.MapCheckPacket); packet.Message.Write(true); net.SendMessage(packet.Message, Lidgren.Network.NetDeliveryMethod.ReliableOrdered, ChannelTypes.WORLD); }
private void SpawnMapItem(PacketReceivedEventArgs args) { var name = args.Message.ReadString(); var textureNumber = args.Message.ReadInt32(); var x = args.Message.ReadInt32(); var y = args.Message.ReadInt32(); var duration = args.Message.ReadInt32(); var item = new Item(name, textureNumber) { Sprite = { Position = new Vector2f(x * 32, y * 32) } }; this.Map.SpawnMapItem(item, x, y, duration); }