Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        /// <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));
            }
        }
Exemple #4
0
        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); }
            }
        }