/// <summary> /// Aktualisiert ein vorhandenes Item (großes Update) /// </summary> /// <param name="id">Id</param> /// <param name="reader">Binary Reader für den Serializer</param> private void ItemKeyUpdate(int id, BinaryReader reader) { ItemCacheEntry entry = items[id]; Item item = entry.Item; item.DeserializeKeyUpdate(reader); }
/// <summary> /// Verschiebt ein Item von einem Container zu einem anderen (Area oder Inventar) /// </summary> /// <param name="id">Id</param> /// <param name="oldArea">Quellarea (oder empty falls Inventar)</param> /// <param name="newArea">Zielarea (oder empty falls inventar)</param> /// <param name="oldInventory">QuellInventar (oder null, falls Area)</param> /// <param name="newInventory">ZielInventar (oder null, falls Inventar)</param> private void ItemMove(int id, string oldArea, string newArea, int?oldInventory, int?newInventory) { ItemCacheEntry entry = items[id]; Item item = entry.Item; // Remove (Area) if (!string.IsNullOrEmpty(oldArea)) { Area area = game.Simulation.World.Areas.Single(a => a.Name.Equals(oldArea)); if (area.Items.Contains(item)) { area.Items.Remove(item); } } // Remove (Inventar) if (oldInventory.HasValue) { IInventory inventory = items[oldInventory.Value].Item as IInventory; if (inventory.Inventory.Contains(item)) { inventory.Inventory.Remove(item); } } // Insert (Area) if (!string.IsNullOrEmpty(newArea)) { Area area = game.Simulation.World.Areas.Single(a => a.Name.Equals(newArea)); if (!area.Items.Contains(item)) { area.Items.Add(item); } entry.Area = area; entry.Inventory = null; } // Insert (Inventar) if (newInventory.HasValue) { IInventory inventory = items[newInventory.Value].Item as IInventory; if (!inventory.Inventory.Contains(item)) { inventory.Inventory.Add(item); } entry.Area = null; entry.Inventory = inventory; } }
/// <summary> /// Entfernt aufgrund einer Server-Nachricht ein Item. /// </summary> /// <param name="id">Id</param> private void ItemRemove(int id) { ItemCacheEntry entry = items[id]; Item item = entry.Item; if (entry.Area != null) { entry.Area.Items.Remove(item); } if (entry.Inventory != null) { entry.Inventory.Inventory.Remove(item); } items.Remove(id); }
internal QuestChoiceRewardInterface(int parItemId, int parItemCount, ref ItemCacheEntry parItemEntry) : base(parItemId, parItemCount, ref parItemEntry) { }
internal QuestChoiceReward(int parItemId, int parItemCount, ref ItemCacheEntry parEntry) { ItemId = parItemId; Count = parItemCount; Info = parEntry; }