mirror of
https://github.com/4jcraft/4jcraft.git
synced 2026-04-25 00:23:44 +00:00
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
116 lines
3.9 KiB
C++
116 lines
3.9 KiB
C++
#include "../../Platform/stdafx.h"
|
|
#include "PauseScreen.h"
|
|
#include "../Button.h"
|
|
#include "../../GameState/StatsCounter.h"
|
|
#include "MessageScreen.h"
|
|
#include "OptionsScreen.h"
|
|
#include "TitleScreen.h"
|
|
#include "../../Level/MultiPlayerLevel.h"
|
|
#include "../../../Minecraft.World/Headers/net.minecraft.locale.h"
|
|
#include "../../../Minecraft.World/Headers/net.minecraft.world.level.h"
|
|
#include "../../../Minecraft.World/Headers/net.minecraft.stats.h"
|
|
#include "../../Player/LocalPlayer.h"
|
|
#include "../../Player/MultiPlayerLocalPlayer.h"
|
|
#include "../../MinecraftServer.h"
|
|
|
|
PauseScreen::PauseScreen() {
|
|
saveStep = 0;
|
|
visibleTime = 0;
|
|
}
|
|
|
|
void PauseScreen::init() {
|
|
saveStep = 0;
|
|
buttons.clear();
|
|
int yo = -16;
|
|
buttons.push_back(new Button(1, width / 2 - 100, height / 4 + 24 * 5 + yo,
|
|
L"Save and quit to title"));
|
|
if (minecraft->isClientSide()) {
|
|
buttons[0]->msg = L"Disconnect";
|
|
}
|
|
|
|
buttons.push_back(new Button(4, width / 2 - 100, height / 4 + 24 * 1 + yo,
|
|
L"LBack to game"));
|
|
buttons.push_back(new Button(0, width / 2 - 100, height / 4 + 24 * 4 + yo,
|
|
L"LOptions..."));
|
|
|
|
buttons.push_back(new Button(4, width / 2 - 100, height / 4 + 24 * 1 + yo,
|
|
I18n::get(L"menu.returnToGame")));
|
|
buttons.push_back(new Button(0, width / 2 - 100, height / 4 + 24 * 4 + yo,
|
|
I18n::get(L"menu.options")));
|
|
|
|
buttons.push_back(new Button(5, width / 2 - 100, height / 4 + 24 * 2 + yo,
|
|
98, 20, I18n::get(L"gui.achievements")));
|
|
buttons.push_back(new Button(6, width / 2 + 2, height / 4 + 24 * 2 + yo, 98,
|
|
20, I18n::get(L"gui.stats")));
|
|
/*
|
|
* if (minecraft->serverConnection!=null) { buttons.get(1).active =
|
|
* false; buttons.get(2).active = false; buttons.get(3).active = false;
|
|
* }
|
|
*/
|
|
}
|
|
|
|
void PauseScreen::exitWorld(Minecraft* minecraft, bool save) {
|
|
// 4jcraft: made our own static method for use in the java gui (other
|
|
// places such as the deathscreen need this)
|
|
MinecraftServer* server = MinecraftServer::getInstance();
|
|
|
|
minecraft->setScreen(new MessageScreen(L"Leaving world"));
|
|
if (g_NetworkManager.IsHost()) {
|
|
server->setSaveOnExit(save);
|
|
}
|
|
app.SetAction(minecraft->player->GetXboxPad(), eAppAction_ExitWorld);
|
|
}
|
|
|
|
void PauseScreen::buttonClicked(Button* button) {
|
|
if (button->id == 0) {
|
|
minecraft->setScreen(new OptionsScreen(this, minecraft->options));
|
|
}
|
|
if (button->id == 1) {
|
|
// if (minecraft->isClientSide())
|
|
// {
|
|
// minecraft->level->disconnect();
|
|
// }
|
|
|
|
// minecraft->setLevel(NULL);
|
|
// minecraft->setScreen(new TitleScreen());
|
|
|
|
// 4jcraft: exit with our new exitWorld method
|
|
exitWorld(minecraft, true);
|
|
}
|
|
if (button->id == 4) {
|
|
minecraft->setScreen(NULL);
|
|
// minecraft->grabMouse(); // 4J - removed
|
|
}
|
|
|
|
if (button->id == 5) {
|
|
// minecraft->setScreen(new AchievementScreen(minecraft->stats));
|
|
// // 4J TODO - put back
|
|
}
|
|
if (button->id == 6) {
|
|
// minecraft->setScreen(new StatsScreen(this, minecraft->stats));
|
|
// // 4J TODO - put back
|
|
}
|
|
}
|
|
|
|
void PauseScreen::tick() {
|
|
Screen::tick();
|
|
visibleTime++;
|
|
}
|
|
|
|
void PauseScreen::render(int xm, int ym, float a) {
|
|
renderBackground();
|
|
|
|
bool isSaving = false; //! minecraft->level->pauseSave(saveStep++);
|
|
if (isSaving || visibleTime < 20) {
|
|
float col = ((visibleTime % 10) + a) / 10.0f;
|
|
col = Mth::sin(col * PI * 2) * 0.2f + 0.8f;
|
|
int br = (int)(255 * col);
|
|
|
|
drawString(font, L"Saving level..", 8, height - 16,
|
|
br << 16 | br << 8 | br);
|
|
}
|
|
|
|
drawCenteredString(font, L"Game menu", width / 2, 40, 0xffffff);
|
|
|
|
Screen::render(xm, ym, a);
|
|
} |