generated from tilera/1710mod
125 lines
4.1 KiB
Java
125 lines
4.1 KiB
Java
package com.eloraam.redpower.control;
|
|
|
|
import com.eloraam.redpower.RedPowerCore;
|
|
import com.eloraam.redpower.core.PacketGuiEvent;
|
|
import net.minecraft.client.gui.inventory.GuiContainer;
|
|
import net.minecraft.client.renderer.Tessellator;
|
|
import net.minecraft.inventory.IInventory;
|
|
import net.minecraft.util.ResourceLocation;
|
|
import org.lwjgl.opengl.GL11;
|
|
|
|
public class GuiDisplay extends GuiContainer {
|
|
private static ResourceLocation screenTextures = new ResourceLocation("rpcontrol", "textures/gui/displaygui.png");
|
|
private TileDisplay disp;
|
|
|
|
public GuiDisplay(IInventory inv, TileDisplay td) {
|
|
super(new ContainerDisplay(inv, td));
|
|
super.xSize = 350;
|
|
super.ySize = 230;
|
|
this.disp = td;
|
|
}
|
|
|
|
private void sendKey(int id) {
|
|
RedPowerCore.sendPacketToServer(new PacketGuiEvent.GuiMessageEvent(1, super.inventorySlots.windowId, (byte)id));
|
|
}
|
|
|
|
protected void keyTyped(char symbol, int key) {
|
|
if (key == 1) {
|
|
super.mc.thePlayer.closeScreen();
|
|
} else {
|
|
if (symbol == '\n') {
|
|
symbol = '\r';
|
|
}
|
|
|
|
byte id = 0;
|
|
if (isShiftKeyDown()) {
|
|
id = (byte)(id | 64);
|
|
}
|
|
|
|
if (isCtrlKeyDown()) {
|
|
id = (byte)(id | 32);
|
|
}
|
|
|
|
switch(key) {
|
|
case 199:
|
|
this.sendKey(132 | id);
|
|
break;
|
|
case 200:
|
|
this.sendKey(128 | id);
|
|
break;
|
|
case 201:
|
|
case 202:
|
|
case 204:
|
|
case 206:
|
|
case 209:
|
|
default:
|
|
if (symbol > 0 && symbol <= 127) {
|
|
this.sendKey(symbol);
|
|
}
|
|
break;
|
|
case 203:
|
|
this.sendKey(130 | id);
|
|
break;
|
|
case 205:
|
|
this.sendKey(131 | id);
|
|
break;
|
|
case 207:
|
|
this.sendKey(133 | id);
|
|
break;
|
|
case 208:
|
|
this.sendKey(129 | id);
|
|
break;
|
|
case 210:
|
|
this.sendKey(134 | id);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
public void drawGuiContainerBackgroundLayer(float f, int i, int j) {
|
|
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
|
super.mc.renderEngine.bindTexture(screenTextures);
|
|
int l = (super.width - super.xSize) / 2;
|
|
int m = (super.height - super.ySize) / 2;
|
|
this.drawDoubledRect(l, m, super.xSize, super.ySize, 0, 0, super.xSize, super.ySize);
|
|
GL11.glColor4f(0.0F, 1.0F, 0.0F, 1.0F);
|
|
|
|
for(int y = 0; y < 50; ++y) {
|
|
for(int x = 0; x < 80; ++x) {
|
|
int b = this.disp.screen[y * 80 + x] & 255;
|
|
if (x == this.disp.cursX && y == this.disp.cursY) {
|
|
if (this.disp.cursMode == 1) {
|
|
b ^= 128;
|
|
}
|
|
|
|
if (this.disp.cursMode == 2) {
|
|
long tm = super.mc.theWorld.getWorldTime();
|
|
if ((tm >> 2 & 1L) > 0L) {
|
|
b ^= 128;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (b != 32) {
|
|
this.drawDoubledRect(l + 15 + x * 4, m + 15 + y * 4, 4, 4, 350 + (b & 15) * 8, (b >> 4) * 8, 8, 8);
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
public void drawDoubledRect(int xPos, int yPos, int width, int heigth, int uStart, int vStart, int uEnd, int vEnd) {
|
|
float xm = 0.001953125F;
|
|
float ym = 0.00390625F;
|
|
Tessellator tess = Tessellator.instance;
|
|
tess.startDrawingQuads();
|
|
tess.addVertexWithUV((double)xPos, (double)(yPos + heigth), (double)super.zLevel, (double)((float)uStart * xm), (double)((float)(vStart + vEnd) * ym));
|
|
tess.addVertexWithUV(
|
|
(double)(xPos + width), (double)(yPos + heigth), (double)super.zLevel, (double)((float)(uStart + uEnd) * xm), (double)((float)(vStart + vEnd) * ym)
|
|
);
|
|
tess.addVertexWithUV((double)(xPos + width), (double)yPos, (double)super.zLevel, (double)((float)(uStart + uEnd) * xm), (double)((float)vStart * ym));
|
|
tess.addVertexWithUV((double)xPos, (double)yPos, (double)super.zLevel, (double)((float)uStart * xm), (double)((float)vStart * ym));
|
|
tess.draw();
|
|
}
|
|
}
|