Title menu stuff

This commit is contained in:
2026-03-07 17:19:10 +01:00
parent 199635be0b
commit 196dd08943
3 changed files with 43 additions and 6 deletions
@@ -8,10 +8,18 @@ import java.awt.image.BufferedImage;
public abstract class MinecraftProvider {
public static MinecraftProvider PROVIDER;
public static enum MinecraftScreen {
SelectWorld,
Multiplayer,
Options
}
public abstract IMinecraftClient getClient();
public abstract void setScreen(SaturnScreen screen);
public abstract void setScreen(MinecraftScreen screen);
public abstract Object createIdentifier(String namespace, String path);
public abstract boolean isKeyPressed(int key);
@@ -21,4 +29,6 @@ public abstract class MinecraftProvider {
public abstract void registerBufferedImageTexture(SaturnIdentifier i, BufferedImage bi);
public abstract String getKeyName(int key);
public abstract void stop();
}
@@ -1,6 +1,7 @@
package org.saturnclient.ui.screens;
import org.saturnclient.common.minecraft.MinecraftProvider;
import org.saturnclient.common.minecraft.MinecraftProvider.MinecraftScreen;
import org.saturnclient.config.AnimationConfig;
import org.saturnclient.config.Config;
import org.saturnclient.ui.SaturnScreen;
@@ -31,25 +32,23 @@ public class TitleMenu extends SaturnScreen {
AnimationStagger mainButtonStagger = new AnimationStagger(AnimationConfig.mainMenu);
// TODO implement all of these
mainButtonStagger.draw(new Button("SINGLEPLAYER", () -> {
// MinecraftProvider.PROVIDER.setScreen(new SelectWorldScreen(new TitleMenu()));
MinecraftProvider.PROVIDER.setScreen(MinecraftScreen.SelectWorld);
}).scale(0.69f).dimensions(420, 52).position(0, 0)
.animation(new SlideFade(AnimationConfig.mainMenu, -10)));
mainButtonStagger.draw(new Button("MULTIPLAYER", () -> {
// MinecraftProvider.PROVIDER.setScreen(new MultiplayerScreen(new TitleMenu()));
MinecraftProvider.PROVIDER.setScreen(MinecraftScreen.Multiplayer);
}).scale(0.69f).dimensions(420, 52).position(0, 40)
.animation(new SlideFade(AnimationConfig.mainMenu, -10)));
mainButtonStagger.draw(new Button("OPTIONS", () -> {
// MinecraftProvider.PROVIDER.setScreen(new OptionsScreen(new TitleMenu(), SaturnClient.client.options));
MinecraftProvider.PROVIDER.setScreen(MinecraftScreen.Options);
}).scale(0.69f).dimensions(206, 52).position(0, 80)
.animation(new SlideFade(AnimationConfig.mainMenu, -10)));
mainButtonStagger.draw(new Button("QUIT", () -> {
// client.scheduleStop();
MinecraftProvider.PROVIDER.stop();
}).scale(0.69f).dimensions(206, 52).position(146, 80)
.animation(new SlideFade(AnimationConfig.mainMenu, -10)));
@@ -10,7 +10,11 @@ import org.saturnclient.cosmetics.cloak.utils.IdentifierUtils;
import org.saturnclient.saturnclient.SaturnClient;
import org.saturnclient.ui.SaturnScreen;
import org.saturnclient.ui.SaturnScreenFabric;
import org.saturnclient.ui.screens.TitleMenu;
import net.minecraft.client.gui.screen.multiplayer.MultiplayerScreen;
import net.minecraft.client.gui.screen.option.OptionsScreen;
import net.minecraft.client.gui.screen.world.SelectWorldScreen;
import net.minecraft.util.Identifier;
public class SaturnClientProvider extends MinecraftProvider {
@@ -49,4 +53,28 @@ public class SaturnClientProvider extends MinecraftProvider {
public void setScreen(SaturnScreen screen) {
SaturnClient.client.setScreen(new SaturnScreenFabric(screen));
}
@Override
public void setScreen(MinecraftScreen screen) {
SaturnScreenFabric exitTarget = new SaturnScreenFabric(new TitleMenu());
switch (screen) {
case SelectWorld:
SaturnClient.client.setScreen(new SelectWorldScreen(exitTarget));
break;
case Multiplayer:
SaturnClient.client.setScreen(new MultiplayerScreen(exitTarget));
break;
case Options:
SaturnClient.client.setScreen(new OptionsScreen(exitTarget, SaturnClient.client.options));
break;
}
}
@Override
public void stop() {
SaturnClient.client.scheduleStop();
}
}