diff --git a/UnrealProject/Lost_Edge/Content/Levels/Test/L_Test.umap b/UnrealProject/Lost_Edge/Content/Levels/Test/L_Test.umap index 974e0a5..c1c4b28 100644 --- a/UnrealProject/Lost_Edge/Content/Levels/Test/L_Test.umap +++ b/UnrealProject/Lost_Edge/Content/Levels/Test/L_Test.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f837d379aaf571ee1273fc5c3fec1e173cdd18659443cb4298934eb1ad17157b -size 2906609 +oid sha256:d40d1be43319f17c68db6c391d023e38f79a3f4c256fb0741789f011177f0b27 +size 2916531 diff --git a/UnrealProject/Lost_Edge/Content/UI/Blueprints/UI_Journal.uasset b/UnrealProject/Lost_Edge/Content/UI/Blueprints/UI_Journal.uasset index 56bb12f..87d4172 100644 --- a/UnrealProject/Lost_Edge/Content/UI/Blueprints/UI_Journal.uasset +++ b/UnrealProject/Lost_Edge/Content/UI/Blueprints/UI_Journal.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4bedff5c2d811ec644c7d2012d6e7fb9ce2c168f6bd77116e9d0fbc18283540c -size 28747 +oid sha256:40e75b054818801dce5da576f15396b6be2d27652f85a0f6eb3caafc73c492aa +size 40261 diff --git a/UnrealProject/Lost_Edge/Content/UI/Components/Classes/UICC_Journal_Text.uasset b/UnrealProject/Lost_Edge/Content/UI/Components/Classes/UICC_Journal_Text.uasset index 83c102d..af7f27b 100644 --- a/UnrealProject/Lost_Edge/Content/UI/Components/Classes/UICC_Journal_Text.uasset +++ b/UnrealProject/Lost_Edge/Content/UI/Components/Classes/UICC_Journal_Text.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bcc47f4f085d419f730bc6137eaac8cc30190eb304fcc924a16f201632927bf2 -size 5732 +oid sha256:fc4ded2d84a546ef396ef005fc48d2180676bc133b308713bed91b03317ce23c +size 6209 diff --git a/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/PlayerBase.cpp b/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/PlayerBase.cpp index 9be035c..4b1749d 100644 --- a/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/PlayerBase.cpp +++ b/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/PlayerBase.cpp @@ -342,7 +342,7 @@ void APlayerBase::ShowJournal() return; if(auto WM = AMainGameModeBase::GetWidgetsManager()) - WM->ShowJournal(); + WM->SwitchJournal(); } void APlayerBase::ShowMenu() diff --git a/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/Widgets/AutohideWidget.cpp b/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/Widgets/AutohideWidget.cpp index 7fb9b72..86401a4 100644 --- a/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/Widgets/AutohideWidget.cpp +++ b/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/Widgets/AutohideWidget.cpp @@ -9,8 +9,9 @@ void UAutohideWidget::Show() { SetVisibility(ESlateVisibility::Visible); - if(!showTimer.IsValid()) - PlayAnimation(showAnimation, GetAnimationCurrentTime(showAnimation), 1, EUMGSequencePlayMode::Forward, 1, false); + if(showTimer.IsValid()) + return; + PlayAnimation(showAnimation, GetAnimationCurrentTime(showAnimation), 1, EUMGSequencePlayMode::Forward, 1, false); GetWorld()->GetTimerManager().SetTimer(showTimer, this, &UAutohideWidget::Hide, showDuration, false); } diff --git a/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/Widgets/JournalWidget.cpp b/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/Widgets/JournalWidget.cpp index ee24222..b6443a7 100644 --- a/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/Widgets/JournalWidget.cpp +++ b/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/Widgets/JournalWidget.cpp @@ -6,6 +6,43 @@ #include "Components/TextBlock.h" #include "Components/VerticalBox.h" +void UJournalWidget::Show() +{ + if(state == State::Visible) + return; + state = State::Visible; + + SetVisibility(ESlateVisibility::Visible); + PlayAnimation(showAnimation, GetAnimationCurrentTime(showAnimation), 1, EUMGSequencePlayMode::Forward, 1, false); +} + +void UJournalWidget::ShowTimed() +{ + if(state != State::Hidden) + return; + state = State::VisibleAutoHide; + + Super::Show(); +} + +void UJournalWidget::Hide() +{ + if(state == State::Hidden) + return; + state = State::Hidden; + + if(state == State::VisibleAutoHide) + { + Super::Hide(); + return; + } + + if(showTimer.IsValid()) + GetWorld()->GetTimerManager().ClearTimer(showTimer); + + PlayAnimation(showAnimation, GetAnimationCurrentTime(showAnimation), 1, EUMGSequencePlayMode::Reverse, 1, false); +} + void UJournalWidget::Update(TArray items) { text->ClearChildren(); @@ -17,3 +54,8 @@ void UJournalWidget::Update(TArray items) text->AddChild(obj); } } + +bool UJournalWidget::IsShown() +{ + return state != State::Hidden; +} diff --git a/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/Widgets/JournalWidget.h b/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/Widgets/JournalWidget.h index a49652b..b3774f0 100644 --- a/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/Widgets/JournalWidget.h +++ b/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/Widgets/JournalWidget.h @@ -13,8 +13,13 @@ class UJournalWidget : public UAutohideWidget GENERATED_BODY() public: + virtual void Show() override; + void ShowTimed(); + virtual void Hide() override; + UFUNCTION(BlueprintCallable) void Update(TArray items); + bool IsShown(); UPROPERTY(meta = (BindWidget)) class UVerticalBox* text; @@ -22,4 +27,11 @@ public: protected: UPROPERTY(EditDefaultsOnly) TSubclassOf textStyleClass; + + enum State : uint8 + { + Hidden, + Visible, + VisibleAutoHide + } state = State::Hidden; }; diff --git a/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/Widgets/WidgetsManager.cpp b/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/Widgets/WidgetsManager.cpp index 4edcf32..fdb5c53 100644 --- a/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/Widgets/WidgetsManager.cpp +++ b/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/Widgets/WidgetsManager.cpp @@ -154,6 +154,7 @@ void UWidgetsManager::UpdateWidgetsOwner() void UWidgetsManager::ShowMainMenu(bool pause) { mainMenuWidget->Show(pause); + journalWidget->Hide(); } void UWidgetsManager::HideMainMenu() @@ -274,13 +275,24 @@ void UWidgetsManager::SetInventorySecondItem(FText item) inventoryWidget->secondItemDescriptionText->SetText(item); } +void UWidgetsManager::SwitchJournal() +{ + if(journalWidget->IsShown()) + HideJournal(); + else + ShowJournal(); +} + void UWidgetsManager::ShowJournal() { journalWidget->Show(); } - +void UWidgetsManager::HideJournal() +{ + journalWidget->Hide(); +} void UWidgetsManager::UpdateJournal(TArray text) { journalWidget->Update(text); - ShowJournal(); + journalWidget->ShowTimed(); } diff --git a/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/Widgets/WidgetsManager.h b/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/Widgets/WidgetsManager.h index 058de50..0ddeafa 100644 --- a/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/Widgets/WidgetsManager.h +++ b/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/Widgets/WidgetsManager.h @@ -57,7 +57,9 @@ public: void SetInventoryFirstItem(FText item); void SetInventorySecondItem(FText item); + void SwitchJournal(); void ShowJournal(); + void HideJournal(); void UpdateJournal(TArray text); protected: