|
|
|
@@ -29,6 +29,21 @@ FReply UAgrarianMvpFrontendWidget::NativeOnKeyDown(const FGeometry& InGeometry,
|
|
|
|
|
SetSelectedCharacterArchetype(EAgrarianMvpCharacterArchetype::YoungAdultFemale);
|
|
|
|
|
return FReply::Handled();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (Key == EKeys::Enter || Key == EKeys::SpaceBar)
|
|
|
|
|
{
|
|
|
|
|
SetActiveScreen(EAgrarianMvpFrontendScreen::JoinServer);
|
|
|
|
|
return FReply::Handled();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (ActiveScreen == EAgrarianMvpFrontendScreen::JoinServer)
|
|
|
|
|
{
|
|
|
|
|
const FKey Key = InKeyEvent.GetKey();
|
|
|
|
|
if (Key == EKeys::BackSpace || Key == EKeys::Escape)
|
|
|
|
|
{
|
|
|
|
|
SetActiveScreen(EAgrarianMvpFrontendScreen::CharacterSelection);
|
|
|
|
|
return FReply::Handled();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return Super::NativeOnKeyDown(InGeometry, InKeyEvent);
|
|
|
|
@@ -99,6 +114,10 @@ int32 UAgrarianMvpFrontendWidget::NativePaint(
|
|
|
|
|
{
|
|
|
|
|
DrawCharacterSelection(OutDrawElements, LayerId, AllottedGeometry, PanelPosition, PanelSize, Scale);
|
|
|
|
|
}
|
|
|
|
|
else if (ActiveScreen == EAgrarianMvpFrontendScreen::JoinServer)
|
|
|
|
|
{
|
|
|
|
|
DrawJoinServer(OutDrawElements, LayerId, AllottedGeometry, PanelPosition, PanelSize, Scale);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return LayerId;
|
|
|
|
|
}
|
|
|
|
@@ -207,6 +226,51 @@ void UAgrarianMvpFrontendWidget::DrawCharacterSelection(
|
|
|
|
|
DrawTextAt(OutDrawElements, LayerId, AllottedGeometry, FText::Format(FText::FromString(TEXT("Selected: {0}. Use Left/Right or A/D to choose; both choices enter the same MVP survival baseline.")), GetSelectedCharacterLabel()), FVector2D(ContentX, PanelPosition.Y + PanelSize.Y - (46.0f * Scale)), ContentWidth, LabelFont, FLinearColor(0.62f, 0.68f, 0.58f, 1.0f));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void UAgrarianMvpFrontendWidget::DrawJoinServer(
|
|
|
|
|
FSlateWindowElementList& OutDrawElements,
|
|
|
|
|
int32& LayerId,
|
|
|
|
|
const FGeometry& AllottedGeometry,
|
|
|
|
|
const FVector2D& PanelPosition,
|
|
|
|
|
const FVector2D& PanelSize,
|
|
|
|
|
float Scale) const
|
|
|
|
|
{
|
|
|
|
|
const float ContentX = PanelPosition.X + (48.0f * Scale);
|
|
|
|
|
const float ContentWidth = PanelSize.X - (96.0f * Scale);
|
|
|
|
|
const FSlateFontInfo TitleFont = FCoreStyle::GetDefaultFontStyle("Bold", FMath::RoundToInt(34.0f * Scale));
|
|
|
|
|
const FSlateFontInfo BodyFont = FCoreStyle::GetDefaultFontStyle("Regular", FMath::RoundToInt(18.0f * Scale));
|
|
|
|
|
const FSlateFontInfo AddressFont = FCoreStyle::GetDefaultFontStyle("Bold", FMath::RoundToInt(24.0f * Scale));
|
|
|
|
|
const FSlateFontInfo HintFont = FCoreStyle::GetDefaultFontStyle("Regular", FMath::RoundToInt(15.0f * Scale));
|
|
|
|
|
|
|
|
|
|
DrawTextAt(OutDrawElements, LayerId, AllottedGeometry, FText::FromString(TEXT("Join MVP server")), FVector2D(ContentX, PanelPosition.Y + (44.0f * Scale)), ContentWidth, TitleFont, FLinearColor(0.92f, 0.98f, 0.84f, 1.0f));
|
|
|
|
|
DrawTextAt(OutDrawElements, LayerId, AllottedGeometry, FText::Format(FText::FromString(TEXT("Character: {0}")), GetSelectedCharacterLabel()), FVector2D(ContentX + (2.0f * Scale), PanelPosition.Y + (94.0f * Scale)), ContentWidth, BodyFont, FLinearColor(0.72f, 0.80f, 0.68f, 1.0f));
|
|
|
|
|
|
|
|
|
|
const FVector2D AddressPanelPosition(ContentX, PanelPosition.Y + (164.0f * Scale));
|
|
|
|
|
const FVector2D AddressPanelSize(ContentWidth, 96.0f * Scale);
|
|
|
|
|
FSlateDrawElement::MakeBox(
|
|
|
|
|
OutDrawElements,
|
|
|
|
|
++LayerId,
|
|
|
|
|
AllottedGeometry.ToPaintGeometry(FVector2f(AddressPanelSize), FSlateLayoutTransform(FVector2f(AddressPanelPosition))),
|
|
|
|
|
FCoreStyle::Get().GetBrush(TEXT("WhiteBrush")),
|
|
|
|
|
ESlateDrawEffect::None,
|
|
|
|
|
FLinearColor(0.055f, 0.065f, 0.05f, 0.96f));
|
|
|
|
|
|
|
|
|
|
DrawTextAt(OutDrawElements, LayerId, AllottedGeometry, FText::FromString(TEXT("Server address")), AddressPanelPosition + FVector2D(24.0f * Scale, 14.0f * Scale), ContentWidth - (48.0f * Scale), HintFont, FLinearColor(0.58f, 0.64f, 0.54f, 1.0f));
|
|
|
|
|
DrawTextAt(OutDrawElements, LayerId, AllottedGeometry, JoinServerAddress, AddressPanelPosition + FVector2D(24.0f * Scale, 42.0f * Scale), ContentWidth - (48.0f * Scale), AddressFont, FLinearColor(0.86f, 0.94f, 0.78f, 1.0f));
|
|
|
|
|
|
|
|
|
|
const FVector2D ButtonPosition(ContentX, PanelPosition.Y + (300.0f * Scale));
|
|
|
|
|
const FVector2D ButtonSize(FMath::Min(ContentWidth, 330.0f * Scale), 58.0f * Scale);
|
|
|
|
|
FSlateDrawElement::MakeBox(
|
|
|
|
|
OutDrawElements,
|
|
|
|
|
++LayerId,
|
|
|
|
|
AllottedGeometry.ToPaintGeometry(FVector2f(ButtonSize), FSlateLayoutTransform(FVector2f(ButtonPosition))),
|
|
|
|
|
FCoreStyle::Get().GetBrush(TEXT("WhiteBrush")),
|
|
|
|
|
ESlateDrawEffect::None,
|
|
|
|
|
FLinearColor(0.35f, 0.58f, 0.30f, 0.95f));
|
|
|
|
|
|
|
|
|
|
DrawTextAt(OutDrawElements, LayerId, AllottedGeometry, FText::FromString(TEXT("Continue to loading")), ButtonPosition + FVector2D(22.0f * Scale, 12.0f * Scale), ButtonSize.X - (44.0f * Scale), AddressFont, FLinearColor(0.96f, 1.0f, 0.90f, 1.0f));
|
|
|
|
|
DrawTextAt(OutDrawElements, LayerId, AllottedGeometry, FText::FromString(TEXT("Press Backspace or Escape to return to character selection.")), FVector2D(ContentX, PanelPosition.Y + PanelSize.Y - (46.0f * Scale)), ContentWidth, HintFont, FLinearColor(0.62f, 0.68f, 0.58f, 1.0f));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
FText UAgrarianMvpFrontendWidget::GetSelectedCharacterLabel() const
|
|
|
|
|
{
|
|
|
|
|
return SelectedCharacterArchetype == EAgrarianMvpCharacterArchetype::YoungAdultFemale
|
|
|
|
|