package postInit.machines

import gregtech.api.capability.impl.AbstractRecipeLogic
import gregtech.api.recipes.Recipe
import gregtech.api.metatileentity.MetaTileEntity
import org.jetbrains.annotations.NotNull

class FissionReactorRecipeLogic extends AbstractRecipeLogic {

    FissionReactorRecipeLogic(MetaTileEntity metaTileEntity) {
        super(metaTileEntity)
    }

    @Override
    protected boolean canProgressRecipe() {
        return currentRecipe != null
    }

    @Override
    protected void setupRecipe(@NotNull Recipe recipe) {
        this.currentRecipe = recipe
        this.progressTime = 0
        this.maxProgressTime = recipe.getDuration()
    }

    @Override
    protected void updateRecipeProgress() {
        if (!isWorking()) return

        progressTime++

        long generated = currentRecipe.getEUt()
        metaTileEntity.energyContainer.addEnergy(generated)

        if (progressTime >= maxProgressTime) {
            completeRecipe()
        }
    }

    @Override
    boolean drawEnergy(int amount, boolean simulate) {
        return true
    }

    @Override
    long getEnergyInputPerSecond() {
        return 0L
    }

    @Override
    long getEnergyStored() {
        return metaTileEntity.energyContainer.energy
    }

    @Override
    long getEnergyCapacity() {
        return metaTileEntity.energyContainer.capacity
    }

    @Override
    long getMaxVoltage() {
        return Long.MAX_VALUE
    }
}
