/// <summary>
        /// Returns the specific item that was parsed before to the itemForSave
        /// </summary>
        /// <param name="itemForSave"></param>
        /// <returns></returns>
        public Item ConvertFromItemForSave(ItemForSave itemForSave)
        {
            if (itemForSave == null)
            {
                return(null);
            }

            switch (itemForSave.itemType)
            {
            case Enums.ItemType.Armor:
                return(CreateArmorItem(itemForSave));

            case Enums.ItemType.Weapon:
                return(CreateWeaponItem(itemForSave));

            case Enums.ItemType.Consumable:
                return(CreateConsumableItem(itemForSave));

            case Enums.ItemType.CraftMaterial:
                return(CreateCraftingMaterialItem(itemForSave));

            default:
                return(null);
            }
        }
 /// <summary>
 /// Set common properties for Item from given ItemForSave
 /// </summary>
 /// <param name="sourceItem"></param>
 /// <param name="targetItem"></param>
 private void SetCommonProperties(ItemForSave sourceItem, Item targetItem)
 {
     targetItem.itemName      = sourceItem.itemName;
     targetItem.icon          = sourceItem.GetSprite();
     targetItem.isDefaultItem = sourceItem.isDefaultItem;
     targetItem.itemType      = sourceItem.itemType;
 }
        /// <summary>
        /// Create an consumable item from a given itemForSave
        /// </summary>
        /// <param name="itemForSave"></param>
        /// <returns></returns>
        private ConsumableItem CreateConsumableItem(ItemForSave itemForSave)
        {
            ConsumableItem item = new ConsumableItem();

            SetCommonProperties(itemForSave, item);

            return(item);
        }
        /// <summary>
        /// Creates an itemForSave for a given CraftingMaterialItem
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        private ItemForSave ConvertFromItem(CraftingMaterialItem item)
        {
            ItemForSave itemForSave = new ItemForSave();

            SetCommonProperties(item, itemForSave);

            return(itemForSave);
        }
        /// <summary>
        /// Creates an itemForSave for a given ConsumableItem
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        private ItemForSave ConvertFromItem(ConsumableItem item)
        {
            ItemForSave itemForSave = new ItemForSave();

            SetCommonProperties(item, itemForSave);

            return(itemForSave);
        }
        /// <summary>
        /// Create an crafting material item from a given itemForSave
        /// </summary>
        /// <param name="itemForSave"></param>
        /// <returns></returns>
        private CraftingMaterialItem CreateCraftingMaterialItem(ItemForSave itemForSave)
        {
            CraftingMaterialItem item = new CraftingMaterialItem();

            SetCommonProperties(itemForSave, item);

            return(item);
        }
        /// <summary>
        /// Create an weapon item from a given itemForSave
        /// </summary>
        /// <param name="itemForSave"></param>
        /// <returns></returns>
        private WeaponItem CreateWeaponItem(ItemForSave itemForSave)
        {
            WeaponItem item = new WeaponItem();

            item.SetDamage(itemForSave.damageValue);
            item.SetEndurance(itemForSave.enduranceValue);

            SetCommonProperties(itemForSave, item);

            return(item);
        }
        /// <summary>
        /// Creates an itemForSave for a given WeaponItem
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        private ItemForSave ConvertFromItem(WeaponItem item)
        {
            ItemForSave itemForSave = new ItemForSave();

            itemForSave.damageValue    = item.GetDamage();
            itemForSave.enduranceValue = item.GetEndurance();

            SetCommonProperties(item, itemForSave);

            return(itemForSave);
        }
        /// <summary>
        /// Create an armor item from a given itemForSave
        /// </summary>
        /// <param name="itemForSave"></param>
        /// <returns></returns>
        private ArmorItem CreateArmorItem(ItemForSave itemForSave)
        {
            ArmorItem item = new ArmorItem();

            item.armorValue  = itemForSave.armorValue;
            item.damageValue = itemForSave.damageValue;
            item.armor_Type  = itemForSave.armor_Type;

            SetCommonProperties(itemForSave, item);

            return(item);
        }
        /// <summary>
        /// Creates an itemForSave for a given ArmrorItem
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        private ItemForSave ConvertFromItem(ArmorItem item)
        {
            ItemForSave itemForSave = new ItemForSave();

            itemForSave.armorValue  = item.armorValue;
            itemForSave.damageValue = item.damageValue;
            itemForSave.armor_Type  = item.armor_Type;

            SetCommonProperties(item, itemForSave);

            return(itemForSave);
        }
        /// <summary>
        /// Converts items to itemsForSave as preparation for save
        /// </summary>
        /// <param name="items"></param>
        /// <param name="itemForSaveConverter"></param>
        /// <returns></returns>
        private ItemForSave[] PrepareItemsForSave(Item[] items, ItemForSaveConverter itemForSaveConverter)
        {
            int length = items.Length;

            ItemForSave[] result = new ItemForSave[length];

            for (int i = 0; i < length; i++)
            {
                result[i] = itemForSaveConverter.ConvertFromItem(items[i]);
            }

            return(result);
        }