This code was not tested and breaks in Release builds, reverting to restore
functionality of the nightly. All in-game menus do not work and generating
a world crashes.
This reverts commit a9be52c41a.
99 lines
2.6 KiB
C++
99 lines
2.6 KiB
C++
#include "stdafx.h"
|
|
#include "PauseScreen.h"
|
|
#include "Button.h"
|
|
#include "StatsCounter.h"
|
|
#include "OptionsScreen.h"
|
|
#include "TitleScreen.h"
|
|
#include "MultiPlayerLevel.h"
|
|
#include "..\Minecraft.World\net.minecraft.locale.h"
|
|
#include "..\Minecraft.World\net.minecraft.world.level.h"
|
|
#include "..\Minecraft.World\net.minecraft.stats.h"
|
|
#include "..\Minecraft.Client\LocalPlayer.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(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::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());
|
|
}
|
|
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);
|
|
} |