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);
}
}
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);
}
}
}
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));
}
}
}
Aggregations