Пример #1
0
    // Returns the strongest weapon in the inventory of a given type.
    public IItem GetStrongestWeapon(EquipableItem itemType)
    {
        IItem topPick       = null;
        int   topPickDamage = 0;

        foreach (KeyValuePair <int, int> itemPair in items)
        {
            IItem item = itemManager.GetItem(itemPair.Key);

            if (item.HasBehavior(ItemBehaviorType.EQUIPABLE))
            {
                EquipableItemBehavior behavior = (EquipableItemBehavior)item.GetBehavior(ItemBehaviorType.EQUIPABLE);

                if (behavior.itemType == itemType)
                {
                    if (behavior.item.Damage > topPickDamage)
                    {
                        topPick = item;
                    }
                }
            }
        }

        return(topPick);
    }
Пример #2
0
    // Duplicate an item. This is a hack to enable managing equipables as
    // separate items with individual state.
    //
    // WARNING: This is intended to be used by equipable items only.
    public IItem DuplicateItem()
    {
        IItem item = new Item(Id);

        item.Name           = Name;
        item.Description    = Description;
        item.Damage         = Damage;
        item.Durability     = Durability;
        item.BaseDurability = BaseDurability;

        if (behaviors.ContainsKey(ItemBehaviorType.EQUIPABLE))
        {
            EquipableItemBehavior originalBehavior  = (EquipableItemBehavior)behaviors[ItemBehaviorType.EQUIPABLE];
            IItemBehavior         duplicateBehavior = originalBehavior.DuplicateBehavior();
            item.AddBehavior(duplicateBehavior);
        }

        return(item);
    }