aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Button.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/Button.cpp
parentdef8cb415354ac390b7e89052a50605285f1aca9 (diff)
Initial commit
Diffstat (limited to 'Minecraft.Client/Button.cpp')
-rw-r--r--Minecraft.Client/Button.cpp85
1 files changed, 85 insertions, 0 deletions
diff --git a/Minecraft.Client/Button.cpp b/Minecraft.Client/Button.cpp
new file mode 100644
index 00000000..7de105c1
--- /dev/null
+++ b/Minecraft.Client/Button.cpp
@@ -0,0 +1,85 @@
+#include "stdafx.h"
+#include "Button.h"
+#include "Textures.h"
+
+Button::Button(int id, int x, int y, const wstring& msg)
+{
+ init(id, x, y, 200, 20, msg);
+}
+
+Button::Button(int id, int x, int y, int w, int h, const wstring& msg)
+{
+ init(id, x, y, w, h, msg);
+}
+
+// 4J - added
+void Button::init(int id, int x, int y, int w, int h, const wstring& msg)
+{
+ active = true;
+ visible = true;
+
+ // this bit of code from original ctor
+ this->id = id;
+ this->x = x;
+ this->y = y;
+ this->w = w;
+ this->h = h;
+ this->msg = msg;
+}
+
+int Button::getYImage(bool hovered)
+{
+ int res = 1;
+ if (!active) res = 0;
+ else if (hovered) res = 2;
+ return res;
+}
+
+void Button::render(Minecraft *minecraft, int xm, int ym)
+{
+ if (!visible) return;
+
+ Font *font = minecraft->font;
+
+ glBindTexture(GL_TEXTURE_2D, minecraft->textures->loadTexture(TN_GUI_GUI)); // 4J was L"/gui/gui.png"
+ glColor4f(1, 1, 1, 1);
+
+
+ bool hovered = xm >= x && ym >= y && xm < x + w && ym < y + h;
+ int yImage = getYImage(hovered);
+
+ blit(x, y, 0, 46 + yImage * 20, w / 2, h);
+ blit(x + w / 2, y, 200 - w / 2, 46 + yImage * 20, w / 2, h);
+
+ renderBg(minecraft, xm, ym);
+
+ if (!active)
+ {
+ drawCenteredString(font, msg, x + w / 2, y + (h - 8) / 2, 0xffa0a0a0);
+ }
+ else
+ {
+ if (hovered)
+ {
+ drawCenteredString(font, msg, x + w / 2, y + (h - 8) / 2, 0xffffa0);
+ }
+ else
+ {
+ drawCenteredString(font, msg, x + w / 2, y + (h - 8) / 2, 0xe0e0e0);
+ }
+ }
+
+}
+
+void Button::renderBg(Minecraft *minecraft, int xm, int ym)
+{
+}
+
+void Button::released(int mx, int my)
+{
+}
+
+bool Button::clicked(Minecraft *minecraft, int mx, int my)
+{
+ return active && mx >= x && my >= y && mx < x + w && my < y + h;
+} \ No newline at end of file