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); }
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; }
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; } } } }