5#include "SnakeGame/Core/Types.h"
6#include "CoreMinimal.h"
7#include "Components/StaticMeshComponent.h"
8#include "InputAction.h"
9#include "InputMappingContext.h"
10#include "EnhancedActionKeyMapping.h"
19 return FVector((Dims.height - 1 -
Position.y) * CellSize,
Position.x * CellSize, 0.0) + FVector(CellSize * 0.5);
22 static void ScaleMesh(UStaticMeshComponent* Mesh,
const FVector& WorldSize)
24 if (Mesh && Mesh->GetStaticMesh())
26 const FBox Box = Mesh->GetStaticMesh()->GetBoundingBox();
27 const auto Size = Box.GetSize();
29 check(!Size.IsZero());
30 Mesh->SetRelativeScale3D(FVector(WorldSize / Size));
34 static FText FormatSeconds(
float TimeSeconds)
36 const int32 TotalSeconds = FMath::RoundToInt(TimeSeconds);
38 const int32 Minutes = TotalSeconds / 60;
39 const int32 Seconds = TotalSeconds % 60;
40 const FString FormattedTime = FString::Printf(TEXT(
"%02i:%02i"), Minutes, Seconds);
41 return FText::FromString(FormattedTime);
44 static FText FormatScore(uint32 Score)
46 const FString FormattedScore = FString::Printf(TEXT(
"%02i"), Score);
47 return FText::FromString(FormattedScore);
50 static FString FindActionKeyName(
const TObjectPtr<UInputMappingContext>& InputMapping,
const TObjectPtr<UInputAction>& Action)
52 auto* FoundAcionKeyMapping = InputMapping->GetMappings().FindByPredicate([&](
const FEnhancedActionKeyMapping& Mapping)
53 {
return Mapping.Action == Action; });
55 return FoundAcionKeyMapping ? FoundAcionKeyMapping->Key.GetDisplayName().ToString() : FString{};
58 static void SetUIInput(UWorld* World,
bool Enabled)
61 if (
auto* PC = World->GetFirstPlayerController())
63 PC->SetShowMouseCursor(Enabled);
64 Enabled ? PC->SetInputMode(FInputModeGameAndUI().SetHideCursorDuringCapture(
false)) : PC->SetInputMode(FInputModeGameOnly());
Definition: SG_WorldUtils.h:15
Definition: SnakeGame.Build.cs:6