aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/ChatScreen.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/ChatScreen.cpp
parentdef8cb415354ac390b7e89052a50605285f1aca9 (diff)
Initial commit
Diffstat (limited to 'Minecraft.Client/ChatScreen.cpp')
-rw-r--r--Minecraft.Client/ChatScreen.cpp89
1 files changed, 89 insertions, 0 deletions
diff --git a/Minecraft.Client/ChatScreen.cpp b/Minecraft.Client/ChatScreen.cpp
new file mode 100644
index 00000000..b68e6cac
--- /dev/null
+++ b/Minecraft.Client/ChatScreen.cpp
@@ -0,0 +1,89 @@
+#include "stdafx.h"
+#include "ChatScreen.h"
+#include "MultiplayerLocalPlayer.h"
+#include "..\Minecraft.World\SharedConstants.h"
+#include "..\Minecraft.World\StringHelpers.h"
+
+const wstring ChatScreen::allowedChars = SharedConstants::acceptableLetters;
+
+ChatScreen::ChatScreen()
+{
+ frame = 0;
+}
+
+void ChatScreen::init()
+{
+ Keyboard::enableRepeatEvents(true);
+}
+
+void ChatScreen::removed()
+{
+ Keyboard::enableRepeatEvents(false);
+}
+
+void ChatScreen::tick()
+{
+ frame++;
+}
+
+void ChatScreen::keyPressed(wchar_t ch, int eventKey)
+{
+ if (eventKey == Keyboard::KEY_ESCAPE)
+ {
+ minecraft->setScreen(NULL);
+ return;
+ }
+ if (eventKey == Keyboard::KEY_RETURN)
+ {
+ wstring msg = trimString(message);
+ if (msg.length() > 0)
+ {
+ wstring trim = trimString(message);
+ if (!minecraft->handleClientSideCommand(trim))
+ {
+ minecraft->player->chat(trim);
+ }
+ }
+ minecraft->setScreen(NULL);
+ return;
+ }
+ if (eventKey == Keyboard::KEY_BACK && message.length() > 0) message = message.substr(0, message.length() - 1);
+ if (allowedChars.find(ch) >= 0 && message.length() < SharedConstants::maxChatLength)
+ {
+ message += ch;
+ }
+
+}
+
+void ChatScreen::render(int xm, int ym, float a)
+{
+ fill(2, height - 14, width - 2, height - 2, 0x80000000);
+ drawString(font, L"> " + message + (frame / 6 % 2 == 0 ? L"_" : L""), 4, height - 12, 0xe0e0e0);
+
+ Screen::render(xm, ym, a);
+}
+
+void ChatScreen::mouseClicked(int x, int y, int buttonNum)
+{
+ if (buttonNum == 0)
+ {
+ if (minecraft->gui->selectedName != L"") // 4J - was NULL comparison
+ {
+ if (message.length() > 0 && message[message.length()-1]!=L' ')
+ {
+ message += L" ";
+ }
+ message += minecraft->gui->selectedName;
+ unsigned int maxLength = SharedConstants::maxChatLength;
+ if (message.length() > maxLength)
+ {
+ message = message.substr(0, maxLength);
+ }
+ }
+ else
+ {
+ Screen::mouseClicked(x, y, buttonNum);
+ }
+ }
+
+} \ No newline at end of file