feat: Dialogue

This commit is contained in:
BambiTheLama 2025-06-04 18:45:46 +02:00
parent abc13be7d4
commit 2ee75d30c4
4 changed files with 48 additions and 7 deletions

Binary file not shown.

View File

@ -82,6 +82,8 @@ void AExoPlayerCharacter::BeginPlay()
PlayerHud->SetVisibilityAmmo(false);
PlayerHud->SetVisibilityViewFinder(false);
PlayerHud->SetShootingViewFinder(false);
PlayerHud->SetVisibilityDialogue(false);
PlayerHud->SetDialogueText(FText::FromString(TEXT("Przykładowy tekst")));
}
}
}

View File

@ -39,6 +39,12 @@ void UWBP_PlayerUI::SetAmmoNumber(int ammo)
AmmoText->SetText(FText::AsNumber(ammo));
}
void UWBP_PlayerUI::SetDialogueText(FText text)
{
timerDialogue = 0.0f;
textDialogue = text;
}
UUWBP_Buf* UWBP_PlayerUI::AddBuf(UTexture2D* texture, float procent)
{
if (!BufClass)
@ -93,6 +99,11 @@ void UWBP_PlayerUI::SetShootingViewFinder(bool Shooting)
shootingViewFinder=Shooting;
}
void UWBP_PlayerUI::SetVisibilityDialogue(bool visibility)
{
showDialogue=visibility;
}
void UWBP_PlayerUI::NativeTick(const FGeometry& MyGeometry, float InDeltaTime)
{
Super::NativeTick(MyGeometry, InDeltaTime);
@ -102,7 +113,17 @@ void UWBP_PlayerUI::NativeTick(const FGeometry& MyGeometry, float InDeltaTime)
opacityViewFinder = FMath::Clamp(opacityViewFinder + showSpeed * (showViewFinder?1:-1), 0.0f, 1.0f);
opacityBuf = FMath::Clamp(opacityBuf + showSpeed * (showBuf?1:-1), 0.0f, 1.0f);
opacityAmmo = FMath::Clamp(opacityAmmo + showSpeed * (showAmmo?1:-1), 0.0f, 1.0f);
opacityDialogue = FMath::Clamp(opacityDialogue + showSpeed * (showDialogue?1:-1), 0.0f, 1.0f);
shootingViewFinderPercent=FMath::Clamp(shootingViewFinderPercent + showSpeed * (shootingViewFinder?1:-1), 0.0f, 1.0f);
timerDialogue += DialogueSpeed * InDeltaTime;
FString OriginalString = textDialogue.ToString();
int textDialogueSize = OriginalString.Len() * FMath::Clamp(timerDialogue / DialogueSpeed, 0.0f, 1.0f);
FString Substring = OriginalString.Left(textDialogueSize);
FText text = FText::FromString(Substring);
if (DialogueText)
DialogueText->SetText(text);
if (HPBar)
HPBar->SetRenderOpacity(opacityHp);
if (ViewFinder)
@ -111,6 +132,8 @@ void UWBP_PlayerUI::NativeTick(const FGeometry& MyGeometry, float InDeltaTime)
BufPanel->SetRenderOpacity(opacityBuf);
if (AmmoImage)
AmmoPanel->SetRenderOpacity(opacityAmmo);
if (DialoguePanel)
DialoguePanel->SetRenderOpacity(opacityDialogue);
if (!DynamicViewFinderMaterial)
{
if (!ViewFinder)
@ -129,8 +152,9 @@ void UWBP_PlayerUI::NativeTick(const FGeometry& MyGeometry, float InDeltaTime)
}
if (DynamicViewFinderMaterial)
{
DynamicViewFinderMaterial->SetScalarParameterValue("Percent",shootingViewFinderPercent);
ViewFinder->SetRenderScale(FVector2D(1.0f, 1.0f)*((1.0f-shootingViewFinderPercent)*3+1));
float changeViewFinderProcent=FMath::Clamp( FMath::Pow(shootingViewFinderPercent,3),0,1.0f);
DynamicViewFinderMaterial->SetScalarParameterValue("Percent",changeViewFinderProcent);
ViewFinder->SetRenderScale(FVector2D(1.0f, 1.0f)*((1.0f-changeViewFinderProcent)*3+1));
}
}

View File

@ -22,6 +22,8 @@ public:
void SetAmmoNumber(int ammo);
void SetDialogueText(FText text);
UUWBP_Buf* AddBuf(UTexture2D* texture,float procent);
UPROPERTY(EditAnywhere, meta = (BindWidget))
@ -42,6 +44,12 @@ public:
UPROPERTY(EditAnywhere, meta = (BindWidget))
class UCanvasPanel* AmmoPanel;
UPROPERTY(EditAnywhere, meta = (BindWidget))
class UCanvasPanel* DialoguePanel;
UPROPERTY(EditAnywhere, meta = (BindWidget))
class UTextBlock* DialogueText;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Buf")
float BufRange;
@ -55,7 +63,10 @@ public:
TMap<EAmmoType, UTexture2D*> AmmoIconMap;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Display")
float DisplaySpeed=1.0f;
float DisplaySpeed = 1.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Display")
float DialogueSpeed = 0.1f;
void SetVisibilityHP(bool visibility);
@ -66,6 +77,8 @@ public:
void SetVisibilityViewFinder(bool visibility);
void SetShootingViewFinder(bool Shooting);
void SetVisibilityDialogue(bool visibility);
protected:
void NativeTick(const FGeometry& MyGeometry, float InDeltaTime) override;
private:
@ -73,10 +86,12 @@ private:
void updateBufPosition();
bool showHp = true, showBuf = true, showAmmo = true, showViewFinder = true;
float opacityHp = 1.0f, opacityBuf = 1.0f, opacityAmmo = 1.0f, opacityViewFinder = 1.0f;
bool shootingViewFinder = false;
float shootingViewFinderPercent = 1.0f;
bool showHp = true, showBuf = true, showAmmo = true, showViewFinder = true, showDialogue = true;
float opacityHp = 1.0f, opacityBuf = 1.0f, opacityAmmo = 1.0f, opacityViewFinder = 1.0f, opacityDialogue = 1.0f;
bool shootingViewFinder = false;
float shootingViewFinderPercent = 1.0f;
float timerDialogue = 0.0f;
FText textDialogue = FText();
UMaterialInstanceDynamic* DynamicViewFinderMaterial = nullptr;
};