Compare commits

..

No commits in common. "f9674f544532ab6f0505097bc3bfe57e967df633" and "220ea3a4812a151c2d12960966299e247daaea93" have entirely different histories.

26 changed files with 1 additions and 270 deletions

Binary file not shown.

View File

@ -48,8 +48,4 @@ public:
// 任务存档数据
UPROPERTY(SaveGame, BlueprintReadWrite, meta = (ToolTip = "任务存档数据"))
TArray<FQuestSaveData> QuestSaveData;
//已战胜的鱼
UPROPERTY(SaveGame, BlueprintReadWrite, meta = (ToolTip = "被击败的鱼"))
TArray<int32> Fish_defeated_IDS;
};

View File

@ -102,22 +102,3 @@ void UGameInfoManager::CreateGameInfoAndSave(UShapeAsset* ShipContainerShape, US
SaveGameInfo();
}
bool UGameInfoManager::IsFishDefeated(int32 FishID)
{
if (!IsValid(PlayerInfo))
{
return false;
}
return PlayerInfo->Fish_defeated_IDS.Contains(FishID);
}
void UGameInfoManager::AddDefeatedFish(int32 FishID)
{
if (!IsValid(PlayerInfo))
{
PlayerInfo = NewObject<UPlayerInfoSaveGame>(this);
}
PlayerInfo->Fish_defeated_IDS.Add(FishID);
SaveGameInfo();
}

View File

@ -29,12 +29,6 @@ public:
UFUNCTION(BlueprintCallable)
void CreateGameInfoAndSave(UShapeAsset* ShipContainerShape, UShapeAsset* PlayerContainerShape);
UFUNCTION(BlueprintPure)
bool IsFishDefeated(int32 FishID);
UFUNCTION(BlueprintCallable)
void AddDefeatedFish(int32 FishID);
protected:
UPROPERTY(BlueprintReadOnly)
TObjectPtr<class UPlayerInfoSaveGame> PlayerInfo;

View File

@ -1,53 +0,0 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "UIManagerSubsystem.h"
#include "ProjectFish/Widget/DragableUserWidget.h"
#include "Framework/Application/SlateApplication.h"
#include "Components/CanvasPanelSlot.h"
void UUIManagerSubsystem::Initialize(FSubsystemCollectionBase& Collection)
{
Super::Initialize(Collection);
FSlateApplication& SlateApp = FSlateApplication::Get();
SlateApp.OnApplicationMousePreInputButtonDownListener().AddUObject(this, &UUIManagerSubsystem::OnMouseButtonDown);
}
void UUIManagerSubsystem::AddDragWidget(UDragableUserWidget* UserWidget)
{
UserWidget->AddToViewport();
UserWidget->SetVisibility(ESlateVisibility::HitTestInvisible);
DragDropWidget = MakeWeakObjectPtr(UserWidget);
}
void UUIManagerSubsystem::RemoveDragWidget()
{
if (DragDropWidget.IsValid())
{
DragDropWidget->RemoveFromViewport();
}
DragDropWidget.Reset();
}
UDragableUserWidget* UUIManagerSubsystem::GetDragWidget()
{
if (DragDropWidget.IsValid())
{
return DragDropWidget.Get();
}
return nullptr;
}
void UUIManagerSubsystem::OnMouseButtonDown(const FPointerEvent& PointerEvent)
{
if (DragDropWidget.IsValid())
{
if (PointerEvent.GetEffectingButton() == EKeys::RightMouseButton)
{
DragDropWidget->OnMouseButtonDownWhenDragging(PointerEvent);
}
}
}

View File

@ -1,32 +0,0 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Subsystems/GameInstanceSubsystem.h"
#include "Widgets/SWidget.h"
#include "Blueprint/UserWidget.h"
#include "UIManagerSubsystem.generated.h"
/**
*
*/
UCLASS()
class PROJECTFISH_API UUIManagerSubsystem : public UGameInstanceSubsystem
{
GENERATED_BODY()
public:
virtual void Initialize(FSubsystemCollectionBase& Collection) override;
UFUNCTION(BlueprintCallable, Category = "UIManagerSubsystem")
void AddDragWidget(class UDragableUserWidget* UserWidget);
UFUNCTION(BlueprintCallable, Category = "UIManagerSubsystem")
void RemoveDragWidget();
UFUNCTION(BlueprintPure, Category = "UIManagerSubsystem")
UDragableUserWidget* GetDragWidget();
void OnMouseButtonDown(const FPointerEvent& PointerEvent);
protected:
TWeakObjectPtr<class UDragableUserWidget> DragDropWidget;
};

View File

@ -9,6 +9,6 @@ public class ProjectFish : ModuleRules
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
OptimizeCode = CodeOptimization.Never;
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine",
"InputCore", "NavigationSystem", "AIModule", "Niagara", "EnhancedInput", "GameplayTags", "DeveloperSettings", "UMG", "Slate" ,"SlateCore"});
"InputCore", "NavigationSystem", "AIModule", "Niagara", "EnhancedInput", "GameplayTags", "DeveloperSettings" });
}
}

View File

