diff options
Diffstat (limited to 'Minecraft.Client/ControlsScreen.cpp')
| -rw-r--r-- | Minecraft.Client/ControlsScreen.cpp | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/Minecraft.Client/ControlsScreen.cpp b/Minecraft.Client/ControlsScreen.cpp new file mode 100644 index 00000000..487dbb16 --- /dev/null +++ b/Minecraft.Client/ControlsScreen.cpp @@ -0,0 +1,80 @@ +#include "stdafx.h" +#include "ControlsScreen.h" +#include "Options.h" +#include "SmallButton.h" +#include "..\Minecraft.World\net.minecraft.locale.h" + +ControlsScreen::ControlsScreen(Screen *lastScreen, Options *options) +{ + // 4J - added initialisers + title == L"Controls"; + selectedKey = -1; + + this->lastScreen = lastScreen; + this->options = options; +} + +int ControlsScreen::getLeftScreenPosition() +{ + return width / 2 - 155; +} + +void ControlsScreen::init() +{ + Language *language = Language::getInstance(); + + int leftPos = getLeftScreenPosition(); + for (int i = 0; i < Options::keyMappings_length; i++) + { + buttons.push_back(new SmallButton(i, leftPos + i % 2 * ROW_WIDTH, height / 6 + 24 * (i >> 1), BUTTON_WIDTH, 20, options->getKeyMessage(i))); + } + + buttons.push_back(new Button(200, width / 2 - 100, height / 6 + 24 * 7, language->getElement(L"gui.done"))); + title = language->getElement(L"controls.title"); + +} + +void ControlsScreen::buttonClicked(Button *button) +{ + for (int i = 0; i < Options::keyMappings_length; i++) + { + buttons[i]->msg = options->getKeyMessage(i); + } + if (button->id == 200) + { + minecraft->setScreen(lastScreen); + } + else + { + selectedKey = button->id; + button->msg = L"> " + options->getKeyMessage(button->id) + L" <"; + } +} + +void ControlsScreen::keyPressed(wchar_t eventCharacter, int eventKey) +{ + if (selectedKey >= 0) + { + options->setKey(selectedKey, eventKey); + buttons[selectedKey]->msg = options->getKeyMessage(selectedKey); + selectedKey = -1; + } + else + { + Screen::keyPressed(eventCharacter, eventKey); + } +} + +void ControlsScreen::render(int xm, int ym, float a) +{ + renderBackground(); + drawCenteredString(font, title, width / 2, 20, 0xffffff); + + int leftPos = getLeftScreenPosition(); + for (int i = 0; i < Options::keyMappings_length; i++) + { + drawString(font, options->getKeyDescription(i), leftPos + i % 2 * ROW_WIDTH + BUTTON_WIDTH + 6, height / 6 + 24 * (i >> 1) + 7, 0xffffffff); + } + + Screen::render(xm, ym, a); +}
\ No newline at end of file |
