public void addOffer(GEItem offer)
        {
            Dictionary <int, GEItem[]> offers = offer is BuyOffer ? buyOffers : sellOffers;

            lock (offers)
            {
                if (!offers.ContainsKey(offer.getDisplayItem()))
                {
                    offers.Add(offer.getDisplayItem(), new GEItem[1]);
                }

                foreach (KeyValuePair <int, GEItem[]> eachOffer in offers)
                {
                    if (eachOffer.Key == offer.getDisplayItem()) //item shown in GE.
                    {
                        bool space = false;
                        for (int i = 0; i < eachOffer.Value.Length; i++)
                        {
                            if (eachOffer.Value[i] == null)
                            {
                                space = true;
                                eachOffer.Value[i] = offer;
                                break;
                            }
                        }
                        if (!space)
                        {
                            GEItem[] items    = eachOffer.Value;
                            GEItem[] newItems = new GEItem[items.Length + 1];
                            int      ptr      = 0;
                            for (int i = 0; i < items.Length; i++)
                            {
                                if (items != null)
                                {
                                    newItems[ptr++] = items[i];
                                }
                            }
                            newItems[ptr] = offer;
                            if (!offers.ContainsKey(offer.getDisplayItem()))
                            {
                                offers.Add(offer.getDisplayItem(), newItems);
                            }
                            else
                            {
                                offers[offer.getDisplayItem()] = newItems;
                            }
                        }
                        break;
                    }
                }
            }
        }
        public bool removeOffer(GEItem offer)
        {
            Dictionary <int, GEItem[]> offers = offer is BuyOffer ? buyOffers : sellOffers;

            lock (offers)
            {
                if (!offers.ContainsKey(offer.getDisplayItem()))
                {
                    misc.WriteError("Invalid GE item removal = Name: " + offer.getPlayerName() + " Item: " + offer.getItem() + " Amount: " + offer.getTotalAmount() + " Price: " + offer.getPriceEach());
                    return(false);
                }
                foreach (KeyValuePair <int, GEItem[]> eachOffer in offers)
                {
                    if (eachOffer.Key == offer.getDisplayItem())
                    {
                        for (int i = 0; i < eachOffer.Value.Length; i++)
                        {
                            if (eachOffer.Value[i] != null)
                            {
                                if (eachOffer.Value[i].Equals(offer))
                                {
                                    eachOffer.Value[i] = null;
                                    int entries = 0;
                                    for (int j = 0; j < eachOffer.Value.Length; j++)
                                    {
                                        if (eachOffer.Value[i] != null)
                                        {
                                            entries++;
                                        }
                                    }
                                    if (entries == 0)
                                    {
                                        offers.Remove(offer.getDisplayItem());
                                    }
                                    return(true);
                                }
                            }
                        }
                        return(false);
                    }
                }
            }
            return(false);
        }
示例#3
0
 public bool removeOffer(GEItem offer)
 {
     Dictionary<int, GEItem[]> offers = offer is BuyOffer ? buyOffers : sellOffers;
     lock (offers)
     {
         if (!offers.ContainsKey(offer.getDisplayItem()))
         {
             misc.WriteError("Invalid GE item removal = Name: " + offer.getPlayerName() + " Item: " + offer.getItem() + " Amount: " + offer.getTotalAmount() + " Price: " + offer.getPriceEach());
             return false;
         }
         foreach (KeyValuePair<int, GEItem[]> eachOffer in offers)
         {
             if (eachOffer.Key == offer.getDisplayItem())
             {
                 for (int i = 0; i < eachOffer.Value.Length; i++)
                 {
                     if (eachOffer.Value[i] != null)
                     {
                         if (eachOffer.Value[i].Equals(offer))
                         {
                             eachOffer.Value[i] = null;
                             int entries = 0;
                             for (int j = 0; j < eachOffer.Value.Length; j++)
                             {
                                 if (eachOffer.Value[i] != null)
                                 {
                                     entries++;
                                 }
                             }
                             if (entries == 0)
                             {
                                 offers.Remove(offer.getDisplayItem());
                             }
                             return true;
                         }
                     }
                 }
                 return false;
             }
         }
     }
     return false;
 }
示例#4
0
        public void addOffer(GEItem offer)
        {
            Dictionary<int, GEItem[]> offers = offer is BuyOffer ? buyOffers : sellOffers;
            lock (offers)
            {
                if (!offers.ContainsKey(offer.getDisplayItem()))
                    offers.Add(offer.getDisplayItem(), new GEItem[1]);

                foreach (KeyValuePair<int, GEItem[]> eachOffer in offers)
                {
                    if (eachOffer.Key == offer.getDisplayItem()) //item shown in GE.
                    {
                        bool space = false;
                        for (int i = 0; i < eachOffer.Value.Length; i++)
                        {
                            if (eachOffer.Value[i] == null)
                            {
                                space = true;
                                eachOffer.Value[i] = offer;
                                break;
                            }
                        }
                        if (!space)
                        {
                            GEItem[] items = eachOffer.Value;
                            GEItem[] newItems = new GEItem[items.Length + 1];
                            int ptr = 0;
                            for (int i = 0; i < items.Length; i++)
                            {
                                if (items != null)
                                {
                                    newItems[ptr++] = items[i];
                                }
                            }
                            newItems[ptr] = offer;
                            if (!offers.ContainsKey(offer.getDisplayItem()))
                                offers.Add(offer.getDisplayItem(), newItems);
                            else
                                offers[offer.getDisplayItem()] = newItems;
                        }
                        break;
                    }
                }
            }
        }