private Item LoadDefensiveItem(ItemDefensiveStatsSaveData _data, ItemsDataBase _itemsDataBase)
    {
        DefensiveStatsAlteration.ModificationType statType = (DefensiveStatsAlteration.ModificationType)_data.statType;
        Item defItem = null;

        switch (statType)
        {
        case DefensiveStatsAlteration.ModificationType.HealthMax:
            defItem = _itemsDataBase.hpMax.FromSaveData(_data);
            break;

        case DefensiveStatsAlteration.ModificationType.HealthRegen:
            defItem = _itemsDataBase.hpRegeneration.FromSaveData(_data);
            break;

        case DefensiveStatsAlteration.ModificationType.StaminaMax:
            defItem = _itemsDataBase.staminaMax.FromSaveData(_data);
            break;

        case DefensiveStatsAlteration.ModificationType.StaminaRegen:
            defItem = _itemsDataBase.staminaRegeneration.FromSaveData(_data);
            break;

        case DefensiveStatsAlteration.ModificationType.Armor:
            defItem = _itemsDataBase.armor.FromSaveData(_data);
            break;

        default:
            break;
        }

        return(defItem);
    }
    /// <summary>
    /// Crete an item based on the datas of a saved item.
    /// </summary>
    /// <param name="_data"></param>
    public Item FromSaveData(ItemDefensiveStatsSaveData _data)
    {
        Item_DefensiveStats      instance;
        DefensiveStatsAlteration _statsAlteration;

        instance = Instantiate(this) as Item_DefensiveStats;

        instance.name      = _data.name;
        instance.rarityStr = _data.rarity;

        instance.isSaved   = _data.isSaved == 1;
        instance.isEquiped = _data.isEquiped == 1;

        instance.slotIndex = _data.slotIndex;

        _statsAlteration            = new DefensiveStatsAlteration();
        _statsAlteration.type       = (DefensiveStatsAlteration.ModificationType)_data.statType;
        _statsAlteration.finalValue = _data.statsValue;

        instance.statAlteration = _statsAlteration;

        instance.sellPrice = _data.sellPrice;
        instance.buyPrice  = _data.buyPrice;

        return(instance);
    }
    /// <summary>
    /// Copy the current item to a saveable item.
    /// </summary>
    /// <returns></returns>
    public ItemDefensiveStatsSaveData ToSaveData()
    {
        ItemDefensiveStatsSaveData data;

        data = new ItemDefensiveStatsSaveData();

        data.name   = name;
        data.rarity = rarityStr;

        data.itemType = (int)type;

        data.isSaved   = isSaved ? 1 : 0;
        data.isEquiped = isEquiped ? 1 : 0;

        data.slotIndex = slotIndex;

        data.statType   = (int)statAlteration.type;
        data.statsValue = statAlteration.finalValue;

        data.sellPrice = sellPrice;
        data.buyPrice  = buyPrice;

        return(data);
    }