public void AddDrop(Drop drop) { ushort key = 0; if (availableDropKeys.Count > 0) { key = availableDropKeys.Dequeue(); } else { if (dropIndexer == ushort.MaxValue) { Log.WriteLine(LogLevel.Warn, "Drop buffer overflow at map {0}.", this.MapInfo.ShortName); return; } else { key = dropIndexer++; } } if (Drops.TryAdd(key, drop)) { drop.ID = key; drop.MapSector = GetSectorByPos(drop.Position); drop.MapSector.AddDrop(drop); } else { Log.WriteLine(LogLevel.Warn, "Failed to add drop at map {0}.", this.MapInfo.ShortName); } }