Скроллинг в гуи

Версия Minecraft
1.7.10
128
12
Как сделать скроллинг в своём гуи? Пример: Креативные вкладки.

Java:
package ru.whitewarrior.testmod;

import org.lwjgl.opengl.GL11;

import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.util.ResourceLocation;
import sun.font.FontScaler;

public class GuiForge extends GuiScreen {
    protected static final ResourceLocation BUTTON_TEXTURES = new ResourceLocation("textures/gui/widgets.png");

    int guiWidth = 256;
    int guiHeight = 256;   
    Minecraft mc = Minecraft.getMinecraft();

    @Override
    public void drawScreen(int x, int y, float ticks) {
        ScaledResolution scale = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight);
        int width = scale.getScaledWidth();
        int height = scale.getScaledHeight();
        
        int tabWidth = 40;
        int tabHeight = 20;
        
        int guiX = (width - guiWidth) / 2;
        int guiY = (height - guiHeight) / 2;
        GL11.glColor4f(1, 1, 1, 1);
        drawDefaultBackground();
         mc.renderEngine.bindTexture(new ResourceLocation(Main.modid, "textures/gui/ForgeGUI.png"));
        drawTexturedModalRect(guiX, guiY, 0, 0, guiWidth, guiHeight);
 
Решение
Ну вот есть тема в "В разработке" Smart GUI зовется. Чтобы сделать там гуи тебе нужно написать 1 строку:
Java:
addOverlay(new VerticalScrollingOverlay(тут идет куча параметров));
Чтобы потом, например, добавить туда отцентрированый по x текст нужно сделать это:
Java:
VerticalScrollingOverlay scrl = new VerticalScrollingOverlay(...);
ScaledOverlay text = new TextOverlay(50, 50, "Hello, world!");
text.setScalingPosMode(CENTRALIZE_X);
scrl.addOverlay(text);
По моему это довольно просто
Ладно, буду довольствоваться листами пока, что...
 
Ну вот есть тема в "В разработке" Smart GUI зовется. Чтобы сделать там гуи тебе нужно написать 1 строку:
Java:
addOverlay(new VerticalScrollingOverlay(тут идет куча параметров));
Чтобы потом, например, добавить туда отцентрированый по x текст нужно сделать это:
Java:
VerticalScrollingOverlay scrl = new VerticalScrollingOverlay(...);
ScaledOverlay text = new TextOverlay(50, 50, "Hello, world!");
text.setScalingPosMode(CENTRALIZE_X);
scrl.addOverlay(text);
По моему это довольно просто
 
На самом деле скролинг это не трудно. И стоит хотябы раз сделать его с нуля.
Самый простой пример.
Это кнопка. При нажатии на которую считывается изменение положения мышки по Y.
И собственно есть переменная куда записывается это все, пускай она будет называться offset.
и вот ты рисуешь что угодно, где угодно. Но в рисовании всегда в Y координату добавляй offset.
Но тогда у тебя будет видно то что за гуи(если оно не на весь экран, а только на часть) и тут нужно использовать scissor test.
Про все можно почитать в интернете. К примеру на этом самом форуме. Почти про все есть. Даже scissor test тут описан.
Много можно понять если сделать полностью самому.
 
На самом деле скролинг это не трудно. И стоит хотябы раз сделать его с нуля.
Самый простой пример.
Это кнопка. При нажатии на которую считывается изменение положения мышки по Y.
И собственно есть переменная куда записывается это все, пускай она будет называться offset.
и вот ты рисуешь что угодно, где угодно. Но в рисовании всегда в Y координату добавляй offset.
Но тогда у тебя будет видно то что за гуи(если оно не на весь экран, а только на часть) и тут нужно использовать scissor test.
Про все можно почитать в интернете. К примеру на этом самом форуме. Почти про все есть. Даже scissor test тут описан.
Много можно понять если сделать полностью самому.
У меня очень много написано с этим скролиингом. Например ты можешь всунуть скроллинг в скроллинг и тогда оно будет находить пересечения. Но пожалуй действительно написать с нуля стоит.
 
Назад
Сверху