4jcraft/Minecraft.Client/UI/Screens/DeathScreen.cpp
Sally Knight 0fbbac1cde feat(jui): add world leaving
You will now be able to leave the world from all places where you'd usually be able to (Pause screen, death screen)
Should be identical to the way it's done on Iggy/XUI
2026-03-19 15:05:32 +03:00

63 lines
1.9 KiB
C++

#include "../../Platform/stdafx.h"
#include "../../../Minecraft.World/Util/StringHelpers.h"
#include "DeathScreen.h"
#include "../Button.h"
#include "../../Player/MultiPlayerLocalPlayer.h"
#include "PauseScreen.h"
#include "TitleScreen.h"
void DeathScreen::init() {
buttons.clear();
buttons.push_back(
new Button(1, width / 2 - 100, height / 4 + 24 * 3, L"Respawn"));
buttons.push_back(
new Button(2, width / 2 - 100, height / 4 + 24 * 4, L"Title menu"));
if (minecraft->user == NULL) {
buttons[1]->active = false;
}
}
void DeathScreen::keyPressed(char eventCharacter, int eventKey) {}
void DeathScreen::buttonClicked(Button* button) {
if (button->id == 0) {
// minecraft.setScreen(new OptionsScreen(this,
// minecraft.options));
}
if (button->id == 1) {
minecraft->player->respawn();
minecraft->setScreen(NULL);
// minecraft.setScreen(new NewLevelScreen(this));
}
if (button->id == 2) {
// minecraft->setLevel(NULL);
// minecraft->setScreen(new TitleScreen());
// 4jcraft: use the static method from PauseScreen to exit
PauseScreen::exitWorld(minecraft, true);
}
}
void DeathScreen::render(int xm, int ym, float a) {
fillGradient(0, 0, width, height, 0x60500000, 0xa0803030);
glPushMatrix();
glScalef(2, 2, 2);
drawCenteredString(font, L"Game over!", width / 2 / 2, 60 / 2, 0xffffff);
glPopMatrix();
drawCenteredString(font,
L"Score: &e" + _toString(minecraft->player->getScore()),
width / 2, 100, 0xffffff);
Screen::render(xm, ym, a);
// 4J - debug code - remove
// static int count = 0;
// if (count++ == 100) {
// count = 0;
// buttonClicked(buttons[0]);
// }
}
bool DeathScreen::isPauseScreen() { return false; }