aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/PauseScreen.cpp
blob: 18d066b5a9a5487a53baea1c5d1d34793e128b59 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#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);
}