Added the ability to change between RF and Tesla display modes in machines

This commit is contained in:
Ellpeck 2016-07-21 18:35:38 +02:00
parent 6cf525f6c5
commit 3df2868fe3
13 changed files with 127 additions and 9 deletions

View file

@ -46,7 +46,7 @@ public class ClientEvents{
private static final String ADVANCED_INFO_TEXT_PRE = TextFormatting.DARK_GRAY+" "; private static final String ADVANCED_INFO_TEXT_PRE = TextFormatting.DARK_GRAY+" ";
private static final String ADVANCED_INFO_HEADER_PRE = TextFormatting.GRAY+" -"; private static final String ADVANCED_INFO_HEADER_PRE = TextFormatting.GRAY+" -";
private static final EnergyDisplay ENERGY_DISPLAY = new EnergyDisplay(0, 0, null); private static EnergyDisplay energyDisplay;
public ClientEvents(){ public ClientEvents(){
MinecraftForge.EVENT_BUS.register(this); MinecraftForge.EVENT_BUS.register(this);
@ -175,8 +175,13 @@ public class ClientEvents{
IEnergyDisplay display = (IEnergyDisplay)tileHit; IEnergyDisplay display = (IEnergyDisplay)tileHit;
if(!display.needsHoldShift() || player.isSneaking()){ if(!display.needsHoldShift() || player.isSneaking()){
profiler.startSection("EnergyDisplay"); profiler.startSection("EnergyDisplay");
ENERGY_DISPLAY.setData(2, event.getResolution().getScaledHeight()-96, display.getEnergyStorage(), true, true);
ENERGY_DISPLAY.draw(); if(energyDisplay == null){
energyDisplay = new EnergyDisplay(0, 0, null);
}
energyDisplay.setData(2, event.getResolution().getScaledHeight()-96, display.getEnergyStorage(), true, true);
energyDisplay.draw();
profiler.endSection(); profiler.endSection();
} }
} }

View file

@ -11,13 +11,20 @@
package de.ellpeck.actuallyadditions.mod.inventory.gui; package de.ellpeck.actuallyadditions.mod.inventory.gui;
import cofh.api.energy.EnergyStorage; import cofh.api.energy.EnergyStorage;
import de.ellpeck.actuallyadditions.mod.data.PlayerData;
import de.ellpeck.actuallyadditions.mod.network.PacketClientToServer;
import de.ellpeck.actuallyadditions.mod.network.PacketHandler;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
import de.ellpeck.actuallyadditions.mod.util.AssetUtil; import de.ellpeck.actuallyadditions.mod.util.AssetUtil;
import de.ellpeck.actuallyadditions.mod.util.StringUtil; import de.ellpeck.actuallyadditions.mod.util.StringUtil;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui; import net.minecraft.client.gui.Gui;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.fml.client.config.GuiUtils; import net.minecraftforge.fml.client.config.GuiUtils;
import java.util.Collections; import java.util.ArrayList;
import java.util.List;
public class EnergyDisplay extends Gui{ public class EnergyDisplay extends Gui{
@ -26,6 +33,7 @@ public class EnergyDisplay extends Gui{
private int y; private int y;
private boolean outline; private boolean outline;
private boolean drawTextNextTo; private boolean drawTextNextTo;
private boolean displayTesla;
public EnergyDisplay(int x, int y, EnergyStorage rfReference, boolean outline, boolean drawTextNextTo){ public EnergyDisplay(int x, int y, EnergyStorage rfReference, boolean outline, boolean drawTextNextTo){
this.setData(x, y, rfReference, outline, drawTextNextTo); this.setData(x, y, rfReference, outline, drawTextNextTo);
@ -41,6 +49,10 @@ public class EnergyDisplay extends Gui{
this.rfReference = rfReference; this.rfReference = rfReference;
this.outline = outline; this.outline = outline;
this.drawTextNextTo = drawTextNextTo; this.drawTextNextTo = drawTextNextTo;
if(TileEntityBase.teslaLoaded){
this.displayTesla = PlayerData.getDataFromPlayer(Minecraft.getMinecraft().thePlayer).theCompound.getBoolean("DisplayTesla");
}
} }
public void draw(){ public void draw(){
@ -49,6 +61,7 @@ public class EnergyDisplay extends Gui{
int barX = this.x; int barX = this.x;
int barY = this.y; int barY = this.y;
int vOffset = this.displayTesla ? 85 : 0;
if(this.outline){ if(this.outline){
this.drawTexturedModalRect(this.x, this.y, 52, 163, 26, 93); this.drawTexturedModalRect(this.x, this.y, 52, 163, 26, 93);
@ -56,11 +69,11 @@ public class EnergyDisplay extends Gui{
barX += 4; barX += 4;
barY += 4; barY += 4;
} }
this.drawTexturedModalRect(barX, barY, 18, 171, 18, 85); this.drawTexturedModalRect(barX, barY, 18, 171-vOffset, 18, 85);
if(this.rfReference.getEnergyStored() > 0){ if(this.rfReference.getEnergyStored() > 0){
int i = this.rfReference.getEnergyStored()*83/this.rfReference.getMaxEnergyStored(); int i = this.rfReference.getEnergyStored()*83/this.rfReference.getMaxEnergyStored();
this.drawTexturedModalRect(barX+1, barY+84-i, 36, 172, 16, i); this.drawTexturedModalRect(barX+1, barY+84-i, 36, 172-vOffset, 16, i);
} }
if(this.drawTextNextTo){ if(this.drawTextNextTo){
@ -69,13 +82,44 @@ public class EnergyDisplay extends Gui{
} }
public void drawOverlay(int mouseX, int mouseY){ public void drawOverlay(int mouseX, int mouseY){
if(mouseX >= this.x && mouseY >= this.y && mouseX < this.x+(this.outline ? 26 : 18) && mouseY < this.y+(this.outline ? 93 : 85)){ if(this.isMouseOver(mouseX, mouseY)){
Minecraft mc = Minecraft.getMinecraft(); Minecraft mc = Minecraft.getMinecraft();
GuiUtils.drawHoveringText(Collections.singletonList(this.getOverlayText()), mouseX, mouseY, mc.displayWidth, mc.displayHeight, -1, mc.fontRendererObj);
List<String> text = new ArrayList<String>();
text.add(this.getOverlayText());
if(TileEntityBase.teslaLoaded){
text.add(TextFormatting.GRAY+""+TextFormatting.ITALIC+"Click to change mode!");
}
GuiUtils.drawHoveringText(text, mouseX, mouseY, mc.displayWidth, mc.displayHeight, -1, mc.fontRendererObj);
} }
} }
public void onMouseClick(int mouseX, int mouseY, int mouseButton){
if(mouseButton == 0 && this.isMouseOver(mouseX, mouseY)){
this.changeDisplayMode();
}
}
private boolean isMouseOver(int mouseX, int mouseY){
return mouseX >= this.x && mouseY >= this.y && mouseX < this.x+(this.outline ? 26 : 18) && mouseY < this.y+(this.outline ? 93 : 85);
}
private String getOverlayText(){ private String getOverlayText(){
return this.rfReference.getEnergyStored()+"/"+this.rfReference.getMaxEnergyStored()+" RF"; return this.rfReference.getEnergyStored()+"/"+this.rfReference.getMaxEnergyStored()+(this.displayTesla ? " Tesla" : " RF");
}
private void changeDisplayMode(){
if(TileEntityBase.teslaLoaded){
NBTTagCompound data = new NBTTagCompound();
this.displayTesla = !this.displayTesla;
data.setBoolean("DisplayTesla", this.displayTesla);
NBTTagCompound dataToSend = new NBTTagCompound();
dataToSend.setTag("Data", data);
dataToSend.setInteger("WorldID", Minecraft.getMinecraft().theWorld.provider.getDimension());
dataToSend.setInteger("PlayerID", Minecraft.getMinecraft().thePlayer.getEntityId());
PacketHandler.theNetwork.sendToServer(new PacketClientToServer(dataToSend, PacketHandler.CHANGE_PLAYER_DATA_HANDLER));
}
} }
} }

View file

@ -22,6 +22,7 @@ import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
import java.io.IOException;
import java.util.Collections; import java.util.Collections;
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
@ -46,6 +47,11 @@ public class GuiCanolaPress extends GuiContainer{
this.fluid = new FluidDisplay(this.guiLeft+116, this.guiTop+5, this.press.tank); this.fluid = new FluidDisplay(this.guiLeft+116, this.guiTop+5, this.press.tank);
} }
@Override
protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException{
this.energy.onMouseClick(mouseX, mouseY, mouseButton);
}
@Override @Override
public void drawScreen(int x, int y, float f){ public void drawScreen(int x, int y, float f){
super.drawScreen(x, y, f); super.drawScreen(x, y, f);

View file

@ -21,6 +21,7 @@ import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
import java.io.IOException;
import java.util.Collections; import java.util.Collections;
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
@ -43,6 +44,12 @@ public class GuiCoalGenerator extends GuiContainer{
this.energy = new EnergyDisplay(this.guiLeft+42, this.guiTop+5, this.generator.storage); this.energy = new EnergyDisplay(this.guiLeft+42, this.guiTop+5, this.generator.storage);
} }
@Override
protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException{
this.energy.onMouseClick(mouseX, mouseY, mouseButton);
}
@Override @Override
public void drawScreen(int x, int y, float f){ public void drawScreen(int x, int y, float f){
super.drawScreen(x, y, f); super.drawScreen(x, y, f);

View file

@ -29,6 +29,7 @@ import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
import java.io.IOException;
import java.util.Collections; import java.util.Collections;
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
@ -55,6 +56,12 @@ public class GuiCoffeeMachine extends GuiContainer{
this.world = world; this.world = world;
} }
@Override
protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException{
this.energy.onMouseClick(mouseX, mouseY, mouseButton);
}
@Override @Override
public void initGui(){ public void initGui(){
super.initGui(); super.initGui();

View file

@ -21,6 +21,7 @@ import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
import java.io.IOException;
import java.util.Collections; import java.util.Collections;
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
@ -43,6 +44,12 @@ public class GuiDirectionalBreaker extends GuiContainer{
this.energy = new EnergyDisplay(this.guiLeft+42, this.guiTop+5, this.breaker.storage); this.energy = new EnergyDisplay(this.guiLeft+42, this.guiTop+5, this.breaker.storage);
} }
@Override
protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException{
this.energy.onMouseClick(mouseX, mouseY, mouseButton);
}
@Override @Override
public void drawScreen(int x, int y, float f){ public void drawScreen(int x, int y, float f){
super.drawScreen(x, y, f); super.drawScreen(x, y, f);

View file

@ -21,6 +21,7 @@ import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
import java.io.IOException;
import java.util.Collections; import java.util.Collections;
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
@ -43,6 +44,12 @@ public class GuiEnergizer extends GuiContainer{
this.energy = new EnergyDisplay(this.guiLeft+56, this.guiTop+5, this.energizer.storage); this.energy = new EnergyDisplay(this.guiLeft+56, this.guiTop+5, this.energizer.storage);
} }
@Override
protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException{
this.energy.onMouseClick(mouseX, mouseY, mouseButton);
}
@Override @Override
public void drawScreen(int x, int y, float f){ public void drawScreen(int x, int y, float f){
super.drawScreen(x, y, f); super.drawScreen(x, y, f);

View file

@ -21,6 +21,7 @@ import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
import java.io.IOException;
import java.util.Collections; import java.util.Collections;
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
@ -43,6 +44,12 @@ public class GuiEnervator extends GuiContainer{
this.energy = new EnergyDisplay(this.guiLeft+56, this.guiTop+5, this.enervator.storage); this.energy = new EnergyDisplay(this.guiLeft+56, this.guiTop+5, this.enervator.storage);
} }
@Override
protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException{
this.energy.onMouseClick(mouseX, mouseY, mouseButton);
}
@Override @Override
public void drawScreen(int x, int y, float f){ public void drawScreen(int x, int y, float f){
super.drawScreen(x, y, f); super.drawScreen(x, y, f);

View file

@ -21,6 +21,7 @@ import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
import java.io.IOException;
import java.util.Collections; import java.util.Collections;
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
@ -43,6 +44,12 @@ public class GuiFurnaceDouble extends GuiContainer{
this.energy.drawOverlay(x, y); this.energy.drawOverlay(x, y);
} }
@Override
protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException{
this.energy.onMouseClick(mouseX, mouseY, mouseButton);
}
@Override @Override
public void initGui(){ public void initGui(){
super.initGui(); super.initGui();

View file

@ -21,6 +21,7 @@ import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
import java.io.IOException;
import java.util.Collections; import java.util.Collections;
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
@ -50,6 +51,12 @@ public class GuiGrinder extends GuiContainer{
this.energy = new EnergyDisplay(this.guiLeft+(this.isDouble ? 13 : 42), this.guiTop+5, this.tileGrinder.storage); this.energy = new EnergyDisplay(this.guiLeft+(this.isDouble ? 13 : 42), this.guiTop+5, this.tileGrinder.storage);
} }
@Override
protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException{
this.energy.onMouseClick(mouseX, mouseY, mouseButton);
}
@Override @Override
public void drawScreen(int x, int y, float f){ public void drawScreen(int x, int y, float f){
super.drawScreen(x, y, f); super.drawScreen(x, y, f);

View file

@ -22,6 +22,7 @@ import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
import java.io.IOException;
import java.util.Collections; import java.util.Collections;
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
@ -47,6 +48,12 @@ public class GuiOilGenerator extends GuiContainer{
this.fluid = new FluidDisplay(this.guiLeft+116, this.guiTop+5, this.generator.tank); this.fluid = new FluidDisplay(this.guiLeft+116, this.guiTop+5, this.generator.tank);
} }
@Override
protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException{
this.energy.onMouseClick(mouseX, mouseY, mouseButton);
}
@Override @Override
public void drawScreen(int x, int y, float f){ public void drawScreen(int x, int y, float f){
super.drawScreen(x, y, f); super.drawScreen(x, y, f);

View file

@ -21,6 +21,7 @@ import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
import java.io.IOException;
import java.util.Collections; import java.util.Collections;
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
@ -37,6 +38,12 @@ public class GuiRepairer extends GuiContainer{
this.ySize = 93+86; this.ySize = 93+86;
} }
@Override
protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException{
this.energy.onMouseClick(mouseX, mouseY, mouseButton);
}
@Override @Override
public void initGui(){ public void initGui(){
super.initGui(); super.initGui();

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB