generated from MrSphay/codex-agent-repository-kit
145 lines
5.0 KiB
Java
145 lines
5.0 KiB
Java
/*
|
|
* Decompiled with CFR 0.152.
|
|
*/
|
|
package com.vinlanx.explosionoverhaul.client;
|
|
|
|
import com.mojang.blaze3d.systems.RenderSystem;
|
|
import com.vinlanx.explosionoverhaul.client.IntroMusicManager;
|
|
import com.vinlanx.explosionoverhaul.client.SpriteSheetAnimator;
|
|
import com.vinlanx.explosionoverhaul.client.VinlanxSplashScreen;
|
|
import net.minecraft.client.Minecraft;
|
|
import net.minecraft.client.gui.GuiGraphics;
|
|
import net.minecraft.client.gui.screens.Screen;
|
|
import net.minecraft.client.gui.screens.TitleScreen;
|
|
import net.minecraft.client.renderer.GameRenderer;
|
|
import net.minecraft.network.chat.Component;
|
|
import net.minecraft.resources.ResourceLocation;
|
|
|
|
public class IntroSplashScreen
|
|
extends Screen {
|
|
private static final ResourceLocation SPRITE_SHEET = ResourceLocation.fromNamespaceAndPath((String)"explosionoverhaul", (String)"intro_gui/screen.png");
|
|
private static final int FRAME_WIDTH = 1280;
|
|
private static final int FRAME_HEIGHT = 720;
|
|
private static final int COLUMNS = 14;
|
|
private static final int ROWS = 14;
|
|
private static final int TOTAL_FRAMES = 196;
|
|
private static final int FPS = 24;
|
|
private SpriteSheetAnimator animator;
|
|
private IntroMusicManager musicManager;
|
|
private long lastFrameTime = System.currentTimeMillis();
|
|
private boolean animationFinished = false;
|
|
|
|
public IntroSplashScreen() {
|
|
super((Component)Component.m_237113_((String)"Intro"));
|
|
}
|
|
|
|
protected void m_7856_() {
|
|
super.m_7856_();
|
|
this.animator = new SpriteSheetAnimator(SPRITE_SHEET, 1280, 720, 14, 14, 196, 24);
|
|
this.animator.load();
|
|
this.animator.play();
|
|
this.musicManager = IntroMusicManager.getInstance();
|
|
this.musicManager.start();
|
|
}
|
|
|
|
public void m_86600_() {
|
|
super.m_86600_();
|
|
long currentTime = System.currentTimeMillis();
|
|
float deltaTime = (float)(currentTime - this.lastFrameTime) / 1000.0f;
|
|
this.lastFrameTime = currentTime;
|
|
if (this.animator != null) {
|
|
this.animator.tick(deltaTime);
|
|
if (this.animator.getCurrentFrame() >= 195 && !this.animationFinished) {
|
|
this.animationFinished = true;
|
|
this.transitionToFirstTimeScreen();
|
|
}
|
|
}
|
|
if (this.musicManager != null) {
|
|
this.musicManager.tick(deltaTime);
|
|
}
|
|
}
|
|
|
|
public void m_88315_(GuiGraphics graphics, int mouseX, int mouseY, float partialTick) {
|
|
int displayWidth;
|
|
int displayHeight;
|
|
graphics.m_280509_(0, 0, this.f_96543_, this.f_96544_, -16777216);
|
|
if (this.animator == null) {
|
|
return;
|
|
}
|
|
ResourceLocation texture = this.animator.getTextureLocation();
|
|
if (texture == null) {
|
|
return;
|
|
}
|
|
float screenAspectRatio = (float)this.f_96543_ / (float)this.f_96544_;
|
|
float targetAspectRatio = 1.7777778f;
|
|
if (screenAspectRatio > targetAspectRatio) {
|
|
displayHeight = this.f_96544_;
|
|
displayWidth = (int)((float)displayHeight * targetAspectRatio);
|
|
} else {
|
|
displayWidth = this.f_96543_;
|
|
displayHeight = (int)((float)displayWidth / targetAspectRatio);
|
|
}
|
|
int x = (this.f_96543_ - displayWidth) / 2;
|
|
int y = (this.f_96544_ - displayHeight) / 2;
|
|
RenderSystem.setShader(GameRenderer::m_172817_);
|
|
RenderSystem.setShaderTexture((int)0, (ResourceLocation)texture);
|
|
RenderSystem.setShaderColor((float)1.0f, (float)1.0f, (float)1.0f, (float)1.0f);
|
|
RenderSystem.enableBlend();
|
|
RenderSystem.defaultBlendFunc();
|
|
graphics.m_280411_(texture, x, y, displayWidth, displayHeight, 0.0f, 0.0f, 1280, 720, 1280, 720);
|
|
RenderSystem.disableBlend();
|
|
}
|
|
|
|
public boolean m_6913_() {
|
|
return true;
|
|
}
|
|
|
|
public boolean m_7933_(int keyCode, int scanCode, int modifiers) {
|
|
if (keyCode == 256) {
|
|
this.skipToNext();
|
|
return true;
|
|
}
|
|
return super.m_7933_(keyCode, scanCode, modifiers);
|
|
}
|
|
|
|
public boolean m_6375_(double mouseX, double mouseY, int button) {
|
|
this.skipToNext();
|
|
return true;
|
|
}
|
|
|
|
public boolean m_7043_() {
|
|
return false;
|
|
}
|
|
|
|
public void m_7861_() {
|
|
super.m_7861_();
|
|
if (this.animator != null) {
|
|
this.animator.close();
|
|
}
|
|
if (this.musicManager != null) {
|
|
this.musicManager.stopBoomSound();
|
|
}
|
|
}
|
|
|
|
private void skipToNext() {
|
|
this.animationFinished = true;
|
|
this.transitionToFirstTimeScreen();
|
|
}
|
|
|
|
private void transitionToFirstTimeScreen() {
|
|
Minecraft mc = Minecraft.m_91087_();
|
|
if (!(mc.f_91080_ instanceof TitleScreen)) {
|
|
mc.execute(() -> {
|
|
if (mc.f_91080_ instanceof TitleScreen) {
|
|
mc.m_91152_((Screen)new VinlanxSplashScreen());
|
|
} else {
|
|
mc.m_91152_((Screen)new VinlanxSplashScreen());
|
|
}
|
|
});
|
|
return;
|
|
}
|
|
mc.m_91152_((Screen)new VinlanxSplashScreen());
|
|
}
|
|
}
|
|
|