31 const float inputWidth = 300.0f;
32 const float inputHeight = 40.0f;
33 const float spacing = 20.0f;
34 const float buttonWidth = 140.0f;
35 const float buttonHeight = 45.0f;
36 const float buttonSpacing = 20.0f;
38 const float startY = 150.0f;
63 LOG_INFO(
"[ConnectionMenu] Nickname: " + text);
69 _ipInput->SetSize(inputWidth, inputHeight);
74 float ipY = startY + inputHeight + spacing;
77 _ipInput->SetPlaceholder(
"127.0.0.1");
79 _ipInput->SetValidationRegex(
"[0-9.]+");
81 _ipInput->SetBackgroundColor(0xFF2A2A2A);
82 _ipInput->SetBorderColor(0xFF505050);
83 _ipInput->SetActiveBorderColor(0xFF4CAF50);
85 _ipInput->SetPlaceholderColor(0xFF808080);
86 _ipInput->SetOnTextChanged([
this](
const std::string &text) {
87 LOG_INFO(
"[ConnectionMenu] IP: " + text);
98 float portY = ipY + inputHeight + spacing;
110 _portInput->SetOnTextChanged([
this](
const std::string &text) {
111 LOG_INFO(
"[ConnectionMenu] Port: " + text);
116 _buttonsY = portY + inputHeight + spacing * 2;
118 float totalButtonWidth = buttonWidth * 2 + buttonSpacing;
119 float joinButtonX = -(totalButtonWidth / 2.0f);
120 float backButtonX = joinButtonX + buttonWidth + buttonSpacing;
123 auto createHorizontalButton = [&](
const char *label,
float posX,
unsigned int backgroundColor,
124 unsigned int hoverColor, std::function<void()> callback) {
126 button->SetSize(buttonWidth, buttonHeight);
128 button->ApplyAlignment();
131 button->GetPosition(bx, by);
132 button->SetPosition(bx + posX + (totalButtonWidth / 2.0f) - (buttonWidth / 2.0f),
_buttonsY);
134 button->SetBackgroundColor(backgroundColor);
135 button->SetHoverColor(hoverColor);
136 button->SetText(label);
137 button->SetTextSize(18);
138 button->SetTextColor(0xFFFFFFFF);
144 _menu->AddButton(createHorizontalButton(
"JOIN", joinButtonX, 0xFF4CAF50, 0xFF66BB6A,
147 _menu->AddButton(createHorizontalButton(
"BACK", backButtonX, 0xFF424242, 0xFF616161,
virtual void DrawText(int fontHandle, const char *text, int x, int y, int fontSize, unsigned int color)=0
Draw text using a loaded font.