Помогите сделать оптимизацию под все экраны!
package dev.cloudmc.gui.titlescreen;
import dev.cloudmc.Cloud;
import dev.cloudmc.gui.ClientStyle;
import dev.cloudmc.helpers.DirHelper;
import dev.cloudmc.helpers.Helper2D;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiMultiplayer;
import net.minecraft.client.gui.GuiOptions;
import net.minecraft.client.gui.GuiWorldSelection;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.FloatControl;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
public class TitleScreen extends Panorama {
private final ArrayList<Button> buttons = new ArrayList<>();
private final Button singlePlayerButton;
private final Button multiPlayerButton;
private final Button settingsButton;
private final Button exitButton;
public TitleScreen() {
if (!DirHelper.first) {
new Thread(() -> {
try {
AudioInputStream ais = AudioSystem
.getAudioInputStream(new File(Minecraft.getMinecraft().mcDataDir + "/music.wav"));
Clip clip = AudioSystem.getClip();
clip.open(ais);
FloatControl vc = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);
vc.setValue(0.5F);
clip.loop(Clip.LOOP_CONTINUOUSLY);
clip.start();
} catch (Exception e) {
e.printStackTrace();
}
}).start();
}
DirHelper.first = true;
int buttonWidth = 150;
int buttonHeight = 20;
int spacing = 10;
int centerX = width / 2 - buttonWidth / 2;
int startY = height / 2 - (buttonHeight * 2 + spacing * 3) / 2;
singlePlayerButton = new Button("Singleplayer", centerX, startY);
addButton(singlePlayerButton);
multiPlayerButton = new Button("Multiplayer", centerX, startY + buttonHeight + spacing);
addButton(multiPlayerButton);
settingsButton = new Button("Settings", centerX, startY + 2 * (buttonHeight + spacing));
addButton(settingsButton);
exitButton = new Button("Exit", centerX, startY + 3 * (buttonHeight + spacing));
addButton(exitButton);
}
@Override
public void drawScreen(int mouseX, int mouseY, float partialTicks) {
super.drawScreen(mouseX, mouseY, partialTicks);
for (Button button : buttons) {
button.renderButton(mouseX, mouseY, button.getX(), button.getY());
}
drawLogo();
}
@Override
public void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException {
for (Button button : buttons) {
if (button.isPressed(mouseX, mouseY)) {
if (button == singlePlayerButton) {
mc.displayGuiScreen(new GuiWorldSelection(this));
} else if (button == multiPlayerButton) {
mc.displayGuiScreen(new GuiMultiplayer(this));
} else if (button == settingsButton) {
mc.displayGuiScreen(new GuiOptions(this, mc.gameSettings));
} else if (button == exitButton) {
mc.shutdown();
}
}
}
super.mouseClicked(mouseX, mouseY, mouseButton);
}
private void drawLogo() {
int logoWidth = 100;
int logoHeight = 100;
int logoX = width / 2 - logoWidth / 2;
int logoY = height / 2 - logoHeight / 2 - 100;
Helper2D.drawPicture(logoX, logoY, logoWidth, logoHeight, 0x40ffffff, "wave.png");
}
private void addButton(Button button) {
buttons.add(button);
}
}