Compare commits
16 Commits
7f84d384b9
...
acc57e2874
| Author | SHA1 | Date | |
|---|---|---|---|
| acc57e2874 | |||
| c2128d1527 | |||
| 9ef2e335f9 | |||
| 7b328ce8dc | |||
| ea1959514d | |||
| ad1e298785 | |||
| 05983bd28d | |||
| a1c71b57b4 | |||
| bc0d889f7d | |||
| e527b25942 | |||
| 826e15958a | |||
| 7790344f1a | |||
| 626fb973e4 | |||
| 32c510f2cc | |||
| 1cd0265ee7 | |||
| 812cc728af |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -2,7 +2,7 @@
|
|||||||
"BuildId": "37670630",
|
"BuildId": "37670630",
|
||||||
"Modules":
|
"Modules":
|
||||||
{
|
{
|
||||||
"ProjectFish": "UnrealEditor-ProjectFish-0001.dll",
|
"ProjectFish": "UnrealEditor-ProjectFish.dll",
|
||||||
"ProjectFishEditor": "UnrealEditor-ProjectFishEditor-0001.dll"
|
"ProjectFishEditor": "UnrealEditor-ProjectFishEditor.dll"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -95,6 +95,7 @@ ManualIPAddress=
|
|||||||
[CoreRedirects]
|
[CoreRedirects]
|
||||||
+ClassRedirects=(OldName="/Script/ProjectFish.Skill_Pull",NewName="/Script/ProjectFish.SkillEffect_Damage")
|
+ClassRedirects=(OldName="/Script/ProjectFish.Skill_Pull",NewName="/Script/ProjectFish.SkillEffect_Damage")
|
||||||
+ClassRedirects=(OldName="/Script/ProjectFish.SkillEffect_Pull",NewName="/Script/ProjectFish.SkillEffect_Damage")
|
+ClassRedirects=(OldName="/Script/ProjectFish.SkillEffect_Pull",NewName="/Script/ProjectFish.SkillEffect_Damage")
|
||||||
|
+ClassRedirects=(OldName="/Script/ProjectFish.PlayerInventorySubsystem",NewName="/Script/ProjectFish.FishingRodConfigSubsystem")
|
||||||
|
|
||||||
[/Script/Engine.CollisionProfile]
|
[/Script/Engine.CollisionProfile]
|
||||||
-Profiles=(Name="NoCollision",CollisionEnabled=NoCollision,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="No collision",bCanModify=False)
|
-Profiles=(Name="NoCollision",CollisionEnabled=NoCollision,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="No collision",bCanModify=False)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
ProjectFish/Content/UI/Battle/WBP_SkillCard.uasset
Normal file
BIN
ProjectFish/Content/UI/Battle/WBP_SkillCard.uasset
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
ProjectFish/Content/UI/Ready/BP_SkillDragOption.uasset
Normal file
BIN
ProjectFish/Content/UI/Ready/BP_SkillDragOption.uasset
Normal file
Binary file not shown.
BIN
ProjectFish/Content/UI/Ready/UMG_FishingRodConfig.uasset
Normal file
BIN
ProjectFish/Content/UI/Ready/UMG_FishingRodConfig.uasset
Normal file
Binary file not shown.
BIN
ProjectFish/Content/UI/Ready/UMG_InventoryGridWidget.uasset
Normal file
BIN
ProjectFish/Content/UI/Ready/UMG_InventoryGridWidget.uasset
Normal file
Binary file not shown.
BIN
ProjectFish/Content/UI/Ready/UMG_ReadyWIndow.uasset
Normal file
BIN
ProjectFish/Content/UI/Ready/UMG_ReadyWIndow.uasset
Normal file
Binary file not shown.
BIN
ProjectFish/Content/UI/Ready/WBP_SkillIMoveable.uasset
Normal file
BIN
ProjectFish/Content/UI/Ready/WBP_SkillIMoveable.uasset
Normal file
Binary file not shown.
BIN
ProjectFish/Content/UI/Ready/WBP_SkillIcon.uasset
Normal file
BIN
ProjectFish/Content/UI/Ready/WBP_SkillIcon.uasset
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,5 +1,7 @@
|
|||||||
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ARasovog_002Easm_002Fl_003AC_0021_003FUsers_003F99714_003FAppData_003FLocal_003FTemp_003FSandboxFiles_003FMiqowul_003FRasovog_002Easm/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATuniqep_002Easm_002Fl_003AC_0021_003FUsers_003F99714_003FAppData_003FLocal_003FTemp_003FSandboxFiles_003FKasafil_003FTuniqep_002Easm/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATuniqep_002Easm_002Fl_003AC_0021_003FUsers_003F99714_003FAppData_003FLocal_003FTemp_003FSandboxFiles_003FKasafil_003FTuniqep_002Easm/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003AEditor_002Fd_003AUnrealEd_002Fd_003APrivate_002Fd_003AKismet2_002Ff_003AKismetDebugUtilities_002Ecpp/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ACoreUObject_002Fd_003APublic_002Fd_003AAssetRegistry_002Ff_003AAssetData_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ACoreUObject_002Fd_003APublic_002Fd_003AAssetRegistry_002Ff_003AAssetData_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003AEditor_002Fd_003APropertyEditor_002Fd_003APublic_002Ff_003APropertyCustomizationHelpers_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003AEditor_002Fd_003APropertyEditor_002Fd_003APublic_002Ff_003APropertyCustomizationHelpers_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ACoreUObject_002Fd_003APublic_002Fd_003AUObject_002Ff_003AUObjectBaseUtility_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ACoreUObject_002Fd_003APublic_002Fd_003AUObject_002Ff_003AUObjectBaseUtility_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
@ -8,4 +10,17 @@
|
|||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ACore_002Fd_003APublic_002Fd_003ADelegates_002Ff_003ADelegate_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ACore_002Fd_003APublic_002Fd_003ADelegates_002Ff_003ADelegate_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ACore_002Fd_003APublic_002Fd_003AMath_002Ff_003AUnrealMathUtility_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ACore_002Fd_003APublic_002Fd_003AMath_002Ff_003AUnrealMathUtility_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ACore_002Fd_003APublic_002Fd_003AMisc_002Ff_003AGuid_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ACore_002Fd_003APublic_002Fd_003AMisc_002Ff_003AGuid_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ACore_002Fd_003APublic_002Fd_003AMisc_002Ff_003AMTAccessDetector_002Eh/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ACore_002Fd_003APublic_002Fd_003AMisc_002Ff_003AMTAccessDetector_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ACore_002Fd_003APublic_002Fd_003ATasks_002Ff_003ATaskPrivate_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ACoreUObject_002Fd_003APrivate_002Fd_003AUObject_002Ff_003AClass_002Ecpp/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ACoreUObject_002Fd_003APrivate_002Fd_003AUObject_002Ff_003AGarbageCollection_002Ecpp/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ACoreUObject_002Fd_003APrivate_002Fd_003AUObject_002Ff_003AUObjectArray_002Ecpp/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ACoreUObject_002Fd_003APublic_002Fd_003AUObject_002Ff_003AObjectHandle_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ACoreUObject_002Fd_003APublic_002Fd_003AUObject_002Ff_003AObjectPtr_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ACoreUObject_002Fd_003APublic_002Fd_003AUObject_002Ff_003AUnrealType_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ACoreUObject_002Fd_003APublic_002Fd_003AUObject_002Ff_003AUObjectArray_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ACoreUObject_002Fd_003APublic_002Fd_003AUObject_002Ff_003AUObjectBase_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003AEngine_002Fd_003APrivate_002Ff_003AUnrealEngine_002Ecpp/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ASlate_002Fd_003APrivate_002Fd_003AFramework_002Fd_003AApplication_002Ff_003ASlateApplication_002Ecpp/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ASlate_002Fd_003APublic_002Fd_003AFramework_002Fd_003AApplication_002Ff_003ASlateApplication_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=72263A5F_002DD5F9_002D3915_002D8DA0_002DCD45C38A70E5_002Fdl_003ASource_003AF_0021_003FEpic_003FUE_005F5_002E5_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003ASlate_002Fd_003APublic_002Fd_003AWidgets_002Fd_003ALayout_002Ff_003ASBorder_002Eh/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary>
|
||||||
@ -6,6 +6,8 @@
|
|||||||
#include "EngineUtils.h"
|
#include "EngineUtils.h"
|
||||||
#include "ProjectFish/Definations.h"
|
#include "ProjectFish/Definations.h"
|
||||||
#include "ProjectFish/PawnWithSkill.h"
|
#include "ProjectFish/PawnWithSkill.h"
|
||||||
|
#include "ProjectFish/DataAsset/BagConfigAsset.h"
|
||||||
|
#include "ProjectFish/Subsystem/FishingRodConfigSubsystem.h"
|
||||||
|
|
||||||
|
|
||||||
// Sets default values for this component's properties
|
// Sets default values for this component's properties
|
||||||
@ -71,8 +73,14 @@ void UFishingRodComponent::BeginPlay()
|
|||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
//更新鱼竿槽位配置
|
||||||
|
UWorld* World = GetWorld();
|
||||||
|
UGameInstance* GameInstance = World->GetGameInstance();
|
||||||
|
if (IsValid( GameInstance->GetSubsystem<UFishingRodConfigSubsystem>()->GetFishingRodInventory()))
|
||||||
|
FishRodData.BagConfig = GameInstance->GetSubsystem<UFishingRodConfigSubsystem>()->GetFishingRodInventory();
|
||||||
// ...
|
// ...
|
||||||
Super::BeginPlay();
|
Super::BeginPlay();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -28,7 +28,19 @@ bool UBagConfigAsset::RemoveSkill(int32 SkillIndex)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UBagConfigAsset::CanPlaceSkill(USkillAsset* SkillObject, int32 PositionX, int32 PositionY) const
|
void UBagConfigAsset::RemoveSkillAsset(class USkillAsset* SkillAsset)
|
||||||
|
{
|
||||||
|
for (int32 i = 0; i < PlacedSkills.Num(); i++)
|
||||||
|
{
|
||||||
|
if (PlacedSkills[i].SkillAsset == SkillAsset)
|
||||||
|
{
|
||||||
|
PlacedSkills.RemoveAt(i);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool UBagConfigAsset::CanPlaceSkill(USkillAsset* SkillObject, int32 PositionX, int32 PositionY, bool IgnoreSelf ) const
|
||||||
{
|
{
|
||||||
if (!SkillObject || !BagShapeAsset)
|
if (!SkillObject || !BagShapeAsset)
|
||||||
{
|
{
|
||||||
@ -40,7 +52,7 @@ bool UBagConfigAsset::CanPlaceSkill(USkillAsset* SkillObject, int32 PositionX, i
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CheckSkillOverlap(SkillObject, PositionX, PositionY))
|
if (CheckSkillOverlap(SkillObject, PositionX, PositionY, IgnoreSelf))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -65,7 +77,7 @@ void UBagConfigAsset::ClearAllSkills()
|
|||||||
PlacedSkills.Empty();
|
PlacedSkills.Empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UBagConfigAsset::CheckSkillOverlap(USkillAsset* SkillObject, int32 PositionX, int32 PositionY) const
|
bool UBagConfigAsset::CheckSkillOverlap(USkillAsset* SkillObject, int32 PositionX, int32 PositionY, bool IgnoreSelf ) const
|
||||||
{
|
{
|
||||||
if (!SkillObject)
|
if (!SkillObject)
|
||||||
{
|
{
|
||||||
@ -80,14 +92,16 @@ bool UBagConfigAsset::CheckSkillOverlap(USkillAsset* SkillObject, int32 Position
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检查矩形重叠
|
// 检查矩形重叠
|
||||||
if (!(PositionX >= ExistingSkill.PositionX + GetSkillSizeValue(ExistingSkill.SkillAsset->SkillSize).X ||
|
if (!(PositionX >= ExistingSkill.PositionX + GetSkillSizeValue(ExistingSkill.SkillAsset->SkillSize).X ||
|
||||||
PositionX + GetSkillSizeValue(SkillObject->SkillSize).X <= ExistingSkill.PositionX ||
|
PositionX + GetSkillSizeValue(SkillObject->SkillSize).X <= ExistingSkill.PositionX ||
|
||||||
PositionY >= ExistingSkill.PositionY + GetSkillSizeValue(ExistingSkill.SkillAsset->SkillSize).Y ||
|
PositionY >= ExistingSkill.PositionY + GetSkillSizeValue(ExistingSkill.SkillAsset->SkillSize).Y ||
|
||||||
PositionY + GetSkillSizeValue(SkillObject->SkillSize).Y <= ExistingSkill.PositionY))
|
PositionY + GetSkillSizeValue(SkillObject->SkillSize).Y <= ExistingSkill.PositionY))
|
||||||
{
|
{
|
||||||
return true; // 有重叠
|
if (IgnoreSelf && ExistingSkill.SkillAsset == SkillObject)
|
||||||
|
continue;
|
||||||
|
else
|
||||||
|
return true; // 有重叠
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false; // 无重叠
|
return false; // 无重叠
|
||||||
|
|||||||
@ -79,10 +79,12 @@ public:
|
|||||||
// 移除技能
|
// 移除技能
|
||||||
UFUNCTION(BlueprintCallable, Category = "BagConfig")
|
UFUNCTION(BlueprintCallable, Category = "BagConfig")
|
||||||
bool RemoveSkill(int32 SkillIndex);
|
bool RemoveSkill(int32 SkillIndex);
|
||||||
|
UFUNCTION(BlueprintCallable, Category = "BagConfig")
|
||||||
|
void RemoveSkillAsset(class USkillAsset* SkillAsset);
|
||||||
|
|
||||||
// 检查技能是否可以放置在指定位置
|
// 检查技能是否可以放置在指定位置
|
||||||
UFUNCTION(BlueprintCallable, Category = "BagConfig")
|
UFUNCTION(BlueprintCallable, Category = "BagConfig")
|
||||||
bool CanPlaceSkill(USkillAsset* SkillObject, int32 PositionX, int32 PositionY) const;
|
bool CanPlaceSkill(USkillAsset* SkillObject, int32 PositionX, int32 PositionY, bool IgnoreSelf = false) const;
|
||||||
|
|
||||||
// 获取指定位置的技能索引
|
// 获取指定位置的技能索引
|
||||||
UFUNCTION(BlueprintCallable, Category = "BagConfig")
|
UFUNCTION(BlueprintCallable, Category = "BagConfig")
|
||||||
@ -98,7 +100,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
// 检查技能之间是否有重叠
|
// 检查技能之间是否有重叠
|
||||||
bool CheckSkillOverlap(USkillAsset* SkillObject, int32 PositionX, int32 PositionY) const;
|
bool CheckSkillOverlap(USkillAsset* SkillObject, int32 PositionX, int32 PositionY, bool IgnoreSelf = false) const;
|
||||||
|
|
||||||
// 检查技能是否在背包形状范围内
|
// 检查技能是否在背包形状范围内
|
||||||
bool IsSkillWithinBagShape(USkillAsset* SkillObject, int32 PositionX, int32 PositionY) const;
|
bool IsSkillWithinBagShape(USkillAsset* SkillObject, int32 PositionX, int32 PositionY) const;
|
||||||
|
|||||||
@ -10,6 +10,12 @@ USkillAsset::USkillAsset()
|
|||||||
SkillID = FGuid::NewGuid();
|
SkillID = FGuid::NewGuid();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FIntPoint USkillAsset::GetSkillSize()
|
||||||
|
{
|
||||||
|
return GetSkillSizeValue(SkillSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#if WITH_EDITOR
|
#if WITH_EDITOR
|
||||||
void USkillAsset::PostInitProperties()
|
void USkillAsset::PostInitProperties()
|
||||||
{
|
{
|
||||||
|
|||||||
@ -18,7 +18,8 @@ class PROJECTFISH_API USkillAsset : public UDataAsset
|
|||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
public:
|
public:
|
||||||
USkillAsset();
|
USkillAsset();
|
||||||
|
UFUNCTION(BlueprintPure)
|
||||||
|
FIntPoint GetSkillSize();
|
||||||
#if WITH_EDITOR
|
#if WITH_EDITOR
|
||||||
virtual void PostInitProperties() override;
|
virtual void PostInitProperties() override;
|
||||||
#endif
|
#endif
|
||||||
@ -28,6 +29,9 @@ public:
|
|||||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "技能名称"))
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "技能名称"))
|
||||||
FText SkillName;
|
FText SkillName;
|
||||||
|
|
||||||
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "技能描述"))
|
||||||
|
FText SkillDescription;
|
||||||
|
|
||||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "技能分类Tag"))
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "技能分类Tag"))
|
||||||
TArray<ESkillType> SkillTypes;
|
TArray<ESkillType> SkillTypes;
|
||||||
|
|
||||||
|
|||||||
@ -107,6 +107,12 @@ protected:
|
|||||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input, meta = (AllowPrivateAccess = "true"))
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input, meta = (AllowPrivateAccess = "true"))
|
||||||
class UInputAction* FishingAction;
|
class UInputAction* FishingAction;
|
||||||
|
|
||||||
|
/*** Invenroty ***/
|
||||||
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Inventory, meta = (AllowPrivateAccess = "true", ToolTip = "玩家背包携带的技能"))
|
||||||
|
class UBagConfigAsset* DefaultPlayerBag;
|
||||||
|
|
||||||
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Inventory, meta = (AllowPrivateAccess = "true", ToolTip = "鱼竿装备槽形状"))
|
||||||
|
class UBagShapeAsset* FishingRodShape;
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@ -115,11 +115,16 @@ void USkill::InitSkillTrigger()
|
|||||||
|
|
||||||
bool USkill::SkillTickAble()
|
bool USkill::SkillTickAble()
|
||||||
{
|
{
|
||||||
//剩余次数无限制或者拥有者没有被韧性眩晕
|
//剩余次数无限制 或者 剩余次数大于0次并且拥有者没有被韧性眩晕
|
||||||
return (RemainingEndurance >0 || RemainingEndurance == -1 )
|
return (RemainingEndurance == -1 || RemainingEndurance >= 0 )
|
||||||
&& Owner->CurrentTenacity > 0 && SkillData->triggerType == ESkillTriggerType::ActiveSkill;
|
&& Owner->CurrentTenacity > 0 && SkillData->triggerType == ESkillTriggerType::ActiveSkill;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool USkill::SkillExecuteAble()
|
||||||
|
{
|
||||||
|
return (RemainingEndurance == -1 || RemainingEndurance > 0 ) && RemainingTime <= 0;
|
||||||
|
}
|
||||||
|
|
||||||
FIntPoint USkill::GetSkillSize()
|
FIntPoint USkill::GetSkillSize()
|
||||||
{
|
{
|
||||||
return GetSkillSizeValue(SkillData->SkillSize);
|
return GetSkillSizeValue(SkillData->SkillSize);
|
||||||
@ -128,21 +133,25 @@ FIntPoint USkill::GetSkillSize()
|
|||||||
void USkill::TickSkill(float deltaTime)
|
void USkill::TickSkill(float deltaTime)
|
||||||
{
|
{
|
||||||
if (SkillTickAble())
|
if (SkillTickAble())
|
||||||
|
{
|
||||||
RemainingTime -= deltaTime * SkillData->Speed;
|
RemainingTime -= deltaTime * SkillData->Speed;
|
||||||
if (RemainingTime <= 0 )
|
RemainingTime = FMath::Max(RemainingTime, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (SkillExecuteAble() )
|
||||||
{
|
{
|
||||||
ExecuteSkill();
|
ExecuteSkill();
|
||||||
}
|
}
|
||||||
if (RemainingEndurance == 0)
|
// if (RemainingEndurance == 0)
|
||||||
{
|
// {
|
||||||
FSkillContext context;
|
// FSkillContext context;
|
||||||
context.OwnerSkill = this;
|
// context.OwnerSkill = this;
|
||||||
context.SkillManager = SkillManager;
|
// context.SkillManager = SkillManager;
|
||||||
for (auto Effect: SkillEffects)
|
// for (auto Effect: SkillEffects)
|
||||||
{
|
// {
|
||||||
Effect->EffectEnded(context);
|
// Effect->EffectEnded(context);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
void USkill::ExecuteSkill()
|
void USkill::ExecuteSkill()
|
||||||
|
|||||||
@ -53,6 +53,9 @@ public:
|
|||||||
UFUNCTION(BlueprintPure)
|
UFUNCTION(BlueprintPure)
|
||||||
bool SkillTickAble();
|
bool SkillTickAble();
|
||||||
|
|
||||||
|
UFUNCTION(BlueprintPure)
|
||||||
|
bool SkillExecuteAble();
|
||||||
|
|
||||||
UFUNCTION(BlueprintPure)
|
UFUNCTION(BlueprintPure)
|
||||||
FIntPoint GetSkillSize();
|
FIntPoint GetSkillSize();
|
||||||
|
|
||||||
|
|||||||
@ -45,134 +45,11 @@ void USkillEffect::Cancel(const FSkillContext& context)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void USkillEffect::EffectEnded(const FSkillContext& context)
|
// void USkillEffect::EffectEnded(const FSkillContext& context)
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
// TArray<UObject*> USkillEffect::GetApplyTargets(const FSkillContext& context)
|
|
||||||
// {
|
// {
|
||||||
// TArray<UObject*> result;
|
|
||||||
// switch (effectData.SkillSelecter.SelecterType)
|
|
||||||
// {
|
|
||||||
// case EEffectTargetType::Target:
|
|
||||||
// {
|
|
||||||
// //目标是敌人
|
|
||||||
// result.Add(context.SkillManager->GetEnemyPawn(OwnerSkill->GetOwner()));
|
|
||||||
// break;;
|
|
||||||
// }
|
|
||||||
// case EEffectTargetType::Self:
|
|
||||||
// {
|
|
||||||
// //目标是敌人
|
|
||||||
// result.Add(OwnerSkill->GetOwner());
|
|
||||||
// break;;
|
|
||||||
// }
|
|
||||||
// case EEffectTargetType::TargetSkill:
|
|
||||||
// {
|
|
||||||
// TArray<USkill*> Skills = context.SkillManager->GetSkillsByOwner(context.SkillManager->GetEnemyPawn(OwnerSkill->GetOwner()));
|
|
||||||
// if (effectData.SkillSelecter.bAll)
|
|
||||||
// {
|
|
||||||
// result.Append(Skills);
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
// int TargetNum = FMath::Min(effectData.SkillSelecter.MaxEffectTargetNum, Skills.Num());
|
|
||||||
// for (int i = 0; i < TargetNum; i++)
|
|
||||||
// {
|
|
||||||
// int randomIndex = FMath::RandRange(0, Skills.Num() - 1);
|
|
||||||
// result.Add(Skills[randomIndex]);
|
|
||||||
// Skills.RemoveAt(randomIndex);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// break;;
|
|
||||||
// }
|
|
||||||
// case EEffectTargetType::SelfSkill:
|
|
||||||
// {
|
|
||||||
// TArray<USkill*> Skills = context.SkillManager->GetSkillsByOwner(OwnerSkill->GetOwner());
|
|
||||||
// if (effectData.SkillSelecter.bAll)
|
|
||||||
// {
|
|
||||||
// result.Append(Skills);
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
// int TargetNum = FMath::Min(effectData.SkillSelecter.MaxEffectTargetNum, Skills.Num());
|
|
||||||
// for (int i = 0; i < TargetNum; i++)
|
|
||||||
// {
|
|
||||||
// int randomIndex = FMath::RandRange(0, Skills.Num() - 1);
|
|
||||||
// result.Add(Skills[randomIndex]);
|
|
||||||
// Skills.RemoveAt(randomIndex);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// break;;
|
|
||||||
// }
|
|
||||||
// case EEffectTargetType::AroundSkill:
|
|
||||||
// {
|
|
||||||
// TArray<USkill*> aroundSkills = context.SkillManager->GetSkillsAround(context.OwnerSkill);
|
|
||||||
// for (auto skill: aroundSkills)
|
|
||||||
// {
|
|
||||||
// result.Add(skill);
|
|
||||||
// }
|
|
||||||
// break;
|
|
||||||
// }
|
|
||||||
// case EEffectTargetType::SelfSkillType:
|
|
||||||
// {
|
|
||||||
// //筛选指定类型的技能
|
|
||||||
// TArray<USkill*> Skills = context.SkillManager->GetSkillsByOwner(OwnerSkill->GetOwner());
|
|
||||||
// for (int i = Skills.Num() - 1; i >= 0; i--)
|
|
||||||
// {
|
|
||||||
// if (!Skills[i]->GetSkillData()->SkillTypes.Contains(effectData.SkillSelecter.SkillType))
|
|
||||||
// {
|
|
||||||
// Skills.RemoveAt(i);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if (effectData.SkillSelecter.bAll)
|
|
||||||
// {
|
|
||||||
// result.Append(Skills);
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
// int TargetNum = FMath::Min(effectData.SkillSelecter.MaxEffectTargetNum, Skills.Num());
|
|
||||||
// for (int i = 0; i < TargetNum; i++)
|
|
||||||
// {
|
|
||||||
// int randomIndex = FMath::RandRange(0, Skills.Num() - 1);
|
|
||||||
// result.Add(Skills[randomIndex]);
|
|
||||||
// Skills.RemoveAt(randomIndex);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// break;
|
|
||||||
// }
|
|
||||||
// case EEffectTargetType::TargetSkillType:
|
|
||||||
// {
|
|
||||||
// //筛选指定类型的技能
|
|
||||||
// TArray<USkill*> Skills = context.SkillManager->GetSkillsByOwner(context.SkillManager->GetEnemyPawn(OwnerSkill->GetOwner()));
|
|
||||||
// for (int i = Skills.Num() - 1; i >= 0; i--)
|
|
||||||
// {
|
|
||||||
// if (!Skills[i]->GetSkillData()->SkillTypes.Contains(effectData.SkillSelecter.SkillType))
|
|
||||||
// {
|
|
||||||
// Skills.RemoveAt(i);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if (effectData.SkillSelecter.bAll)
|
|
||||||
// {
|
|
||||||
// result.Append(Skills);
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
// int TargetNum = FMath::Min(effectData.SkillSelecter.MaxEffectTargetNum, Skills.Num());
|
|
||||||
// for (int i = 0; i < TargetNum; i++)
|
|
||||||
// {
|
|
||||||
// int randomIndex = FMath::RandRange(0, Skills.Num() - 1);
|
|
||||||
// result.Add(Skills[randomIndex]);
|
|
||||||
// Skills.RemoveAt(randomIndex);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// break;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// return result;
|
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
||||||
FString USkillEffect::GetSkillEffectDes()
|
FString USkillEffect::GetSkillEffectDes()
|
||||||
{
|
{
|
||||||
return FString();
|
return FString();
|
||||||
|
|||||||
@ -20,7 +20,7 @@ public:
|
|||||||
void InitSkillEffect(class USkill* skill, FSkillEffectData data);
|
void InitSkillEffect(class USkill* skill, FSkillEffectData data);
|
||||||
virtual void Execute(const FSkillContext& context) ;
|
virtual void Execute(const FSkillContext& context) ;
|
||||||
virtual void Cancel(const FSkillContext& context) ;
|
virtual void Cancel(const FSkillContext& context) ;
|
||||||
virtual void EffectEnded(const FSkillContext& context);
|
//virtual void EffectEnded(const FSkillContext& context);
|
||||||
//TArray<UObject*> GetApplyTargets(const FSkillContext& context);
|
//TArray<UObject*> GetApplyTargets(const FSkillContext& context);
|
||||||
|
|
||||||
UFUNCTION(BlueprintPure)
|
UFUNCTION(BlueprintPure)
|
||||||
|
|||||||
@ -24,24 +24,24 @@ void USkillEffect_DamageReduce::Execute(const FSkillContext& context)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void USkillEffect_DamageReduce::EffectEnded(const FSkillContext& context)
|
// void USkillEffect_DamageReduce::EffectEnded(const FSkillContext& context)
|
||||||
{
|
// {
|
||||||
Super::EffectEnded(context);
|
// Super::EffectEnded(context);
|
||||||
TArray<UObject*> targets = context.SkillManager->GetTargetsBySelector(context.OwnerSkill, effectData.SkillSelecter);
|
// TArray<UObject*> targets = context.SkillManager->GetTargetsBySelector(context.OwnerSkill, effectData.SkillSelecter);
|
||||||
for (auto target: targets)
|
// for (auto target: targets)
|
||||||
{
|
// {
|
||||||
if (!target->GetClass()->IsChildOf(APawnWithSkill::StaticClass()))
|
// if (!target->GetClass()->IsChildOf(APawnWithSkill::StaticClass()))
|
||||||
{
|
// {
|
||||||
UE_LOG(LogTemp, Error, TEXT("skill %s apply target is not a pawn "), *(OwnerSkill->GetSkillName()));
|
// UE_LOG(LogTemp, Error, TEXT("skill %s apply target is not a pawn "), *(OwnerSkill->GetSkillName()));
|
||||||
}
|
// }
|
||||||
else
|
// else
|
||||||
{
|
// {
|
||||||
//恢复目标护盾值
|
// //恢复目标护盾值
|
||||||
APawnWithSkill* OwnerPawn = Cast<APawnWithSkill>(target);
|
// APawnWithSkill* OwnerPawn = Cast<APawnWithSkill>(target);
|
||||||
OwnerPawn->SetDamageReduce(0);
|
// OwnerPawn->SetDamageReduce(0);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
FString USkillEffect_DamageReduce::GetSkillEffectDes()
|
FString USkillEffect_DamageReduce::GetSkillEffectDes()
|
||||||
{
|
{
|
||||||
|
|||||||
@ -15,6 +15,6 @@ class PROJECTFISH_API USkillEffect_DamageReduce : public USkillEffect
|
|||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
public:
|
public:
|
||||||
void Execute(const FSkillContext& context) override;
|
void Execute(const FSkillContext& context) override;
|
||||||
void EffectEnded(const FSkillContext& context) override;
|
//void EffectEnded(const FSkillContext& context) override;
|
||||||
FString GetSkillEffectDes() override;
|
FString GetSkillEffectDes() override;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -36,11 +36,11 @@ void USkillEffect_ModifySpeed::Execute(const FSkillContext& context)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void USkillEffect_ModifySpeed::EffectEnded(const FSkillContext& context)
|
// void USkillEffect_ModifySpeed::EffectEnded(const FSkillContext& context)
|
||||||
{
|
// {
|
||||||
Super::EffectEnded(context);
|
// Super::EffectEnded(context);
|
||||||
//GetWorld()->GetTimerManager().ClearTimer(TimerHandle);
|
// //GetWorld()->GetTimerManager().ClearTimer(TimerHandle);
|
||||||
}
|
// }
|
||||||
|
|
||||||
FString USkillEffect_ModifySpeed::GetSkillEffectDes()
|
FString USkillEffect_ModifySpeed::GetSkillEffectDes()
|
||||||
{
|
{
|
||||||
|
|||||||
@ -17,7 +17,7 @@ class PROJECTFISH_API USkillEffect_ModifySpeed : public USkillEffect
|
|||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
public:
|
public:
|
||||||
void Execute(const FSkillContext& context) override;
|
void Execute(const FSkillContext& context) override;
|
||||||
void EffectEnded(const FSkillContext& context) override;
|
//void EffectEnded(const FSkillContext& context) override;
|
||||||
FString GetSkillEffectDes() override;
|
FString GetSkillEffectDes() override;
|
||||||
private:
|
private:
|
||||||
FTimerHandle TimerHandle;
|
FTimerHandle TimerHandle;
|
||||||
|
|||||||
@ -53,26 +53,27 @@ void USkillManager::AddPawn(class APawnWithSkill* Pawn, FIntPoint BagSize)
|
|||||||
void USkillManager::AddBagWithSkills(UBagConfigAsset* Bag, APawnWithSkill* Pawn, TArray<USkill*>& SkillObjects,
|
void USkillManager::AddBagWithSkills(UBagConfigAsset* Bag, APawnWithSkill* Pawn, TArray<USkill*>& SkillObjects,
|
||||||
TArray<FIntPoint>& BagPositions)
|
TArray<FIntPoint>& BagPositions)
|
||||||
{
|
{
|
||||||
FIntPoint BagSize = *PawnInfo.Find(Pawn);
|
if (IsValid(Bag))
|
||||||
TMap<FIntPoint, int32>* states = PawnBagState.Find(Pawn);
|
|
||||||
for (auto PlacedSkill: Bag->PlacedSkills)
|
|
||||||
{
|
{
|
||||||
USkill* skill = NewObject<USkill>(this);
|
FIntPoint BagSize = *PawnInfo.Find(Pawn);
|
||||||
skill->InitSkill(Pawn, this, PlacedSkill);
|
TMap<FIntPoint, int32>* states = PawnBagState.Find(Pawn);
|
||||||
SkillObjects.Add(skill);
|
for (auto PlacedSkill: Bag->PlacedSkills)
|
||||||
BagPositions.Add(FIntPoint(PlacedSkill.PositionX, PlacedSkill.PositionY));
|
|
||||||
Skills.Add(skill);
|
|
||||||
//设置占用状态
|
|
||||||
for (int x = PlacedSkill.PositionX; x < PlacedSkill.PositionX + PlacedSkill.GetSkillSize().X; x++)
|
|
||||||
{
|
{
|
||||||
for (int y = PlacedSkill.PositionY; y < PlacedSkill.PositionY + PlacedSkill.GetSkillSize().Y; y++)
|
USkill* skill = NewObject<USkill>(this);
|
||||||
|
skill->InitSkill(Pawn, this, PlacedSkill);
|
||||||
|
SkillObjects.Add(skill);
|
||||||
|
BagPositions.Add(FIntPoint(PlacedSkill.PositionX, PlacedSkill.PositionY));
|
||||||
|
Skills.Add(skill);
|
||||||
|
//设置占用状态
|
||||||
|
for (int x = PlacedSkill.PositionX; x < PlacedSkill.PositionX + PlacedSkill.GetSkillSize().X; x++)
|
||||||
{
|
{
|
||||||
states->Add(FIntPoint(x, y) , GetSkillIndex(skill));
|
for (int y = PlacedSkill.PositionY; y < PlacedSkill.PositionY + PlacedSkill.GetSkillSize().Y; y++)
|
||||||
|
{
|
||||||
|
states->Add(FIntPoint(x, y) , GetSkillIndex(skill));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void USkillManager::OnAllSkillAdded()
|
void USkillManager::OnAllSkillAdded()
|
||||||
|
|||||||
@ -0,0 +1,17 @@
|
|||||||
|
// Fill out your copyright notice in the Description page of Project Settings.
|
||||||
|
|
||||||
|
|
||||||
|
#include "FishingRodConfigSubsystem.h"
|
||||||
|
|
||||||
|
#include "ProjectFish/DataAsset/BagConfigAsset.h"
|
||||||
|
|
||||||
|
void UFishingRodConfigSubsystem::CreatePlayerInventory(class UBagShapeAsset* bagShape)
|
||||||
|
{
|
||||||
|
inventoryConfig = NewObject<UBagConfigAsset>(this);
|
||||||
|
inventoryConfig->BagShapeAsset = bagShape;
|
||||||
|
}
|
||||||
|
|
||||||
|
UBagConfigAsset* UFishingRodConfigSubsystem::GetFishingRodInventory()
|
||||||
|
{
|
||||||
|
return this->inventoryConfig;
|
||||||
|
}
|
||||||
@ -0,0 +1,26 @@
|
|||||||
|
// Fill out your copyright notice in the Description page of Project Settings.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "CoreMinimal.h"
|
||||||
|
#include "Subsystems/GameInstanceSubsystem.h"
|
||||||
|
#include "FishingRodConfigSubsystem.generated.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
UCLASS()
|
||||||
|
class PROJECTFISH_API UFishingRodConfigSubsystem : public UGameInstanceSubsystem
|
||||||
|
{
|
||||||
|
GENERATED_BODY()
|
||||||
|
|
||||||
|
public:
|
||||||
|
UFUNCTION(BlueprintCallable, Category = "PlayerInventorySubsystem")
|
||||||
|
void CreatePlayerInventory(class UBagShapeAsset* bagShape);
|
||||||
|
|
||||||
|
UFUNCTION(BlueprintPure, Category = "PlayerInventorySubsystem")
|
||||||
|
UBagConfigAsset* GetFishingRodInventory();
|
||||||
|
private:
|
||||||
|
UPROPERTY()
|
||||||
|
class UBagConfigAsset* inventoryConfig = nullptr;
|
||||||
|
};
|
||||||
@ -15,6 +15,7 @@ void SBagConfigGridWidget::Construct(const FArguments& InArgs)
|
|||||||
PreviewSkill = nullptr;
|
PreviewSkill = nullptr;
|
||||||
PreviewX = -1;
|
PreviewX = -1;
|
||||||
PreviewY = -1;
|
PreviewY = -1;
|
||||||
|
HoveredSkillIndex = -1;
|
||||||
|
|
||||||
ChildSlot
|
ChildSlot
|
||||||
[
|
[
|
||||||
@ -50,9 +51,76 @@ FReply SBagConfigGridWidget::OnMouseButtonDown(const FGeometry& MyGeometry, cons
|
|||||||
|
|
||||||
FReply SBagConfigGridWidget::OnMouseMove(const FGeometry& MyGeometry, const FPointerEvent& MouseEvent)
|
FReply SBagConfigGridWidget::OnMouseMove(const FGeometry& MyGeometry, const FPointerEvent& MouseEvent)
|
||||||
{
|
{
|
||||||
|
if (BagConfig.IsValid())
|
||||||
|
{
|
||||||
|
FVector2D LocalPosition = MyGeometry.AbsoluteToLocal(MouseEvent.GetScreenSpacePosition());
|
||||||
|
FVector2D GridCell = GetGridCellFromPosition(LocalPosition);
|
||||||
|
|
||||||
|
int32 GridX = FMath::FloorToInt(GridCell.X);
|
||||||
|
int32 GridY = FMath::FloorToInt(GridCell.Y);
|
||||||
|
|
||||||
|
if (IsValidGridPosition(GridX, GridY))
|
||||||
|
{
|
||||||
|
USkillAsset* HoveredSkill = GetSkillAtPosition(GridX, GridY);
|
||||||
|
if (HoveredSkill)
|
||||||
|
{
|
||||||
|
int32 NewHoveredIndex = BagConfig->GetSkillAtPosition(GridX, GridY);
|
||||||
|
if (NewHoveredIndex != HoveredSkillIndex)
|
||||||
|
{
|
||||||
|
HoveredSkillIndex = NewHoveredIndex;
|
||||||
|
HoveredSkillTooltip = CreateSkillTooltip(HoveredSkill);
|
||||||
|
|
||||||
|
if (HoveredSkillTooltip.IsValid())
|
||||||
|
{
|
||||||
|
FSlateApplication::Get().PushMenu(
|
||||||
|
AsShared(),
|
||||||
|
FWidgetPath(),
|
||||||
|
HoveredSkillTooltip.ToSharedRef(),
|
||||||
|
MouseEvent.GetScreenSpacePosition(),
|
||||||
|
FPopupTransitionEffect::None
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return FReply::Handled();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 清除悬停状态
|
||||||
|
if (HoveredSkillIndex != -1)
|
||||||
|
{
|
||||||
|
HoveredSkillIndex = -1;
|
||||||
|
if (HoveredSkillTooltip.IsValid())
|
||||||
|
{
|
||||||
|
FSlateApplication::Get().DismissAllMenus();
|
||||||
|
HoveredSkillTooltip.Reset();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return FReply::Unhandled();
|
return FReply::Unhandled();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SBagConfigGridWidget::OnMouseEnter(const FGeometry& MyGeometry, const FPointerEvent& MouseEvent)
|
||||||
|
{
|
||||||
|
SCompoundWidget::OnMouseEnter(MyGeometry, MouseEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SBagConfigGridWidget::OnMouseLeave(const FPointerEvent& MouseEvent)
|
||||||
|
{
|
||||||
|
// 清除悬停状态
|
||||||
|
if (HoveredSkillIndex != -1)
|
||||||
|
{
|
||||||
|
HoveredSkillIndex = -1;
|
||||||
|
if (HoveredSkillTooltip.IsValid())
|
||||||
|
{
|
||||||
|
FSlateApplication::Get().DismissAllMenus();
|
||||||
|
HoveredSkillTooltip.Reset();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SCompoundWidget::OnMouseLeave(MouseEvent);
|
||||||
|
}
|
||||||
|
|
||||||
int32 SBagConfigGridWidget::OnPaint(const FPaintArgs& Args, const FGeometry& AllottedGeometry,
|
int32 SBagConfigGridWidget::OnPaint(const FPaintArgs& Args, const FGeometry& AllottedGeometry,
|
||||||
const FSlateRect& MyCullingRect, FSlateWindowElementList& OutDrawElements, int32 LayerId,
|
const FSlateRect& MyCullingRect, FSlateWindowElementList& OutDrawElements, int32 LayerId,
|
||||||
const FWidgetStyle& InWidgetStyle, bool bParentEnabled) const
|
const FWidgetStyle& InWidgetStyle, bool bParentEnabled) const
|
||||||
@ -232,3 +300,52 @@ FLinearColor SBagConfigGridWidget::GetCellColor(int32 X, int32 Y) const
|
|||||||
// 空闲格子为浅灰色
|
// 空闲格子为浅灰色
|
||||||
return FLinearColor(0.7f, 0.7f, 0.7f, 1.0f);
|
return FLinearColor(0.7f, 0.7f, 0.7f, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
USkillAsset* SBagConfigGridWidget::GetSkillAtPosition(int32 X, int32 Y) const
|
||||||
|
{
|
||||||
|
if (!BagConfig.IsValid())
|
||||||
|
{
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
int32 SkillIndex = BagConfig->GetSkillAtPosition(X, Y);
|
||||||
|
if (SkillIndex >= 0 && SkillIndex < BagConfig->PlacedSkills.Num())
|
||||||
|
{
|
||||||
|
return BagConfig->PlacedSkills[SkillIndex].SkillAsset;
|
||||||
|
}
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
TSharedRef<SWidget> SBagConfigGridWidget::CreateSkillTooltip(USkillAsset* SkillAsset) const
|
||||||
|
{
|
||||||
|
if (!SkillAsset)
|
||||||
|
{
|
||||||
|
return SNullWidget::NullWidget;
|
||||||
|
}
|
||||||
|
|
||||||
|
return SNew(SBorder)
|
||||||
|
.BorderImage(FCoreStyle::Get().GetBrush("ToolTip.Background"))
|
||||||
|
.Padding(FMargin(8.0f))
|
||||||
|
[
|
||||||
|
SNew(SVerticalBox)
|
||||||
|
+ SVerticalBox::Slot()
|
||||||
|
.AutoHeight()
|
||||||
|
[
|
||||||
|
SNew(STextBlock)
|
||||||
|
.Text(SkillAsset->SkillName)
|
||||||
|
.Font(FCoreStyle::GetDefaultFontStyle("Bold", 12))
|
||||||
|
.ColorAndOpacity(FLinearColor::White)
|
||||||
|
]
|
||||||
|
+ SVerticalBox::Slot()
|
||||||
|
.AutoHeight()
|
||||||
|
.Padding(0, 4, 0, 0)
|
||||||
|
[
|
||||||
|
SNew(STextBlock)
|
||||||
|
.Text(SkillAsset->SkillDescription)
|
||||||
|
.Font(FCoreStyle::GetDefaultFontStyle("Regular", 10))
|
||||||
|
.ColorAndOpacity(FLinearColor(0.9f, 0.9f, 0.9f, 1.0f))
|
||||||
|
.WrapTextAt(250.0f)
|
||||||
|
]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|||||||
@ -35,6 +35,8 @@ protected:
|
|||||||
// Slate重写函数
|
// Slate重写函数
|
||||||
virtual FReply OnMouseButtonDown(const FGeometry& MyGeometry, const FPointerEvent& MouseEvent) override;
|
virtual FReply OnMouseButtonDown(const FGeometry& MyGeometry, const FPointerEvent& MouseEvent) override;
|
||||||
virtual FReply OnMouseMove(const FGeometry& MyGeometry, const FPointerEvent& MouseEvent) override;
|
virtual FReply OnMouseMove(const FGeometry& MyGeometry, const FPointerEvent& MouseEvent) override;
|
||||||
|
virtual void OnMouseEnter(const FGeometry& MyGeometry, const FPointerEvent& MouseEvent) override;
|
||||||
|
virtual void OnMouseLeave(const FPointerEvent& MouseEvent) override;
|
||||||
virtual int32 OnPaint(const FPaintArgs& Args, const FGeometry& AllottedGeometry, const FSlateRect& MyCullingRect,
|
virtual int32 OnPaint(const FPaintArgs& Args, const FGeometry& AllottedGeometry, const FSlateRect& MyCullingRect,
|
||||||
FSlateWindowElementList& OutDrawElements, int32 LayerId, const FWidgetStyle& InWidgetStyle, bool bParentEnabled) const override;
|
FSlateWindowElementList& OutDrawElements, int32 LayerId, const FWidgetStyle& InWidgetStyle, bool bParentEnabled) const override;
|
||||||
|
|
||||||
@ -52,6 +54,10 @@ private:
|
|||||||
int32 PreviewX;
|
int32 PreviewX;
|
||||||
int32 PreviewY;
|
int32 PreviewY;
|
||||||
|
|
||||||
|
// 悬停状态
|
||||||
|
TSharedPtr<SWidget> HoveredSkillTooltip;
|
||||||
|
int32 HoveredSkillIndex;
|
||||||
|
|
||||||
// UI参数
|
// UI参数
|
||||||
static const float CellSize;
|
static const float CellSize;
|
||||||
static const float CellSpacing;
|
static const float CellSpacing;
|
||||||
@ -61,6 +67,8 @@ private:
|
|||||||
FVector2D GetGridCellFromPosition(const FVector2D& Position) const;
|
FVector2D GetGridCellFromPosition(const FVector2D& Position) const;
|
||||||
bool IsValidGridPosition(int32 X, int32 Y) const;
|
bool IsValidGridPosition(int32 X, int32 Y) const;
|
||||||
FLinearColor GetCellColor(int32 X, int32 Y) const;
|
FLinearColor GetCellColor(int32 X, int32 Y) const;
|
||||||
|
USkillAsset* GetSkillAtPosition(int32 X, int32 Y) const;
|
||||||
|
TSharedRef<SWidget> CreateSkillTooltip(USkillAsset* SkillAsset) const;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
2247
ProjectFish/hs_err_pid7252.log
Normal file
2247
ProjectFish/hs_err_pid7252.log
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user