diff --git a/Content/Blueprints/Character/BP_BlasterCharacter.uasset b/Content/Blueprints/Character/BP_BlasterCharacter.uasset index 3cbab2f..5f4dd06 100644 Binary files a/Content/Blueprints/Character/BP_BlasterCharacter.uasset and b/Content/Blueprints/Character/BP_BlasterCharacter.uasset differ diff --git a/Content/Blueprints/HUD/WBP_OverheadWidget.uasset b/Content/Blueprints/HUD/WBP_OverheadWidget.uasset new file mode 100644 index 0000000..35aacf8 Binary files /dev/null and b/Content/Blueprints/HUD/WBP_OverheadWidget.uasset differ diff --git a/Content/Maps/BlasterMap.umap b/Content/Maps/BlasterMap.umap index 9387952..806a1a8 100644 Binary files a/Content/Maps/BlasterMap.umap and b/Content/Maps/BlasterMap.umap differ diff --git a/Source/Blaster/Character/BlasterCharacter.cpp b/Source/Blaster/Character/BlasterCharacter.cpp index c010c97..d0c0690 100644 --- a/Source/Blaster/Character/BlasterCharacter.cpp +++ b/Source/Blaster/Character/BlasterCharacter.cpp @@ -4,6 +4,7 @@ #include "BlasterCharacter.h" #include "Camera/CameraComponent.h" +#include "Components/WidgetComponent.h" #include "GameFramework/CharacterMovementComponent.h" #include "GameFramework/SpringArmComponent.h" @@ -23,6 +24,9 @@ ABlasterCharacter::ABlasterCharacter() bUseControllerRotationYaw = false; GetCharacterMovement()->bOrientRotationToMovement = true; + + OverheadWidget = CreateDefaultSubobject(TEXT("OverheadWidget")); + OverheadWidget->SetupAttachment(RootComponent); } void ABlasterCharacter::BeginPlay() diff --git a/Source/Blaster/Character/BlasterCharacter.h b/Source/Blaster/Character/BlasterCharacter.h index a7f7d77..77d5aac 100644 --- a/Source/Blaster/Character/BlasterCharacter.h +++ b/Source/Blaster/Character/BlasterCharacter.h @@ -30,6 +30,9 @@ private: UPROPERTY(VisibleAnywhere, Category="Camera") class UCameraComponent* FollowCamera; + + UPROPERTY(EditAnywhere, BlueprintReadOnly, meta = (AllowPrivateAccess = "true")) + class UWidgetComponent* OverheadWidget; public: }; diff --git a/Source/Blaster/HUD/OverheadWidget.cpp b/Source/Blaster/HUD/OverheadWidget.cpp new file mode 100644 index 0000000..7744c5a --- /dev/null +++ b/Source/Blaster/HUD/OverheadWidget.cpp @@ -0,0 +1,44 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "OverheadWidget.h" + +#include "Components/TextBlock.h" + +void UOverheadWidget::SetDisplayText(FString TextToDisplay) +{ + if (DisplayText) + { + DisplayText->SetText(FText::FromString(TextToDisplay)); + } +} + +void UOverheadWidget::ShowPlayerNetRole(APawn* InPawn) +{ + ENetRole RemoveRole = InPawn->GetRemoteRole(); + FString Role; + switch (RemoveRole) + { + case ENetRole::ROLE_Authority: + Role = FString("Authority"); + break; + case ENetRole::ROLE_AutonomousProxy: + Role = FString("AutonomousProxy"); + break; + case ENetRole::ROLE_SimulatedProxy: + Role = FString("SimulatedProxy"); + break; + case ENetRole::ROLE_None: + Role = FString("None"); + break; + } + + FString RemoteRoleString = FString::Printf(TEXT("Remote role: %s"), *Role); + SetDisplayText(RemoteRoleString); +} + +void UOverheadWidget::OnLevelRemovedFromWorld(ULevel* InLevel, UWorld* InWorld) +{ + RemoveFromParent(); + Super::OnLevelRemovedFromWorld(InLevel, InWorld); +} diff --git a/Source/Blaster/HUD/OverheadWidget.h b/Source/Blaster/HUD/OverheadWidget.h new file mode 100644 index 0000000..1e11f34 --- /dev/null +++ b/Source/Blaster/HUD/OverheadWidget.h @@ -0,0 +1,30 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Blueprint/UserWidget.h" +#include "OverheadWidget.generated.h" + +/** + * + */ +UCLASS() +class BLASTER_API UOverheadWidget : public UUserWidget +{ + GENERATED_BODY() + +public: + + UPROPERTY(meta = (BindWidget)) + class UTextBlock* DisplayText; + + void SetDisplayText(FString TextToDisplay); + + UFUNCTION(BlueprintCallable) + void ShowPlayerNetRole(APawn* InPawn); + +protected: + + virtual void OnLevelRemovedFromWorld(ULevel* InLevel, UWorld* InWorld) override; +};