public void Packet_MapItemReply(Packet packet, Simulator sim) { MapItemReplyPacket reply = (MapItemReplyPacket)packet; Hashtable hash = new Hashtable(); hash.Add("MessageType", "MapItems"); List <Hashtable> items = new List <Hashtable>(); hash.Add("ItemType", reply.RequestData.ItemType); foreach (MapItemReplyPacket.DataBlock data in reply.Data) { Hashtable itemhash = new Hashtable(); itemhash.Add("Name", Helpers.FieldToUTF8String(data.Name)); itemhash.Add("X", data.X); itemhash.Add("Y", data.Y); itemhash.Add("Extra", data.Extra); itemhash.Add("Extra2", data.Extra2); itemhash.Add("ID", data.ID); items.Add(itemhash); } hash.Add("Items", items); enqueue(hash); }
public void Packet_MapItemReply(object sender, PacketReceivedEventArgs e) { MapItemReplyPacket reply = (MapItemReplyPacket)e.Packet; Hashtable hash = new Hashtable(); hash.Add("MessageType", "MapItems"); List <Hashtable> items = new List <Hashtable>(); hash.Add("ItemType", reply.RequestData.ItemType); foreach (MapItemReplyPacket.DataBlock data in reply.Data) { Hashtable itemhash = new Hashtable(); itemhash.Add("Name", Utils.BytesToString(data.Name)); itemhash.Add("X", data.X); itemhash.Add("Y", data.Y); itemhash.Add("Extra", data.Extra); itemhash.Add("Extra2", data.Extra2); itemhash.Add("ID", data.ID); items.Add(itemhash); } hash.Add("Items", items); enqueue(hash); }
/// <summary>Process an incoming packet and raise the appropriate events</summary> /// <param name="sender">The sender</param> /// <param name="e">The EventArgs object containing the packet data</param> protected void MapItemReplyHandler(object sender, PacketReceivedEventArgs e) { if (m_GridItems != null) { MapItemReplyPacket reply = (MapItemReplyPacket)e.Packet; GridItemType type = (GridItemType)reply.RequestData.ItemType; List <MapItem> items = new List <MapItem>(); foreach (var data in reply.Data) { string name = Utils.BytesToString(data.Name); switch (type) { case GridItemType.AgentLocations: MapAgentLocation location = new MapAgentLocation(); location.GlobalX = data.X; location.GlobalY = data.Y; location.Identifier = name; location.AvatarCount = data.Extra; items.Add(location); break; case GridItemType.Classified: //FIXME: Logger.Log("FIXME", Helpers.LogLevel.Error, Client); break; case GridItemType.LandForSale: MapLandForSale landsale = new MapLandForSale(); landsale.GlobalX = data.X; landsale.GlobalY = data.Y; landsale.ID = data.ID; landsale.Name = name; landsale.Size = data.Extra; landsale.Price = data.Extra2; items.Add(landsale); break; case GridItemType.MatureEvent: MapMatureEvent matureEvent = new MapMatureEvent(); matureEvent.GlobalX = data.X; matureEvent.GlobalY = data.Y; matureEvent.Description = name; matureEvent.Flags = (DirectoryManager.EventFlags)data.Extra2; items.Add(matureEvent); break; case GridItemType.PgEvent: MapPGEvent PGEvent = new MapPGEvent(); PGEvent.GlobalX = data.X; PGEvent.GlobalY = data.Y; PGEvent.Description = name; PGEvent.Flags = (DirectoryManager.EventFlags)data.Extra2; items.Add(PGEvent); break; case GridItemType.Popular: //FIXME: Logger.Log("FIXME", Helpers.LogLevel.Error, Client); break; case GridItemType.Telehub: MapTelehub teleHubItem = new MapTelehub(); teleHubItem.GlobalX = data.X; teleHubItem.GlobalY = data.Y; items.Add(teleHubItem); break; case GridItemType.AdultLandForSale: MapAdultLandForSale adultLandsale = new MapAdultLandForSale(); adultLandsale.GlobalX = data.X; adultLandsale.GlobalY = data.Y; adultLandsale.ID = data.ID; adultLandsale.Name = name; adultLandsale.Size = data.Extra; adultLandsale.Price = data.Extra2; items.Add(adultLandsale); break; case GridItemType.AdultEvent: MapAdultEvent adultEvent = new MapAdultEvent(); adultEvent.GlobalX = data.X; adultEvent.GlobalY = data.Y; adultEvent.Description = Utils.BytesToString(data.Name); adultEvent.Flags = (DirectoryManager.EventFlags)data.Extra2; items.Add(adultEvent); break; default: Logger.Log("Unknown map item type " + type, Helpers.LogLevel.Warning, Client); break; } } OnGridItems(new GridItemsEventArgs(type, items)); } }
private void MapItemReplyHandler(Packet packet, Simulator simulator) { if (OnGridItems != null) { MapItemReplyPacket reply = (MapItemReplyPacket)packet; GridItemType type = (GridItemType)reply.RequestData.ItemType; List <GridItem> items = new List <GridItem>(); for (int i = 0; i < reply.Data.Length; i++) { string name = Helpers.FieldToUTF8String(reply.Data[i].Name); switch (type) { case GridItemType.AgentLocations: GridAgentLocation location = new GridAgentLocation(); location.GlobalX = reply.Data[i].X; location.GlobalY = reply.Data[i].Y; location.Identifier = name; location.AvatarCount = reply.Data[i].Extra; items.Add(location); break; case GridItemType.Classified: //FIXME: Logger.Log("FIXME", Helpers.LogLevel.Error, Client); break; case GridItemType.LandForSale: //FIXME: Logger.Log("FIXME", Helpers.LogLevel.Error, Client); break; case GridItemType.MatureEvent: case GridItemType.PgEvent: //FIXME: Logger.Log("FIXME", Helpers.LogLevel.Error, Client); break; case GridItemType.Popular: //FIXME: Logger.Log("FIXME", Helpers.LogLevel.Error, Client); break; case GridItemType.Telehub: //FIXME: Logger.Log("FIXME", Helpers.LogLevel.Error, Client); break; default: Logger.Log("Unknown map item type " + type, Helpers.LogLevel.Warning, Client); break; } } try { OnGridItems(type, items); } catch (Exception e) { Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e); } } }