/// <summary> /// Tries to retrieve a(n) <see cref="IMmoItem"/> at the <see cref="slot"/>. /// </summary> /// <param name="slot"> The slot where the item is located </param> /// <param name="mmoItem"> The item at the slot </param> /// <returns> The result </returns> public bool TryGetItem(int slot, out IMmoItem mmoItem) { mmoItem = null; // range check if (slot < 0 || slot >= this.Size) { return(false); } return((mmoItem = this.slots[slot].Item) != null); }
/// <summary> /// Remove usable items /// </summary> public void RemoveUsableItem(IMmoItem item, int count) { int localCount; if (usableItemCounts.TryGetValue(item.Id, out localCount)) { if (localCount <= count) { this.usableItemCounts.Remove(item.Id); this.spells.Remove(item.SpellId); } else { this.usableItemCounts[item.Id] = localCount - count; } } }
/// <summary> /// Add usable items /// </summary> public void AddUsableItem(IMmoItem item, int count) { int localCount; if (false == usableItemCounts.TryGetValue(item.Id, out localCount)) { SpellData spellInfo; if (owner.CurrentZone.World.ItemCache.TryGetSpellData(item.SpellId, out spellInfo)) { var spell = new Spell(spellInfo, this.owner); this.AddSpellInternal(spell); this.usableItemCounts.Add(item.Id, count); } } else { this.usableItemCounts[item.Id] = localCount + count; } }