Newer
Older
Beeriffic / src / main / java / com / watschman / beeriffic / bees / EnumSpecies.java
package com.watschman.beeriffic.bees;

import com.watschman.beeriffic.Beeriffic;
import forestry.api.apiculture.*;
import forestry.api.core.EnumHumidity;
import forestry.api.core.EnumTemperature;
import forestry.api.genetics.*;

public enum EnumSpecies {
    STONY("Stony", "Saxum", EnumBranches.STONUM, 0xffffff, 0x7a7a7a, EnumTemperature.COLD, EnumHumidity.NORMAL, false, true, false, true, false);

    private final EnumTemperature temperature;
    private final EnumHumidity humidity;

    private final IAlleleBeeSpeciesBuilder beeSpecies;

    private IAllele[] geneTemplate;

    EnumSpecies(
        String speciesName,
        String scientificName,
        IClassification beeBranch,
        int colorOutline,
        int colorBody,
        EnumTemperature lovedTemperature,
        EnumHumidity lovedHumidity,
        boolean isNocturnal,
        boolean doesHaveEffect,
        boolean isDominant,
        boolean isCounted,
        boolean isSecret
    ) {
        this.temperature = lovedTemperature;
        this.humidity = lovedHumidity;

        IBeeFactory beeFactory = BeeManager.beeFactory;
        this.beeSpecies = beeFactory.createSpecies(Beeriffic.MOD_ID, Beeriffic.MOD_ID + ".species" + speciesName, isDominant, Beeriffic.MOD_AUTHOR, Beeriffic.MOD_ID + ".species." + speciesName.toLowerCase(), Beeriffic.MOD_ID + ".species." + speciesName.toLowerCase() + ".description", beeBranch, scientificName, colorOutline, colorBody);

        this.beeSpecies.setHumidity(lovedHumidity);
        this.beeSpecies.setTemperature(lovedTemperature);

        if(!isCounted) {
            this.beeSpecies.setIsNotCounted();
        }

        if(isSecret) {
            this.beeSpecies.setIsSecret();
        }

        if(doesHaveEffect) {
            this.beeSpecies.setHasEffect();
        }

        if(isNocturnal) {
            this.beeSpecies.setNocturnal();
        }

        this.beeSpecies.build();
    }

    public IAllele[] getGeneTemplate() {
        return this.geneTemplate;
    }

    public IAlleleBeeSpecies getBeeSpecies() {
        return (IAlleleBeeSpecies)this.beeSpecies;
    }

    public void registerGeneTemplate() {
        this.geneTemplate = BeeGenes.getGeneTemplate(this);
        BeeManager.beeRoot.registerTemplate(this.getBeeSpecies().getUID(), this.geneTemplate);
    }

    // (>^.^)> Do I even need those down there? <(^.^<)

    public boolean canWorkInCurrentTemperature(EnumTemperature currentTemperature) {
        return AlleleManager.climateHelper.isWithinLimits(currentTemperature, this.temperature, ((IAlleleTolerance)this.geneTemplate[EnumBeeChromosome.TEMPERATURE_TOLERANCE.ordinal()]).getValue());
    }

    public boolean canWorkInCurrentHumidity(EnumHumidity currentHumidity) {
        return AlleleManager.climateHelper.isWithinLimits(currentHumidity, this.humidity, ((IAlleleTolerance)this.geneTemplate[EnumBeeChromosome.HUMIDITY_TOLERANCE.ordinal()]).getValue());
    }

    public boolean oanWorkInCurrentEnvironment(EnumTemperature currentTemperature, EnumHumidity currentHumidity) {
        return AlleleManager.climateHelper.isWithinLimits(currentTemperature, currentHumidity, this.temperature, ((IAlleleTolerance)this.geneTemplate[EnumBeeChromosome.TEMPERATURE_TOLERANCE.ordinal()]).getValue(), this.humidity, ((IAlleleTolerance)this.geneTemplate[EnumBeeChromosome.HUMIDITY_TOLERANCE.ordinal()]).getValue());
    }
}