Search in sources :

Example 1 with StatementWrapper

use of buildcraft.lib.statement.StatementWrapper in project BuildCraft by BuildCraft.

the class GuiElementStatementDrag method drawForeground.

@Override
public void drawForeground(float partialTicks) {
    if (isDragging) {
        boolean canPlace = false;
        for (IGuiElement element : gui.getElementsAt(gui.mouse.getX(), gui.mouse.getY())) {
            if (element instanceof IReference<?>) {
                if (checkCanSet((IReference<?>) element, dragging)) {
                    canPlace = true;
                    break;
                }
            }
        }
        GlStateManager.clear(GL11.GL_DEPTH_BUFFER_BIT);
        if (!canPlace) {
            GlStateManager.color(1.0f, 0.7f, 0.7f);
        }
        double x = gui.mouse.getX() - 9;
        double y = gui.mouse.getY() - 9;
        if (dragging instanceof IStatementParameter) {
            ParameterRenderer.draw((IStatementParameter) dragging, x, y);
        } else {
            GuiIcon background = GuiElementStatement.SLOT_COLOUR;
            if (dragging instanceof StatementWrapper) {
                EnumPipePart part = ((StatementWrapper) dragging).sourcePart;
                if (part != EnumPipePart.CENTER) {
                    background = background.offset(0, (1 + part.getIndex()) * 18);
                }
            }
            background.drawAt(x, y);
            if (dragging != null) {
                ISprite sprite = dragging.getSprite();
                if (sprite != null) {
                    GuiIcon.drawAt(sprite, x + 1, y + 1, 16);
                }
            }
        }
        GlStateManager.color(1, 1, 1);
    }
}
Also used : StatementWrapper(buildcraft.lib.statement.StatementWrapper) ISprite(buildcraft.api.core.render.ISprite) EnumPipePart(buildcraft.api.core.EnumPipePart) IGuiElement(buildcraft.lib.gui.IGuiElement) IStatementParameter(buildcraft.api.statements.IStatementParameter) IReference(buildcraft.lib.misc.data.IReference) GuiIcon(buildcraft.lib.gui.GuiIcon)

Example 2 with StatementWrapper

use of buildcraft.lib.statement.StatementWrapper in project BuildCraft by BuildCraft.

the class GuiElementStatementSource method drawGuiSlot.

public static void drawGuiSlot(@Nullable IGuiSlot guiSlot, double x, double y) {
    if (guiSlot instanceof IStatementParameter) {
        ParameterRenderer.draw((IStatementParameter) guiSlot, x, y);
        return;
    }
    GuiIcon background = GuiElementStatement.SLOT_COLOUR;
    if (guiSlot instanceof StatementWrapper) {
        EnumPipePart part = ((StatementWrapper) guiSlot).sourcePart;
        if (part != EnumPipePart.CENTER) {
            background = background.offset(0, (1 + part.getIndex()) * 18);
        }
    }
    background.drawAt(x, y);
    if (guiSlot != null) {
        ISprite sprite = guiSlot.getSprite();
        if (sprite != null) {
            GuiIcon.drawAt(sprite, x + 1, y + 1, 16);
        }
    }
}
Also used : StatementWrapper(buildcraft.lib.statement.StatementWrapper) ISprite(buildcraft.api.core.render.ISprite) EnumPipePart(buildcraft.api.core.EnumPipePart) IStatementParameter(buildcraft.api.statements.IStatementParameter) GuiIcon(buildcraft.lib.gui.GuiIcon)

Example 3 with StatementWrapper

use of buildcraft.lib.statement.StatementWrapper in project BuildCraft by BuildCraft.

the class ContainerGate method refresh.

private static <T extends StatementWrapper> void refresh(SortedSet<T> from, GateContext<T> to) {
    to.groups.clear();
    Map<EnumPipePart, List<T>> parts = new EnumMap<>(EnumPipePart.class);
    for (T val : from) {
        parts.computeIfAbsent(val.sourcePart, p -> new ArrayList<>()).add(val);
    }
    List<T> list = parts.get(EnumPipePart.CENTER);
    if (list == null) {
        list = new ArrayList<>(1);
        list.add(null);
    } else {
        list.add(0, null);
    }
    to.groups.add(new GateGroup<>(EnumPipePart.CENTER, list));
    for (EnumPipePart part : EnumPipePart.FACES) {
        list = parts.get(part);
        if (list != null) {
            to.groups.add(new GateGroup<>(part, list));
        }
    }
}
Also used : PacketBufferBC(buildcraft.lib.net.PacketBufferBC) SortedSet(java.util.SortedSet) TriggerWrapper(buildcraft.transport.gate.TriggerWrapper) EnumMap(java.util.EnumMap) IdAllocator(buildcraft.lib.misc.data.IdAllocator) ContainerBC_Neptune(buildcraft.lib.gui.ContainerBC_Neptune) StatementWrapper(buildcraft.lib.statement.StatementWrapper) IOException(java.io.IOException) TreeSet(java.util.TreeSet) ArrayList(java.util.ArrayList) GateGroup(buildcraft.transport.gate.GateContext.GateGroup) List(java.util.List) MessageContext(net.minecraftforge.fml.common.network.simpleimpl.MessageContext) StatementManager(buildcraft.api.statements.StatementManager) Side(net.minecraftforge.fml.relauncher.Side) ActionWrapper(buildcraft.transport.gate.ActionWrapper) EntityPlayer(net.minecraft.entity.player.EntityPlayer) Map(java.util.Map) GateContext(buildcraft.transport.gate.GateContext) GateLogic(buildcraft.transport.gate.GateLogic) EnumPipePart(buildcraft.api.core.EnumPipePart) EnumPipePart(buildcraft.api.core.EnumPipePart) ArrayList(java.util.ArrayList) ArrayList(java.util.ArrayList) List(java.util.List) EnumMap(java.util.EnumMap)

Aggregations

EnumPipePart (buildcraft.api.core.EnumPipePart)3 StatementWrapper (buildcraft.lib.statement.StatementWrapper)3 ISprite (buildcraft.api.core.render.ISprite)2 IStatementParameter (buildcraft.api.statements.IStatementParameter)2 GuiIcon (buildcraft.lib.gui.GuiIcon)2 StatementManager (buildcraft.api.statements.StatementManager)1 ContainerBC_Neptune (buildcraft.lib.gui.ContainerBC_Neptune)1 IGuiElement (buildcraft.lib.gui.IGuiElement)1 IReference (buildcraft.lib.misc.data.IReference)1 IdAllocator (buildcraft.lib.misc.data.IdAllocator)1 PacketBufferBC (buildcraft.lib.net.PacketBufferBC)1 ActionWrapper (buildcraft.transport.gate.ActionWrapper)1 GateContext (buildcraft.transport.gate.GateContext)1 GateGroup (buildcraft.transport.gate.GateContext.GateGroup)1 GateLogic (buildcraft.transport.gate.GateLogic)1 TriggerWrapper (buildcraft.transport.gate.TriggerWrapper)1 IOException (java.io.IOException)1 ArrayList (java.util.ArrayList)1 EnumMap (java.util.EnumMap)1 List (java.util.List)1