package WayofTime.bloodmagic.api.soul;

import net.minecraft.item.ItemStack;

public interface IDemonWillGem
{
    /**
     * 
     * @param willGemStack
     *        - The ItemStack for this demon will gem.
     * @param willStack
     *        - The ItemStack for the will. Item should extend IDemonWill
     * @return - The remainder willStack after the will has been absorbed into
     *         the gem. Return null if there is no will left in the stack.
     */
    ItemStack fillDemonWillGem(ItemStack willGemStack, ItemStack willStack);

    /**
     * Returns the number of souls that are left in the soul gem. Returns a
     * double because souls can be fractionally drained.
     * 
     */
    double getWill(EnumDemonWillType type, ItemStack willGemStack);

    void setWill(EnumDemonWillType type, ItemStack willGemStack, double amount);

    int getMaxWill(EnumDemonWillType type, ItemStack willGemStack);

    double drainWill(EnumDemonWillType type, ItemStack stack, double drainAmount, boolean doDrain);

    double fillWill(EnumDemonWillType type, ItemStack stack, double fillAmount, boolean doFill);
}