@ -1,116 +0,0 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "DragableUserWidget.h"
#include "Blueprint/WidgetLayoutLibrary.h"
#include "Components/CanvasPanelSlot.h"
#include "ProjectFish/Gameplay/Subsystem/UIManagerSubsystem.h"
void UDragableUserWidget::SetWidgetDragable(bool Dragable)
{
bDragable = Dragable;
}
void UDragableUserWidget::BeginDrag(const FGeometry& InGeometry)
{
bDraging = true;
//OriginWidgetScreenPos = InGeometry.GetAbsolutePosition();
UUIManagerSubsystem* UIManager = GetGameInstance()->GetSubsystem<UUIManagerSubsystem>();
UIManager->AddDragWidget(this);
}
void UDragableUserWidget::EndDrag()
{
//取消拖拽 不处理点击事件
bDraging = false;
UUIManagerSubsystem* UIManager = GetGameInstance()->GetSubsystem<UUIManagerSubsystem>();
UIManager->RemoveDragWidget();
}
// FReply UDragableUserWidget::NativeOnMouseButtonDown(const FGeometry& InGeometry, const FPointerEvent& InMouseEvent)
// {
// if (bDragable && InMouseEvent.GetEffectingButton() == EKeys::LeftMouseButton)
// {
// if (!bDraging)
// {
// BeginDrag(InGeometry);
// return FReply::Unhandled();
// }
// }
// else
// {
// return Super::NativeOnMouseButtonDown(InGeometry, InMouseEvent);
// }
// return FReply::Unhandled();
// }
//
// FReply UDragableUserWidget::NativeOnMouseButtonUp(const FGeometry& InGeometry, const FPointerEvent& InMouseEvent)
// {
// return Super::NativeOnMouseButtonUp(InGeometry, InMouseEvent);
// }
//
// FReply UDragableUserWidget::NativeOnMouseMove(const FGeometry& InGeometry, const FPointerEvent& InMouseEvent)
// {
// if (bDraging)
// {
// Super::NativeOnMouseMove(InGeometry, InMouseEvent);
//
// // 获取鼠标在屏幕空间的绝对坐标
// FVector2D MouseScreenPos = InMouseEvent.GetScreenSpacePosition();
//
// // 获取Widget在屏幕上的实际渲染尺寸
//
// FVector2D WidgetAbsoluteSize = InGeometry.GetDrawSize();
//
// // 计算Widget中心点应对应的屏幕位置
// FVector2D DesiredCenter = MouseScreenPos;
//
// // 计算新的左上角位置(让中心点对准鼠标)
// FVector2D NewTopLeft =FVector2D(DesiredCenter.X - WidgetAbsoluteSize.X * 0.5f, DesiredCenter.Y - WidgetAbsoluteSize.Y* 0.5f ); ;
//
// // 边界检查
// FVector2D ViewportSize;
// if (GEngine && GEngine->GameViewport)
// {
// GEngine->GameViewport->GetViewportSize(ViewportSize);
// }
// else
// {
// ViewportSize = FVector2D(1920, 1080);
// }
//
// // 确保Widget不会完全移出屏幕
// NewTopLeft.X = FMath::Clamp(NewTopLeft.X, 0.0f, ViewportSize.X - WidgetAbsoluteSize.X);
// NewTopLeft.Y = FMath::Clamp(NewTopLeft.Y, 0.0f, ViewportSize.Y - WidgetAbsoluteSize.Y);
//
// // // 计算相对于原始位置的偏移量
// // FVector2D ParentAbsolutePosition = FVector2D::ZeroVector;
// // if (InGeometry.GetParentGeometry().IsValid())
// // {
// // ParentAbsolutePosition = InGeometry.GetParentGeometry().GetAbsolutePosition();
// // }
// //
// FVector2D LocalOffset = NewTopLeft - OriginWidgetScreenPos;
//
// // 应用变换
// FWidgetTransform WidgetTransform = GetRenderTransform();
// WidgetTransform.Translation = LocalOffset/InGeometry.Scale;
// SetRenderTransform(WidgetTransform);
//
// // FString Scale = FString::Printf(TEXT("%.0f"), InGeometry.Scale);
// // UE_LOG(LogTemp, Warning, TEXT("Mouse: %s, CurrentWidgetScreenPos: %s, WidgetAbsoluteSize: %s NewTopLeft : %s LocalOffset : %s Scale = %s"),
// // *MouseScreenPos.ToString(),
// // *OriginWidgetScreenPos.ToString(),
// // *WidgetAbsoluteSize.ToString(),
// // *NewTopLeft.ToString(),
// // *LocalOffset.ToString(),
// // *Scale
// // );
//
// return FReply::Unhandled();
// }
// else
// return Super::NativeOnMouseMove(InGeometry, InMouseEvent);
// }

View File

@ -1,39 +0,0 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Blueprint/UserWidget.h"
#include "DragableUserWidget.generated.h"
/**
*
*/
UCLASS()
class PROJECTFISH_API UDragableUserWidget : public UUserWidget
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable, Category = "Dragable Widget")
void SetWidgetDragable(bool Dragable);
UFUNCTION(BlueprintCallable, Category = "Dragable Widget")
void BeginDrag(const FGeometry& InGeometry);
UFUNCTION(BlueprintCallable, Category = "Dragable Widget")
void EndDrag();
UFUNCTION(BlueprintImplementableEvent, Category = "Dragable Widget")
void OnMouseButtonDownWhenDragging(const FPointerEvent& PointerEvent);
// virtual FReply NativeOnMouseButtonDown( const FGeometry& InGeometry, const FPointerEvent& InMouseEvent ) override;
// virtual FReply NativeOnMouseButtonUp( const FGeometry& InGeometry, const FPointerEvent& InMouseEvent ) override;
// virtual FReply NativeOnMouseMove( const FGeometry& InGeometry, const FPointerEvent& InMouseEvent ) override;
protected:
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta = (ExposeOnSpawn = true))
bool bDragable;
UPROPERTY(BlueprintReadOnly)
bool bDraging;
FVector2D OriginWidgetScreenPos;
};