aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/ControlsScreen.cpp
diff options
context:
space:
mode:
authordaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
committerdaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
commitb691c43c44ff180d10e7d4a9afc83b98551ff586 (patch)
tree3e9849222cbc6ba49f2f1fc6e5fe7179632c7390 /Minecraft.Client/ControlsScreen.cpp
parentdef8cb415354ac390b7e89052a50605285f1aca9 (diff)
Initial commit
Diffstat (limited to 'Minecraft.Client/ControlsScreen.cpp')
-rw-r--r--Minecraft.Client/ControlsScreen.cpp80
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