Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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;
            }
        }
Пример #3
0
        /// <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);
        }
Пример #4
0
 internal QuestChoiceRewardInterface(int parItemId, int parItemCount, ref ItemCacheEntry parItemEntry)
     : base(parItemId, parItemCount, ref parItemEntry)
 {
 }
Пример #5
0
 internal QuestChoiceReward(int parItemId, int parItemCount, ref ItemCacheEntry parEntry)
 {
     ItemId = parItemId;
     Count  = parItemCount;
     Info   = parEntry;
 }