Skip to content

Commit

Permalink
Added range overlay for farm
Browse files Browse the repository at this point in the history
  • Loading branch information
HenryLoenwind committed Apr 28, 2017
1 parent ca681c2 commit 77d73f3
Show file tree
Hide file tree
Showing 3 changed files with 82 additions and 1 deletion.
Binary file modified resources/assets/enderio/textures/gui/23/farmStation.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
40 changes: 40 additions & 0 deletions src/main/java/crazypants/enderio/machine/farm/GuiFarmStation.java
@@ -1,17 +1,22 @@
package crazypants.enderio.machine.farm;

import java.io.IOException;
import java.util.List;

import org.lwjgl.opengl.GL11;

import com.enderio.core.api.client.gui.IGuiOverlay;
import com.enderio.core.client.gui.button.IconButton;
import com.enderio.core.client.gui.button.ToggleButton;
import com.enderio.core.client.gui.widget.GuiToolTip;
import com.enderio.core.client.render.ColorUtil;
import com.enderio.core.client.render.RenderUtil;
import com.enderio.core.common.vecmath.Vector4f;
import com.google.common.collect.Lists;

import crazypants.enderio.EnderIO;
import crazypants.enderio.gui.IconEIO;
import crazypants.enderio.machine.gui.GuiOverlayIoConfig;
import crazypants.enderio.machine.gui.GuiPoweredMachineBase;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
Expand All @@ -22,11 +27,33 @@

public class GuiFarmStation extends GuiPoweredMachineBase<TileFarmStation> {

private static final int EXTRA_WITH = 8;

private static final int LOCK_ID = 1234;
ToggleButton showRangeB;

public GuiFarmStation(InventoryPlayer par1InventoryPlayer, TileFarmStation machine) {
super(machine, new FarmStationContainer(par1InventoryPlayer, machine), "farmStation");
setYSize(ySize + 3);

showRangeB = new ToggleButton(this, -1, 163, 43, IconEIO.SHOW_RANGE, IconEIO.HIDE_RANGE);
showRangeB.setSize(16, 16);
addToolTip(new GuiToolTip(showRangeB.getBounds(), "null") {
@Override
public List<String> getToolTipText() {
return Lists.newArrayList(EnderIO.lang.localize(showRangeB.isSelected() ? "gui.spawnGurad.hideRange" : "gui.spawnGurad.showRange"));
}
});
}

@Override
public int getXSize() {
return 176 + EXTRA_WITH;
}

@Override
protected int getPowerU() {
return getXSize();
}

@Override
Expand All @@ -42,6 +69,15 @@ public void initGui() {
buttonList.add(createLockButton(TileFarmStation.minSupSlot + 3, x + 52, y + 20));

((FarmStationContainer) inventorySlots).createGhostSlots(getGhostSlots());

showRangeB.onGuiInit();
showRangeB.setSelected(getTileEntity().isShowingRange());

for (IGuiOverlay overlay : overlays) {
if (overlay instanceof GuiOverlayIoConfig) {
overlay.getBounds().width -= EXTRA_WITH;
}
}
}

private IconButton createLockButton(int slot, int x, int y) {
Expand Down Expand Up @@ -91,6 +127,10 @@ protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3) {

@Override
protected void actionPerformed(GuiButton b) throws IOException {
if (b == showRangeB) {
getTileEntity().setShowRange(showRangeB.isSelected());
return;
}
if (b.id >= LOCK_ID + TileFarmStation.minSupSlot && b.id <= LOCK_ID + TileFarmStation.maxSupSlot) {
getTileEntity().toggleLockedState(b.id - LOCK_ID);
}
Expand Down
Expand Up @@ -6,6 +6,8 @@

import javax.annotation.Nonnull;

import com.enderio.core.client.render.BoundingBox;
import com.enderio.core.common.vecmath.Vector4f;
import com.mojang.authlib.GameProfile;

import crazypants.enderio.ModObject;
Expand All @@ -19,6 +21,8 @@
import crazypants.enderio.machine.SlotDefinition;
import crazypants.enderio.machine.farm.farmers.FarmersCommune;
import crazypants.enderio.machine.farm.farmers.IHarvestResult;
import crazypants.enderio.machine.ranged.IRanged;
import crazypants.enderio.machine.ranged.RangeParticle;
import crazypants.enderio.network.PacketHandler;
import crazypants.enderio.paint.IPaintable;
import crazypants.enderio.power.PowerHandlerUtil;
Expand All @@ -29,6 +33,7 @@
import info.loenwind.autosave.annotations.Store;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.Minecraft;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityItem;
Expand All @@ -46,6 +51,8 @@
import net.minecraft.world.EnumSkyBlock;
import net.minecraftforge.energy.IEnergyStorage;
import net.minecraftforge.fml.common.network.NetworkRegistry.TargetPoint;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import net.minecraftforge.server.permission.PermissionAPI;
import net.minecraftforge.server.permission.context.BlockPosContext;

Expand All @@ -60,7 +67,7 @@
import static crazypants.enderio.config.Config.farmStopOnNoOutputSlots;

@Storable
public class TileFarmStation extends AbstractPoweredTaskEntity implements IPaintable.IPaintableTileEntity {
public class TileFarmStation extends AbstractPoweredTaskEntity implements IPaintable.IPaintableTileEntity, IRanged {

private static final int TICKS_PER_WORK = 20;

Expand Down Expand Up @@ -819,4 +826,38 @@ public boolean shouldRenderInPass(int pass) {
return pass == 1;
}

// RANGE

private boolean showingRange;

@Override
@SideOnly(Side.CLIENT)
public boolean isShowingRange() {
return showingRange;
}

private final static Vector4f color = new Vector4f(145f / 255f, 82f / 255f, 21f / 255f, .4f);

@SideOnly(Side.CLIENT)
public void setShowRange(boolean showRange) {
if (showingRange == showRange) {
return;
}
showingRange = showRange;
if (showingRange) {
Minecraft.getMinecraft().effectRenderer.addEffect(new RangeParticle<TileFarmStation>(this, color));
}
}

@Override
public BoundingBox getBounds() {
return new BoundingBox(getPos()).expand(getRange(), 0, getRange());
}

public float getRange() {
return getFarmSize();
}

// RANGE END

}

0 comments on commit 77d73f3

Please sign in to comment.