use of io.xol.chunkstories.api.input.Mouse in project chunkstories by Hugobros3.
the class OptionsScreen method render.
@Override
public void render(RenderingInterface renderer) {
// this.renderer = renderer;
parentLayer.getRootLayer().render(renderer);
int optionsPanelSize = (160 * 2 + 16 + 32) * this.getGuiScale();
// Shades the BG
renderer.getGuiRenderer().drawBoxWindowsSpace(0, 0, renderer.getWindow().getWidth(), renderer.getWindow().getHeight(), 0, 0, 0, 0, null, false, true, new Vector4f(0.0f, 0.0f, 0.0f, 0.5f));
renderer.getGuiRenderer().drawBoxWindowsSpace(renderer.getWindow().getWidth() / 2.0f - optionsPanelSize / 2, 0, renderer.getWindow().getWidth() / 2 + optionsPanelSize / 2, renderer.getWindow().getHeight(), 0, 0, 0, 0, null, false, true, new Vector4f(0.0f, 0.0f, 0.0f, 0.5f));
// Render the tabs buttons
float dekal = 16 * this.getGuiScale();
for (TabButton b : tabsButtons) {
b.setPosition(renderer.getWindow().getWidth() / 2 - optionsPanelSize / 2 + dekal, renderer.getWindow().getHeight() - 64 * this.getGuiScale());
b.render(renderer);
dekal += b.getWidth() / 2f;
dekal += b.getWidth() / 2f;
}
// Display the current tab
ConfigTab currentConfigTab = configTabs.get(selectedConfigTab);
int a = 0, b = 0;
int startPosX = renderer.getWindow().getWidth() / 2 - optionsPanelSize / 2 + 0 + 16 * this.getGuiScale();
int startPosY = renderer.getWindow().getHeight() - (64 + 32) * this.getGuiScale();
Mouse mouse = gameWindow.getInputsManager().getMouse();
for (ConfigButton c : currentConfigTab.configButtons) {
c.setPosition(startPosX + b * (160 + 16) * this.getGuiScale(), startPosY - (float) Math.floor(a / 2) * 32 * this.getGuiScale());
c.updateText();
c.render(renderer);
// Scale buttons work a bit hackyshly
if (c instanceof ConfigButtonScale && c.isMouseOver() && mouse.getMainButton().isPressed()) {
ConfigButtonScale cs = (ConfigButtonScale) c;
cs.onClick((float) mouse.getCursorX(), (float) mouse.getCursorY(), 0);
cs.apply();
}
a++;
b = a % 2;
}
renderer.getFontRenderer().drawStringWithShadow(renderer.getFontRenderer().getFont("LiberationSans-Regular", 11), renderer.getWindow().getWidth() / 2 - optionsPanelSize / 2 + 16 * this.getGuiScale(), renderer.getWindow().getHeight() - 32 * this.getGuiScale(), Client.getInstance().getContent().localization().getLocalizedString("options.title"), 3, 3, new Vector4f(1));
exitButton.setPosition(8, 8);
exitButton.render(renderer);
}
use of io.xol.chunkstories.api.input.Mouse in project chunkstories by Hugobros3.
the class DeathScreen method render.
@Override
public void render(RenderingInterface renderer) {
parentLayer.render(renderer);
renderer.getGuiRenderer().drawBoxWindowsSpace(0, 0, renderer.getWindow().getWidth(), renderer.getWindow().getHeight(), 0, 0, 0, 0, null, false, true, new Vector4f(0.0f, 0.0f, 0.0f, 0.5f));
String color = "#";
color += HexTools.intToHex((int) (Math.random() * 255));
color += HexTools.intToHex((int) (Math.random() * 255));
color += HexTools.intToHex((int) (Math.random() * 255));
Font font = renderer.getFontRenderer().getFont("LiberationSans-Regular", 11);
renderer.getFontRenderer().drawStringWithShadow(font, renderer.getWindow().getWidth() / 2 - font.getWidth("YOU DIEDED") * 3f, renderer.getWindow().getHeight() / 2 + 48 * 3, "#FF0000YOU DIEDED", 6, 6, new Vector4f(1));
renderer.getFontRenderer().drawStringWithShadow(font, renderer.getWindow().getWidth() / 2 - font.getWidth("git --gud scrub") * 1.5f, renderer.getWindow().getHeight() / 2 + 36 * 3, color + "git --gud scrub", 3, 3, new Vector4f(1));
respawnButton.setPosition(renderer.getWindow().getWidth() / 2 - respawnButton.getWidth() / 2, renderer.getWindow().getHeight() / 2 + 48);
exitButton.setPosition(renderer.getWindow().getWidth() / 2 - exitButton.getWidth() / 2, renderer.getWindow().getHeight() / 2 - 24);
respawnButton.render(renderer);
exitButton.render(renderer);
// When the new entity arrives
if (Client.getInstance().getPlayer().getControlledEntity() != null)
gameWindow.setLayer(parentLayer);
// Make sure to ungrab the mouse
Mouse mouse = gameWindow.getInputsManager().getMouse();
if (mouse.isGrabbed())
mouse.setGrabbed(false);
}
use of io.xol.chunkstories.api.input.Mouse in project chunkstories by Hugobros3.
the class InventoryView method render.
@Override
public void render(RenderingInterface renderer) {
parentLayer.render(renderer);
Mouse mouse = renderer.getClient().getInputsManager().getMouse();
int totalWidth = 0;
for (Inventory inv : inventories) totalWidth += 2 + inv.getWidth();
totalWidth -= 2;
int widthAccumulation = 0;
for (int i = 0; i < drawers.length; i++) {
int thisWidth = inventories[i].getWidth();
drawers[i].drawInventoryCentered(renderer, renderer.getWindow().getWidth() / 2 - totalWidth * 24 + thisWidth * 24 + widthAccumulation * 48, renderer.getWindow().getHeight() / 2, 2, false, 4 - i * 4);
widthAccumulation += 1 + thisWidth;
int[] highlightedSlot = drawers[i].getSelectedSlot();
if (highlightedSlot != null) {
ItemPile pileHighlighted = inventories[i].getItemPileAt(highlightedSlot[0], highlightedSlot[1]);
if (pileHighlighted != null) {
float mx = (float) mouse.getCursorX();
float my = (float) mouse.getCursorY();
renderer.getFontRenderer().drawStringWithShadow(renderer.getFontRenderer().defaultFont(), mx, my, pileHighlighted.getItem().getName(), 2, 2, new Vector4f(1.0f));
// System.out.println(pileHighlighted);
}
}
}
if (selectedItem != null) {
int slotSize = 24 * 2;
int width = slotSize * selectedItem.getItem().getDefinition().getSlotsWidth();
int height = slotSize * selectedItem.getItem().getDefinition().getSlotsHeight();
selectedItem.getItem().getDefinition().getRenderer().renderItemInInventory(renderer, selectedItem, (float) mouse.getCursorX() - width / 2, (float) mouse.getCursorY() - height / 2, 2);
if (selectedItemAmount != 1)
renderer.getFontRenderer().drawStringWithShadow(renderer.getFontRenderer().defaultFont(), (float) mouse.getCursorX() - width / 2 + (selectedItem.getItem().getDefinition().getSlotsWidth() - 1.0f) * slotSize, (float) mouse.getCursorY() - height / 2, selectedItemAmount + "", 2, 2, new Vector4f(1, 1, 1, 1));
}
}
use of io.xol.chunkstories.api.input.Mouse in project chunkstories by Hugobros3.
the class InventoryGridRenderer method drawInventory.
public void drawInventory(RenderingInterface renderer, int x, int y, int scale, boolean summary, int blankLines, int highlightSlot) {
Mouse mouse = renderer.getClient().getInputsManager().getMouse();
if (getInventory() == null)
return;
int cornerSize = 8 * scale;
int internalWidth = getInventory().getWidth() * 24 * scale;
int height = summary ? 1 : getInventory().getHeight();
int internalHeight = (height + (summary ? 0 : 1) + blankLines) * 24 * scale;
int slotSize = 24 * scale;
Texture2D inventoryTexture = renderer.textures().getTexture("./textures/gui/inventory/inventory.png");
inventoryTexture.setLinearFiltering(false);
Vector4f color = new Vector4f(1f, 1f, 1f, summary ? 0.5f : 1f);
// All 8 corners
renderer.getGuiRenderer().drawBoxWindowsSpaceWithSize(x, y + internalHeight + cornerSize, cornerSize, cornerSize, 0, 0.03125f, 0.03125f, 0, inventoryTexture, true, true, color);
renderer.getGuiRenderer().drawBoxWindowsSpaceWithSize(x + cornerSize, y + internalHeight + cornerSize, internalWidth, cornerSize, 0.03125f, 0.03125f, 0.96875f, 0, inventoryTexture, true, true, color);
renderer.getGuiRenderer().drawBoxWindowsSpaceWithSize(x + cornerSize + internalWidth, y + internalHeight + cornerSize, cornerSize, cornerSize, 0.96875f, 0.03125f, 1f, 0, inventoryTexture, true, true, color);
renderer.getGuiRenderer().drawBoxWindowsSpaceWithSize(x, y, cornerSize, cornerSize, 0, 1f, 0.03125f, 248 / 256f, inventoryTexture, true, true, color);
renderer.getGuiRenderer().drawBoxWindowsSpaceWithSize(x + cornerSize, y, internalWidth, cornerSize, 0.03125f, 1f, 0.96875f, 248 / 256f, inventoryTexture, true, true, color);
renderer.getGuiRenderer().drawBoxWindowsSpaceWithSize(x + cornerSize + internalWidth, y, cornerSize, cornerSize, 0.96875f, 1f, 1f, 248 / 256f, inventoryTexture, true, true, color);
renderer.getGuiRenderer().drawBoxWindowsSpaceWithSize(x, y + cornerSize, cornerSize, internalHeight, 0, 248f / 256f, 0.03125f, 8f / 256f, inventoryTexture, true, true, color);
renderer.getGuiRenderer().drawBoxWindowsSpaceWithSize(x + cornerSize + internalWidth, y + cornerSize, cornerSize, internalHeight, 248 / 256f, 248f / 256f, 1f, 8f / 256f, inventoryTexture, true, true, color);
// Actual inventory slots
int sumSlots2HL = 0;
selectedSlot = null;
for (int i = 0; i < getInventory().getWidth(); i++) {
for (int j = 0; j < height; j++) {
boolean mouseOver = mouse.getCursorX() > x + cornerSize + i * slotSize && mouse.getCursorX() <= x + cornerSize + i * slotSize + slotSize && mouse.getCursorY() > y + cornerSize + j * slotSize && mouse.getCursorY() <= y + cornerSize + j * slotSize + slotSize;
// Just a dirt hack to always keep selected slot values where we want them
if (mouseOver && selectedSlot == null) {
selectedSlot = new int[] { i, j };
}
ItemPile selectedPile = null;
if (selectedSlot != null)
selectedPile = getInventory().getItemPileAt(selectedSlot[0], selectedSlot[1]);
ItemPile thisPile = getInventory().getItemPileAt(i, j);
if (summary) {
ItemPile summaryBarSelected = getInventory().getItemPileAt(highlightSlot, 0);
if (summaryBarSelected != null && i == summaryBarSelected.getX()) {
sumSlots2HL = summaryBarSelected.getItem().getDefinition().getSlotsWidth();
}
if (sumSlots2HL > 0 || (summaryBarSelected == null && highlightSlot == i)) {
sumSlots2HL--;
renderer.getGuiRenderer().drawBoxWindowsSpaceWithSize(x + cornerSize + i * slotSize, y + cornerSize + j * slotSize, slotSize, slotSize, 32f / 256f, 176 / 256f, 56 / 256f, 152 / 256f, inventoryTexture, true, true, color);
} else
renderer.getGuiRenderer().drawBoxWindowsSpaceWithSize(x + cornerSize + i * slotSize, y + cornerSize + j * slotSize, slotSize, slotSize, 8f / 256f, 176 / 256f, 32f / 256f, 152 / 256f, inventoryTexture, true, true, color);
} else {
if (mouseOver || (selectedPile != null && thisPile != null && selectedPile.getX() == thisPile.getX() && selectedPile.getY() == thisPile.getY())) {
renderer.getGuiRenderer().drawBoxWindowsSpaceWithSize(x + cornerSize + i * slotSize, y + cornerSize + j * slotSize, slotSize, slotSize, 32f / 256f, 176 / 256f, 56 / 256f, 152 / 256f, inventoryTexture, true, true, color);
} else
renderer.getGuiRenderer().drawBoxWindowsSpaceWithSize(x + cornerSize + i * slotSize, y + cornerSize + j * slotSize, slotSize, slotSize, 8f / 256f, 176 / 256f, 32f / 256f, 152 / 256f, inventoryTexture, true, true, color);
}
}
}
// Blank part ( usefull for special inventories, ie player )
for (int j = getInventory().getHeight(); j < getInventory().getHeight() + blankLines; j++) {
for (int i = 0; i < getInventory().getWidth(); i++) {
if (j == getInventory().getHeight()) {
if (i == getInventory().getWidth() - 1)
renderer.getGuiRenderer().drawBoxWindowsSpaceWithSize(x + cornerSize + i * slotSize, y + cornerSize + j * slotSize, slotSize, slotSize, 224f / 256f, 152 / 256f, 248 / 256f, 128 / 256f, inventoryTexture, true, true, color);
else
renderer.getGuiRenderer().drawBoxWindowsSpaceWithSize(x + cornerSize + i * slotSize, y + cornerSize + j * slotSize, slotSize, slotSize, 8f / 256f, 152 / 256f, 32f / 256f, 128 / 256f, inventoryTexture, true, true, color);
} else {
if (i == getInventory().getWidth() - 1)
renderer.getGuiRenderer().drawBoxWindowsSpaceWithSize(x + cornerSize + i * slotSize, y + cornerSize + j * slotSize, slotSize, slotSize, 224f / 256f, 56 / 256f, 248 / 256f, 32 / 256f, inventoryTexture, true, true, color);
else
renderer.getGuiRenderer().drawBoxWindowsSpaceWithSize(x + cornerSize + i * slotSize, y + cornerSize + j * slotSize, slotSize, slotSize, 8f / 256f, 56 / 256f, 32f / 256f, 32 / 256f, inventoryTexture, true, true, color);
}
}
}
// Top part
if (!summary) {
renderer.getGuiRenderer().drawBoxWindowsSpaceWithSize(x + cornerSize, y + cornerSize + internalHeight - slotSize, slotSize, slotSize, 8f / 256f, 32f / 256f, 32f / 256f, 8f / 256f, inventoryTexture, true, true, color);
for (int i = 1; i < getInventory().getWidth() - 2; i++) {
renderer.getGuiRenderer().drawBoxWindowsSpaceWithSize(x + cornerSize + i * slotSize, y + cornerSize + internalHeight - slotSize, slotSize, slotSize, 32f / 256f, 32f / 256f, 56f / 256f, 8f / 256f, inventoryTexture, true, true, color);
}
renderer.getGuiRenderer().drawBoxWindowsSpaceWithSize(x + cornerSize + (getInventory().getWidth() - 2) * slotSize, y + cornerSize + internalHeight - slotSize, slotSize, slotSize, 200f / 256f, 32f / 256f, 224 / 256f, 8f / 256f, inventoryTexture, true, true, color);
closedButton = mouse.getCursorX() > x + cornerSize + (getInventory().getWidth() - 1) * slotSize && mouse.getCursorX() <= x + cornerSize + (getInventory().getWidth() - 1) * slotSize + slotSize && mouse.getCursorY() > y + cornerSize + internalHeight - slotSize && mouse.getCursorY() <= y + cornerSize + internalHeight;
renderer.getGuiRenderer().drawBoxWindowsSpaceWithSize(x + cornerSize + (getInventory().getWidth() - 1) * slotSize, y + cornerSize + internalHeight - slotSize, slotSize, slotSize, 224f / 256f, 32f / 256f, 248f / 256f, 8f / 256f, inventoryTexture, true, true, color);
renderer.getFontRenderer().drawStringWithShadow(renderer.getFontRenderer().getFont("LiberationSans-Bold", 12), x + cornerSize + 6, y + cornerSize + internalHeight - slotSize + 2 * scale, getInventory().getInventoryName(), scale, scale, new Vector4f(1, 1, 1, 1));
}
// Get rid of any remaining GUI elements or else they will draw on top of the
// items
renderer.getGuiRenderer().drawBuffer();
// Draw the actual items
for (ItemPile pile : getInventory()) {
int i = pile.getX();
int j = pile.getY();
if (pile != null && (!summary || j == 0)) {
int center = summary ? slotSize * (pile.getItem().getDefinition().getSlotsHeight() - 1) / 2 : 0;
pile.getItem().getDefinition().getRenderer().renderItemInInventory(renderer, pile, x + cornerSize + i * slotSize, y - center + cornerSize + j * slotSize, scale);
}
}
// )
for (ItemPile pile : getInventory()) {
int i = pile.getX();
int j = pile.getY();
if (pile != null && (!summary || j == 0)) {
int amountToDisplay = pile.getAmount();
// If we selected this item
if ((InventoryView.selectedItem != null && InventoryView.selectedItem.getInventory() != null && getInventory().equals(InventoryView.selectedItem.getInventory()) && InventoryView.selectedItem.getX() == i && InventoryView.selectedItem.getY() == j)) {
amountToDisplay -= InventoryView.selectedItemAmount;
}
// Draw amount of items in the pile
if (amountToDisplay > 1)
renderer.getFontRenderer().drawStringWithShadow(renderer.getFontRenderer().defaultFont(), x + cornerSize + ((pile.getItem().getDefinition().getSlotsWidth() - 1.0f) + i) * slotSize, y + cornerSize + j * slotSize, amountToDisplay + "", scale, scale, new Vector4f(1, 1, 1, 1));
}
}
}
Aggregations