Search in sources :

Example 1 with Mouse

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);
}
Also used : Vector4f(org.joml.Vector4f) Mouse(io.xol.chunkstories.api.input.Mouse)

Example 2 with Mouse

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);
}
Also used : Vector4f(org.joml.Vector4f) Mouse(io.xol.chunkstories.api.input.Mouse) Font(io.xol.chunkstories.api.rendering.text.FontRenderer.Font)

Example 3 with Mouse

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));
    }
}
Also used : Mouse(io.xol.chunkstories.api.input.Mouse) Vector4f(org.joml.Vector4f) PacketInventoryMoveItemPile(io.xol.chunkstories.api.net.packets.PacketInventoryMoveItemPile) ItemPile(io.xol.chunkstories.api.item.inventory.ItemPile) Inventory(io.xol.chunkstories.api.item.inventory.Inventory)

Example 4 with Mouse

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));
        }
    }
}
Also used : Texture2D(io.xol.chunkstories.api.rendering.textures.Texture2D) Mouse(io.xol.chunkstories.api.input.Mouse) Vector4f(org.joml.Vector4f) ItemPile(io.xol.chunkstories.api.item.inventory.ItemPile)

Aggregations

Mouse (io.xol.chunkstories.api.input.Mouse)4 Vector4f (org.joml.Vector4f)4 ItemPile (io.xol.chunkstories.api.item.inventory.ItemPile)2 Inventory (io.xol.chunkstories.api.item.inventory.Inventory)1 PacketInventoryMoveItemPile (io.xol.chunkstories.api.net.packets.PacketInventoryMoveItemPile)1 Font (io.xol.chunkstories.api.rendering.text.FontRenderer.Font)1 Texture2D (io.xol.chunkstories.api.rendering.textures.Texture2D)1