74 lines
2.2 KiB
C++
74 lines
2.2 KiB
C++
#include <client/states/JoinServerState.h>
|
|
|
|
#include <Nazara/Core/StateMachine.hpp>
|
|
#include <Nazara/TextRenderer.hpp>
|
|
|
|
namespace blitz {
|
|
namespace client {
|
|
|
|
JoinServerState::JoinServerState(std::shared_ptr<StateData> a_StateData, std::shared_ptr<AbstractState> a_PreviousState) :
|
|
AbstractState(std::move(a_StateData)), m_PreviousState(std::move(a_PreviousState)) {
|
|
Nz::SimpleTextDrawer textDrawer;
|
|
textDrawer.SetTextColor({0.0, 0.0, 0.0, 1.0});
|
|
textDrawer.SetCharacterSize(75);
|
|
|
|
m_JoinServerButton = CreateWidget<Nz::ButtonWidget>();
|
|
textDrawer.SetText("Join Server");
|
|
m_JoinServerButton->UpdateText(textDrawer);
|
|
m_JoinServerButton->Resize(m_JoinServerButton->GetPreferredSize());
|
|
m_JoinServerButton->OnButtonTrigger.Connect([this](const Nz::ButtonWidget*) { OnJoinServerPressed(); });
|
|
|
|
m_BackButton = CreateWidget<Nz::ButtonWidget>();
|
|
textDrawer.SetText("Back");
|
|
m_BackButton->UpdateText(textDrawer);
|
|
m_BackButton->Resize(m_BackButton->GetPreferredSize());
|
|
m_BackButton->OnButtonTrigger.Connect([this](const Nz::ButtonWidget*) { OnBackPressed(); });
|
|
}
|
|
|
|
JoinServerState::~JoinServerState() {}
|
|
|
|
bool JoinServerState::Update(Nz::StateMachine& fsm, Nz::Time /*elapsedTime*/) {
|
|
if (m_NextState)
|
|
fsm.ChangeState(std::move(m_NextState));
|
|
|
|
return true;
|
|
}
|
|
|
|
void JoinServerState::LayoutWidgets() {
|
|
Nz::Vector2f canvasSize = GetStateData().m_Canvas->GetSize();
|
|
Nz::Vector2f center = canvasSize / 2.f;
|
|
|
|
constexpr float padding = 10.f;
|
|
|
|
std::array<Nz::BaseWidget*, 2> widgets = {m_JoinServerButton, m_BackButton};
|
|
|
|
float maxWidth = 0.f;
|
|
float totalSize = padding * (widgets.size() - 1);
|
|
for (Nz::BaseWidget* widget : widgets) {
|
|
Nz::Vector2f size = widget->GetSize();
|
|
|
|
maxWidth = std::max(maxWidth, size.x);
|
|
totalSize += size.y;
|
|
}
|
|
|
|
Nz::Vector2f cursor = center;
|
|
cursor.y += totalSize / 2.f;
|
|
|
|
for (Nz::BaseWidget* widget : widgets) {
|
|
widget->Resize({maxWidth, widget->GetHeight()});
|
|
widget->SetPosition({0.f, cursor.y - widget->GetSize().y, 0.f});
|
|
widget->CenterHorizontal();
|
|
cursor.y -= widget->GetSize().y + padding;
|
|
}
|
|
}
|
|
|
|
void JoinServerState::OnJoinServerPressed() {}
|
|
|
|
void JoinServerState::OnBackPressed() {
|
|
m_NextState = std::move(m_PreviousState);
|
|
}
|
|
|
|
|
|
} // namespace client
|
|
} // namespace blitz
|