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/NameEntryScreen.cpp | |
| parent | def8cb415354ac390b7e89052a50605285f1aca9 (diff) | |
Initial commit
Diffstat (limited to 'Minecraft.Client/NameEntryScreen.cpp')
| -rw-r--r-- | Minecraft.Client/NameEntryScreen.cpp | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/Minecraft.Client/NameEntryScreen.cpp b/Minecraft.Client/NameEntryScreen.cpp new file mode 100644 index 00000000..c9df7024 --- /dev/null +++ b/Minecraft.Client/NameEntryScreen.cpp @@ -0,0 +1,78 @@ +#include "stdafx.h" +#include "NameEntryScreen.h" +#include "Button.h" +#include "..\Minecraft.World\StringHelpers.h" + +const wstring NameEntryScreen::allowedChars = L"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ,.:-_'*!\"#%/()=+?[]{}<>"; + +NameEntryScreen::NameEntryScreen(Screen *lastScreen, const wstring& oldName, int slot) +{ + frame = 0; // 4J added + + this->lastScreen = lastScreen; + this->slot = slot; + this->name = oldName; + if (name==L"-") name = L""; +} + +void NameEntryScreen::init() +{ + buttons.clear(); + Keyboard::enableRepeatEvents(true); + buttons.push_back(new Button(0, width / 2 - 100, height / 4 + 24 * 5, L"Save")); + buttons.push_back(new Button(1, width / 2 - 100, height / 4 + 24 * 6, L"Cancel")); + buttons[0]->active = trimString(name).length() > 1; +} + +void NameEntryScreen::removed() +{ + Keyboard::enableRepeatEvents(false); +} + +void NameEntryScreen::tick() +{ + frame++; +} + +void NameEntryScreen::buttonClicked(Button button) +{ + if (!button.active) return; + + if (button.id == 0 && trimString(name).length() > 1) + { + minecraft->saveSlot(slot, trimString(name)); + minecraft->setScreen(NULL); +// minecraft->grabMouse(); // 4J - removed + } + if (button.id == 1) + { + minecraft->setScreen(lastScreen); + } +} + +void NameEntryScreen::keyPressed(wchar_t ch, int eventKey) +{ + if (eventKey == Keyboard::KEY_BACK && name.length() > 0) name = name.substr(0, name.length() - 1); + if (allowedChars.find(ch) != wstring::npos && name.length()<64) + { + name += ch; + } + buttons[0]->active = trimString(name).length() > 1; +} + +void NameEntryScreen::render(int xm, int ym, float a) +{ + renderBackground(); + + drawCenteredString(font, title, width / 2, 40, 0xffffff); + + int bx = width / 2 - 100; + int by = height / 2 - 10; + int bw = 200; + int bh = 20; + fill(bx - 1, by - 1, bx + bw + 1, by + bh + 1, 0xffa0a0a0); + fill(bx, by, bx + bw, by + bh, 0xff000000); + drawString(font, name + (frame / 6 % 2 == 0 ? L"_" : L""), bx + 4, by + (bh - 8) / 2, 0xe0e0e0); + + Screen::render(xm, ym, a); +}
\ No newline at end of file |
