Search in sources :

Example 1 with IFilterRuleType

use of forestry.api.genetics.IFilterRuleType in project ForestryMC by ForestryMC.

the class RuleWidget method getToolTip.

@Override
public ToolTip getToolTip(int mouseX, int mouseY) {
    IFilterLogic logic = gui.getLogic();
    IFilterRuleType rule = logic.getRule(facing);
    ToolTip tooltip = new ToolTip();
    tooltip.add(getName(rule));
    return tooltip;
}
Also used : ToolTip(forestry.core.gui.tooltips.ToolTip) IFilterRuleType(forestry.api.genetics.IFilterRuleType) IFilterLogic(forestry.api.genetics.IFilterLogic)

Example 2 with IFilterRuleType

use of forestry.api.genetics.IFilterRuleType in project ForestryMC by ForestryMC.

the class RuleWidget method draw.

@Override
public void draw(int startX, int startY) {
    int x = xPos + startX;
    int y = yPos + startY;
    IFilterLogic logic = gui.getLogic();
    IFilterRuleType rule = logic.getRule(facing);
    draw(manager.gui, rule, x, y);
    TextureManager textureManager = Minecraft.getMinecraft().getTextureManager();
    if (this.gui.selection.isSame(this)) {
        textureManager.bindTexture(SelectionWidget.TEXTURE);
        gui.drawTexturedModalRect(x - 1, y - 1, 212, 0, 18, 18);
    }
}
Also used : IFilterRuleType(forestry.api.genetics.IFilterRuleType) TextureManager(net.minecraft.client.renderer.texture.TextureManager) IFilterLogic(forestry.api.genetics.IFilterLogic)

Example 3 with IFilterRuleType

use of forestry.api.genetics.IFilterRuleType in project ForestryMC by ForestryMC.

the class FilterLogic method isValid.

public boolean isValid(EnumFacing facing, ItemStack itemStack, IFilterData filterData) {
    IFilterRuleType rule = getRule(facing);
    if (rule == DefaultFilterRuleType.CLOSED) {
        return false;
    }
    if (rule == DefaultFilterRuleType.ITEM && !filterData.isPresent()) {
        return true;
    }
    String requiredRoot = rule.getRootUID();
    if (requiredRoot != null && (!filterData.isPresent() || !filterData.getRoot().getUID().equals(requiredRoot))) {
        return false;
    }
    if (rule == DefaultFilterRuleType.ANYTHING || rule.isValid(itemStack, filterData)) {
        if (filterData.isPresent()) {
            IIndividual ind = filterData.getIndividual();
            IGenome genome = ind.getGenome();
            IAllele active = genome.getPrimary();
            IAllele inactive = genome.getSecondary();
            if (!isValidAllelePair(facing, active.getUID(), inactive.getUID())) {
                return false;
            }
        }
        return true;
    }
    return false;
}
Also used : IAllele(forestry.api.genetics.IAllele) IFilterRuleType(forestry.api.genetics.IFilterRuleType) IGenome(forestry.api.genetics.IGenome) IIndividual(forestry.api.genetics.IIndividual)

Example 4 with IFilterRuleType

use of forestry.api.genetics.IFilterRuleType in project ForestryMC by ForestryMC.

the class FilterRegistry method init.

public void init() {
    List<IFilterRuleType> rules = new LinkedList<>();
    rules.addAll(filterByName.values());
    rules.sort(FILTER_COMPARATOR);
    for (int i = 0; i < rules.size(); i++) {
        IFilterRuleType rule = rules.get(i);
        filterIDByName.put(rule.getUID(), i);
        filterByID.put(i, rule);
    }
}
Also used : IFilterRuleType(forestry.api.genetics.IFilterRuleType) LinkedList(java.util.LinkedList)

Aggregations

IFilterRuleType (forestry.api.genetics.IFilterRuleType)4 IFilterLogic (forestry.api.genetics.IFilterLogic)2 IAllele (forestry.api.genetics.IAllele)1 IGenome (forestry.api.genetics.IGenome)1 IIndividual (forestry.api.genetics.IIndividual)1 ToolTip (forestry.core.gui.tooltips.ToolTip)1 LinkedList (java.util.LinkedList)1 TextureManager (net.minecraft.client.renderer.texture.TextureManager)1