diff options
| author | daoge_cmd <3523206925@qq.com> | 2026-03-01 12:16:08 +0800 |
|---|---|---|
| committer | daoge_cmd <3523206925@qq.com> | 2026-03-01 12:16:08 +0800 |
| commit | b691c43c44ff180d10e7d4a9afc83b98551ff586 (patch) | |
| tree | 3e9849222cbc6ba49f2f1fc6e5fe7179632c7390 /Minecraft.Client/Button.cpp | |
| parent | def8cb415354ac390b7e89052a50605285f1aca9 (diff) | |
Initial commit
Diffstat (limited to 'Minecraft.Client/Button.cpp')
| -rw-r--r-- | Minecraft.Client/Button.cpp | 85 |
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 |
