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/ConnectScreen.cpp | |
| parent | def8cb415354ac390b7e89052a50605285f1aca9 (diff) | |
Initial commit
Diffstat (limited to 'Minecraft.Client/ConnectScreen.cpp')
| -rw-r--r-- | Minecraft.Client/ConnectScreen.cpp | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/Minecraft.Client/ConnectScreen.cpp b/Minecraft.Client/ConnectScreen.cpp new file mode 100644 index 00000000..2cf005b6 --- /dev/null +++ b/Minecraft.Client/ConnectScreen.cpp @@ -0,0 +1,95 @@ +#include "stdafx.h" +#include "ConnectScreen.h" +#include "ClientConnection.h" +#include "TitleScreen.h" +#include "Button.h" +#include "Minecraft.h" +#include "User.h" +#include "..\Minecraft.World\net.minecraft.locale.h" + + +ConnectScreen::ConnectScreen(Minecraft *minecraft, const wstring& ip, int port) +{ + aborted = false; +// System.out.println("Connecting to " + ip + ", " + port); + minecraft->setLevel(NULL); +#if 1 + // 4J - removed from separate thread, but need to investigate what we actually need here + connection = new ClientConnection(minecraft, ip, port); + if (aborted) return; + connection->send( shared_ptr<PreLoginPacket>( new PreLoginPacket(minecraft->user->name) ) ); +#else + + new Thread() { + public void run() { + + try { + connection = new ClientConnection(minecraft, ip, port); + if (aborted) return; + connection.send(new PreLoginPacket(minecraft.user.name)); + } catch (UnknownHostException e) { + if (aborted) return; + minecraft.setScreen(new DisconnectedScreen("connect.failed", "disconnect.genericReason", "Unknown host '" + ip + "'")); + } catch (ConnectException e) { + if (aborted) return; + minecraft.setScreen(new DisconnectedScreen("connect.failed", "disconnect.genericReason", e.getMessage())); + } catch (Exception e) { + if (aborted) return; + e.printStackTrace(); + minecraft.setScreen(new DisconnectedScreen("connect.failed", "disconnect.genericReason", e.toString())); + } + } + }.start(); +#endif +} + +void ConnectScreen::tick() +{ + if (connection != NULL) + { + connection->tick(); + } +} + +void ConnectScreen::keyPressed(char eventCharacter, int eventKey) +{ +} + +void ConnectScreen::init() +{ + Language *language = Language::getInstance(); + + buttons.clear(); + buttons.push_back(new Button(0, width / 2 - 100, height / 4 + 24 * 5 + 12, language->getElement(L"gui.cancel"))); + +} + +void ConnectScreen::buttonClicked(Button *button) +{ + if (button->id == 0) + { + aborted = true; + if (connection != NULL) connection->close(); + minecraft->setScreen(new TitleScreen()); + } +} + +void ConnectScreen::render(int xm, int ym, float a) +{ + renderBackground(); + + Language *language = Language::getInstance(); + + if (connection == NULL) + { + drawCenteredString(font, language->getElement(L"connect.connecting"), width / 2, height / 2 - 50, 0xffffff); + drawCenteredString(font, L"", width / 2, height / 2 - 10, 0xffffff); + } + else + { + drawCenteredString(font, language->getElement(L"connect.authorizing"), width / 2, height / 2 - 50, 0xffffff); + drawCenteredString(font, connection->message, width / 2, height / 2 - 10, 0xffffff); + } + + Screen::render(xm, ym, a); +}
\ No newline at end of file |
