From f8a05026d58a0544d9667d7e0bd036f4589361a3 Mon Sep 17 00:00:00 2001 From: wyatt Date: Mon, 13 Oct 2025 12:57:04 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=92=E8=89=B2=E5=B1=9E=E6=80=A7=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Blueprint/Level/Actor/Role/BP_Fox.uasset | Bin 27032 -> 27682 bytes .../Level/Actor/Role/BP_Rabbit.uasset | Bin 27824 -> 28263 bytes Content/Lua/Level/Actor/LevelFoxRole.lua | 2 - Content/Lua/Level/Actor/LevelRabbitRole.lua | 2 - .../Private/BusyActorManagerSubSystem.cpp | 52 -------------- ...layLibrary.cpp => BusyGameplayLibrary.cpp} | 6 +- .../Private/Level/Actor/BusyPawnBase.cpp | 4 +- .../Private/Level/Actor/BusyPlayerRole.cpp | 33 ++++++++- .../Private/Level/BusyLevelItem.cpp | 2 +- .../Private/Level/LevelItemReward.cpp | 2 +- Source/BusyRabbit/Private/Role/BusyRole.cpp | 2 +- .../BusyRabbit/Private/Role/RoleAnimation.cpp | 2 +- .../Public/BusyActorManagerSubSystem.h | 67 ------------------ ...amePlayLibrary.h => BusyGameplayLibrary.h} | 10 +-- .../Public/Level/Actor/BusyPawnBase.h | 18 ++++- .../Public/Level/Actor/BusyPlayerRole.h | 12 +++- 16 files changed, 67 insertions(+), 147 deletions(-) delete mode 100644 Source/BusyRabbit/Private/BusyActorManagerSubSystem.cpp rename Source/BusyRabbit/Private/{BusyGamePlayLibrary.cpp => BusyGameplayLibrary.cpp} (93%) delete mode 100644 Source/BusyRabbit/Public/BusyActorManagerSubSystem.h rename Source/BusyRabbit/Public/{BusyGamePlayLibrary.h => BusyGameplayLibrary.h} (86%) diff --git a/Content/Blueprint/Level/Actor/Role/BP_Fox.uasset b/Content/Blueprint/Level/Actor/Role/BP_Fox.uasset index 10ab2f46675a7b2feb6b1b8382514ed1b6c1c298..325b22f73e0e0abe57bf21d458cc9e9cc7ddc187 100644 GIT binary patch delta 7578 zcmd5>3s9BE72c~*!J=FdF320it57u>QA0G50KRz2L!~Oh1uk%rM~YVyjpiC3t+rYu zt5zLr8Gs3HiHjFX7Msx=)~iUv6?ZA(LeTmJKx+i zeYK6c19ryZs7<3+7PUQ-7<($6G04)UGL}itQhKU?b?JB2C*z7<-0Ymtb~a~v*Vz>d za}Grm_Se;1IK49dMc|?5IKO18oW*IzjZHMvXpjglZ6)4KO=h^be@vBcGD&J{JGZ*K zx;%~UuG+GW5*o1Uzd6@P`Yc2Ro-TKT*VEaN-{R_Mb~mz~Bk6k+P0-bCUQfHr>#p47 zX=`JP)|T!`3cysj8{8iIR(GDe+0(JA&9#lyo#5m7pT<;2jVI_sUT>GDev8-5qP!6s z`m)F7ghYf8e_7|F?CQRR8-4BLKC&$vM;z&L|C&Em#|{lmZq8r+>|3<&g!Xssvu{8C z3||-CFe#jbt6YzCl)Bp8%y+B%)4ucJSH@0FAa>rC&D-FiyQ`wJ%{}BsPUZ z!kyMY!PRk(2ZV}m<6@MsHeI2KqIUUo=zX;EU9LAho(G}C=*I!j2n{+x z_AgfOwxo3qRo9?pwiI2h;5()iI{&6=fx};yV)*zI*|%4U6-32nnBbc=_&M2s)qwAg z&)}aV*kiC&&hW;kzYa6+;kyolhySX{t}(&{N+ocuyu20xZ;cYMv@ zioj>deuhVAOi#*i{#DZm_gq8p;qaDvM0f+C>ImzBsr87!{6*6mO&aluP|NyIS~z4l z(UqLxysp8q6nrQYT>0#66+Ty_WII}<2Ho)KR$=&>rU}bYryWog?$=uRsgy$J2LaGl zP3se~zho1SNG;^oQtXa4O{~)JrA>TCY7?)E4T(XFacYssNMN`>kq@ROgc`lHw55a_ z&zsVcLS{{+9SNI|I2mU)Z&fYbqige74sp*H_w}dE$n;^+DZT%CcaYR#zMyK^mdh56 z$S9P97|F~F6sr9M-!v1k>5?PH7(#ZRY|)7QV{F$F<psIELrR zwG;SHOYHZk^$4-Lc$v&0CIZQ86Jy1f1p6pAMNF*_Z{roJ^((c$EIfj>sM+0 zkg&b%Cgtp6$%EfSHR7#1E*!B7He-R?VV^XDfTc+RehP!2e-=Mfn%Fi?jQuZeQN>R0 z`v=pP9m?C^TXTN>d;w9X-Lzx)k*~f;CLuP@B~6s`Tu-#GMU7;OMyv|wRTWT^9%O(j zMpyI`Ju(0-=^d%HH3cUN=J&c zqw?!l)z#G`Fc;Z_Qk&n=MCI|_zPR9p$G-P!>2tF`K6dc{f5p#DOBbOk7!O5YklPdK z8Obxp$gc6X%I)cX?iji6Uq6>q@s0H@gHz%~t-ehnnFnY;mjXd#N*z@ZlqJLp6u5`> zIR>B2lPzlDT%*rJiYHa6;|!Kq`@M!xtRG#I#z+Y;35ukko!cr~Vv6O+6g+;i(*A(* z8z8s@LLv_CIlHs4`a;2p-5cIZJp6f!6>kksuAUN}CFW3u^77c|P;Ayly35St2dn2! z+kR{Dfe-D)xhLO@DBs%NyB1mkc@GOM3p6cpwlb+C@5aFRhNV9}lFnc4rTUHI6FJIadpCBC>OH++NK_=Qw-jB+uR|DtAD%p%Fxi=C+Pb$3xM)K4pwm&F!FmWYdZ z??(U4#`g<^Z`fe}ji+-aE+~C&@gHvZRwP}r;*GjR@k0j#D#uH;FfpBs>b6Og_+%WRp|+avCdbwsihuS6-CT z4GmSEhD}VVonN0HC4PUAU}*8_d`(?9DZ5seqLlGDuHAF-kqdUGu;#VAqiI$_0`)+q zZ>`D+LriZI1G^6r7sM))c&Z^aUpw$05*Z^2?IcK%!cM-td47ynj`Yl5!h4!$E__Hz z3T2B%+%RTHhM!NFl3C8LltdT!iH24pA!tO^!;Rh#3CTLVh}wB^OG-FG4Jzk7Ez!Ov xV_;tN+q7ttru8GCQOn|`&=eV`6y(VkjqujSN{urCj_I~%xt7sa&R2W#{|iGd2)h6P delta 7061 zcmd5=3viUx6}~@7G=V%;vUxwqizVS{HH3x=q}c?LtVtFUFg!xCgiUsnKm;SAHEu+- z(u$zh2V!f1cBYj&BW-ME+G!kd>|U5&5R4P(yivtzf`a+=RyZ^nLe|P`gO`W#W zGx`5>|8u@`?z#7z|J;9bx_&*ae@@)TciA8P(YF_mxj#5j&0cym&=sN!4UF}Z%;V)PQ}*z_n6{Den9A6Z z?D(@9Z=BjSa(wEk82*#wqlvMET0XFoy?t-axsidCDowNUW0u);KVcd54M@K`B)>$y zVF9YwnYb(5ZBhoDU5?FgJEiV4;l5;o!{!nBSf)N;aHz&chu99#?K)$BBHUea91XWC zD$d7*!+W9v8N*7{E=8IcIJHaBa64&!L6LxOlf&JU#N9gy+$r+6P2zl!CI)c(Bpu!| zN!(x{PG5g;jxq6MY5};RK!@VV%-{W{IJy6-xZrS)DNq+0aqB0E+ZYL_@{fr(MFL9Q zTZH@SByoEq;O>(;F+chU$gCC=5c(~+5kCO@5#pgu%HY;8gzMPmTQx!Tc(kuSh3Ko(s|3!R!}8nbg6aMHu1w*+1%qy35I{^f|iR zz!JUM#I<4@AIr*}?~861M%M@<#wwhAf%H5tyTtZkkcm1MjV3DsP5u^S zqPiVS=F3^yCQOEMN^Iv0CWuv}j(9v>Ka?i-ImLR;n!vph0{Hjjc-cw;Z_h2UePZwq z$S%4t3&v|==tlIu4*yjcI5G_QI=N-bR}1e;^31)%Dd61_erTlZxi&kMAbaRit9nin*rF!_36iS6AWlTH~oOzxKBA554e6_wcj z8f3D`V4_O9!aEUIQPo0}!c@A@C=%(yvXdl-9M8~!`}MSOHT+oCG+tYr7u!@wy(BR? zHx>P&+Sx%Lyd8G7j-)3WMjkCLE%TL zyi5fbWflYzaTedCW?3X=WdYkQLcu~&RG{fPo46;-p>cVYQii~A@k1?1{9v#GuSlYIZ3HgK6#)<_N}qHC1`H3|AH zD0tH>b9A}?a|-YOTqzUbKG~Yc+nN*Wgxh&ilOTDBJDfwH5JjynXI=bqnVKJ^$JYkt2X7~68eP_bqO$Uf9V?#y@$SUxvqSl2vT*rnL4J6rH+JTy-oZN$zqFPjxZLR;_TTJEee>C0);#i-WBmNfk39ho!Ll1E`&K@@zO<-;v>;V= zs1{u!@Bf{mSgpKE{_hvXA$mXO{67>$<87yZvGVmZvmMVjePi^6EwxXpt;Et)f#6uK zi(m1S{gES%Z>8Vy$@!M+d(C9w3S>13qzo4EkDYQay)LEZnZZ}aXWn??gqbXCfd~)J zK68KN7&}t+-S7PTYvt~J)8QdlW)lVSM#tQQRip)7CtHM8T+AJv%hML>;?SPGzDjBw zl7oqJJ7UlFO0?R&@J+JP75EaOQG;+eT^T+1&C2A8rl)WC{W)J<-bpiAxZQCD{G$`? z71r=xL>CAr_2Bkf-J&m}0jVGRe#K(Ii15-ixpsJaT!Y?$t)hRMIs(qGz)EHx;um{nXw`g1SDDtsYdyQ-u=jcVKzH@@S;9a!Y4vvXF$GKS zv1epSB^GWU=$@t_&G(7F>B-ib_(z_3K78eYLQYLp3c8x^A%d`OGHsXi5k&FBM?PaP>>G|3b@DuiwL@c(W(KJXcDys zuNeFslctkQZALS6Vr^}rlTJJRqfIhNr`2fHCf0m(#uz_hoZ9sK?%ub)-S?jUVcIji zJ@=m9x#ymH&VA?J$FVcYm2=9mWF=^GF|P^Aj$|yD9b$|v31W=?*w_gEbknE`g_<1^ zjM<1Ep`S6t<4JjJDr3No5bvkweR{5~ULW$GZSTza<(Yzu$G@3#_3X&T)DyeDE_$P9 zQ^&sb-B+LwJBRosrOclC2xAjksjH#yi8dEAww`2@TX|*B>zIet*0!y7c|7iVm#21K zYcX}6a(i4$+ud!g`AyE&Mpr%S*=_IUcY|Jv976iJ?d=|ST}Qi%MYe}6?%y%s(LqTu zBsUp5so;%|`MaS@BSJ~1#Q99?T<3BZ>%6}6-`qZ=VAx=i&Ue<;x!c*M@gE=RcMo|y zI5nPxc^#|Pmb5t6x;*pST3o(K%UtcOus8a-{?~?%Qux_ne+-EwWe`6f7LPdu#q#$p zC#{{bw?*>16oJ7!yC}+sY}FvM{gCG+a*4)l_d{OLj0pq64^)JNCupPzLLV6cz364^ zA7p8#Dbiz#>@q~)*A`P`t10rlDe{6La*^iYrpRtX?sM17KzpuqO(yo%~O^y0J zCERIq@K55x;!qB|=|RNO>Df*XD6y1O;`lII2)}O2iQeXwvMIz9TC&XRsZT$y%C@qrcn)-?a#~j#>A>AbLAoeZ_4g>8tVvm4?UO# z)+-0l57CYaeu=CbsUnV0twQvOK3&L9Csakl3I+pekkGVhUYg)YyRDfJ=iM%P)Cqgg zAo{73XOD33;fpNMd%O~HtPhasnYfg{GQyGemBteM*dbN1C2-V(CO7klM1NJdQ!haO zJUg33p0!q?xg52{Hfaf}=Vkjsi`Zg+ zk=-i+Lsn{rsB1pCocE+O@D;Y;NyseTV(e?|XRLXsJ*j&4 zfLY*-`7Dd)S~~AD3-itLgmgidEG(2R?1E7B{U}QIv=NvtWpE4+pHUsoZ<8PDf&}iC zTDtj=9j&JJP?BTVAZo}s2~nvE5C^7GjoKhSFhkRsuW1K|bhB@0FF!72@R`w}YAdiv zN#L?A5hegjmH@8zAlS;}cjhH1kB~(x&nSuNRNrjf%JFTZ9!5G4yQ!WYkPd`DEdnwC z@s6&z2dZBTGJ;60TAp-vvGCS=LuE^jjHa$U4fGxjByhIjNItD}aKQozX);-mz5nbY>7SF(Gk}R011{9~6=b{USBVYs1g;Stz)j zvw+N$ur@ZL23(^cJ|#ijeo`xdIur5(3iQ-MF%>jHa+JMnZ=2s-5Mfu}Xo$qxAN7LX z9YgIHesZ2oiQ#W9uqhs1wXn&m-XHX-=&GHg$~4`Yv??mz)PH&!perw*tpCqhJ8pe+$_{| z-`aKVZ6ld^dNR|Ye|XHT_j<<_7Ve$5f9K`i-On1y$|%Ld`MIjmar0;dNR2(Vj8`J^ z|G>O2e~8zv);p1JZqwJUNGj&?HY6PV%v9 z?)>(+k<2L5wZ2Sa#Kp41zx!zXnHeXt8D${TUh1M)8-KlamUXHZ(AU%@50Tt8(x@6n^E%hN#Nroh zoEM;>^t?JN?5p1EHwt!#zh?RF#Pk=9WaeSY!ZIi0pvE}ZO``{dn@78+!zFI$sN%S% zfPBD{{IoN=9QDy~9NsEJ07)Mr-*Dwcs&?RaxqIm{p9xPxex&$@A;7n& z6#j>Xon&l5W0Go&ztXrR(s=a)v5pE}-jtadM=g-%52}z|ZI9QZq+#FmXf?&o>PW?$>^1Fl-@yh&&uu)~CH4?{&5l+Xkd_=q!b$ z*^BAHzY(aLrpioPy-pg;L-!oGyhIMw2KC1>m&0tV=2V@D!o+-?8~2UP{Wi_u;I7J3 M_!NucYg%&t3(M>=W&i*H delta 6558 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 diff --git a/Content/Lua/Level/Actor/LevelFoxRole.lua b/Content/Lua/Level/Actor/LevelFoxRole.lua index f3339be..af26855 100644 --- a/Content/Lua/Level/Actor/LevelFoxRole.lua +++ b/Content/Lua/Level/Actor/LevelFoxRole.lua @@ -8,8 +8,6 @@ end function LevelFoxRole:ReceiveBeginPlay() self["SpineAnimationComponent"]:SetAnimation(0, "Idle/Front", true) self.last_animation = "Idle/Front" - self:InitMoveSpeed(300) - self:InitHealth(500, 500) end diff --git a/Content/Lua/Level/Actor/LevelRabbitRole.lua b/Content/Lua/Level/Actor/LevelRabbitRole.lua index 64ac056..1ad5850 100644 --- a/Content/Lua/Level/Actor/LevelRabbitRole.lua +++ b/Content/Lua/Level/Actor/LevelRabbitRole.lua @@ -7,8 +7,6 @@ end function LevelRabbitRole:ReceiveBeginPlay() self["SpineAnimationComponent"]:SetSkin("back/move") self["SpineAnimationComponent"]:SetAnimation(0, "animation", true) - - self:InitMoveSpeed(380) end diff --git a/Source/BusyRabbit/Private/BusyActorManagerSubSystem.cpp b/Source/BusyRabbit/Private/BusyActorManagerSubSystem.cpp deleted file mode 100644 index a69999b..0000000 --- a/Source/BusyRabbit/Private/BusyActorManagerSubSystem.cpp +++ /dev/null @@ -1,52 +0,0 @@ -// Fill out your copyright notice in the Description page of Project Settings. - - -#include "BusyActorManagerSubSystem.h" -#include "BusyGamePlayLibrary.h" -#include "Subsystems/SubsystemBlueprintLibrary.h" - -void UBusyActorManagerSubSystem::Initialize(FSubsystemCollectionBase& Collection){ - Super::Initialize(Collection); - ReceiveSubSystemInitialize(); -} - -void UBusyActorManagerSubSystem::OnWorldBeginPlay(UWorld& InWorld) { - Super::OnWorldBeginPlay(InWorld); - ReceiveWorldBeginPlay(); -} - -void UBusyActorManagerSubSystem::Deinitialize(){ - Super::Deinitialize(); -} - -FString UBusyActorManagerSubSystem::GetLuaFilePath_Implementation() const{ - return TEXT("GamePlay/Level/BusyActorManagerSubSystem"); -} - -bool UBusyActorManagerSubSystem::GetLevelBaseConfig(FBusyLevelBaseConfig& config){ - FBusyLevelBaseConfig* Config; - UDataTable *DataTable = UBusyGameplayLibrary::GetGameDataTable("LevelBaseConfig"); - if (!DataTable) return false; - - Config = DataTable->FindRow( - TEXT("Default"), - TEXT("UBusyActorManagerSubSystem::GetLevelBaseConfig"), - true - ); - - if (!Config) return false; - config = *Config; - return true; -} - -UWorld* UBusyActorManagerSubSystem::K2_GetWorld(){ - return this->GetWorld(); -} - -UBusyActorManagerSubSystem* UBusyActorManagerSubSystem::Get(UObject* WorldContextObject){ - UWorldSubsystem *SubSystem = USubsystemBlueprintLibrary::GetWorldSubsystem( - WorldContextObject, - UBusyActorManagerSubSystem::StaticClass() - ); - return Cast(SubSystem); -} diff --git a/Source/BusyRabbit/Private/BusyGamePlayLibrary.cpp b/Source/BusyRabbit/Private/BusyGameplayLibrary.cpp similarity index 93% rename from Source/BusyRabbit/Private/BusyGamePlayLibrary.cpp rename to Source/BusyRabbit/Private/BusyGameplayLibrary.cpp index f850a36..a7f138d 100644 --- a/Source/BusyRabbit/Private/BusyGamePlayLibrary.cpp +++ b/Source/BusyRabbit/Private/BusyGameplayLibrary.cpp @@ -1,7 +1,7 @@ // Fill out your copyright notice in the Description page of Project Settings. -#include "BusyGamePlayLibrary.h" +#include "BusyGameplayLibrary.h" #include "BusyDataAsset.h" static inline const UBusyDataAsset* GetGameAsset() { @@ -51,10 +51,6 @@ UWorld* UBusyGameplayLibrary::K2_GetWorld(const UObject* UObj){ return UObj->GetWorld(); } -bool UBusyGameplayLibrary::GetLevelBaseConfig(const FName& RowName, FBusyLevelBaseConfig& RowData){ - return GetTableConfig(TEXT("LevelBaseConfig"), RowName, RowData); -} - bool UBusyGameplayLibrary::GetLevelItemConfig(const FName& RowName, FBusyLevelItemConfig& RowData){ return GetTableConfig(TEXT("LevelItems"), RowName, RowData); } diff --git a/Source/BusyRabbit/Private/Level/Actor/BusyPawnBase.cpp b/Source/BusyRabbit/Private/Level/Actor/BusyPawnBase.cpp index a894ad2..c238cd2 100644 --- a/Source/BusyRabbit/Private/Level/Actor/BusyPawnBase.cpp +++ b/Source/BusyRabbit/Private/Level/Actor/BusyPawnBase.cpp @@ -4,6 +4,8 @@ #include "SpineSkeletonAnimationComponent.h" #include "Level/Actor/Components/BusyPawnMovement.h" +DEFINE_LOG_CATEGORY(LogBusyPawn) + ABusyPawnBase::ABusyPawnBase() { @@ -42,7 +44,7 @@ float ABusyPawnBase::GetSpeed_Implementation()const { return Attribute->GetMoveSpeed(); } - return 200; + return 0.f; } void ABusyPawnBase::InitMoveSpeed(const float MoveSpeed)const diff --git a/Source/BusyRabbit/Private/Level/Actor/BusyPlayerRole.cpp b/Source/BusyRabbit/Private/Level/Actor/BusyPlayerRole.cpp index 64b2b27..07bec3d 100644 --- a/Source/BusyRabbit/Private/Level/Actor/BusyPlayerRole.cpp +++ b/Source/BusyRabbit/Private/Level/Actor/BusyPlayerRole.cpp @@ -1,7 +1,11 @@ #include "Level/Actor/BusyPlayerRole.h" #include "Camera/CameraComponent.h" +#include "BusyGameplayLibrary.h" +#include "Animation/AnimAttributes.h" +#include "Tables/BusyPawnConfig.h" #include "GameFramework/SpringArmComponent.h" + ABusyPlayerRole::ABusyPlayerRole() { CameraComponent = CreateDefaultSubobject(TEXT("CameraComponent")); @@ -27,7 +31,34 @@ void ABusyPlayerRole::BeginPlay() InitRoleAttributes(); } -void ABusyPlayerRole::InitRoleAttributes() +bool ABusyPlayerRole::InitRoleAttributes() { + if (!PawnName.IsValid()) return false; + const UDataTable* ConfigTable = UBusyGameplayLibrary::GetGameDataTable(TEXT("LevelRoleBaseConfig")); + if (!ConfigTable) + { + UE_LOG(LogBusyPawn, Log, TEXT("ABusyPlayerRole::InitRoleAttributes Can't find config table: LevelRoleBaseConfig")) + return false; + } + const FBusyRoleBaseConfig* Result = ConfigTable->FindRow( + PawnName, + *FString::Printf(TEXT("ABusyPlayerRole::InitRoleAttributes, PawnName: %ls"), *PawnName.ToString()) + ); + if (Result) + { + UBusyPlayerRoleAttributeSet* RoleAttributes = Cast(Attribute); + RoleAttributes->InitHealth(Result->Health); + RoleAttributes->InitMaxHealth(Result->Health); + RoleAttributes->InitMoveSpeed(Result->MoveSpeed); + + RoleAttributes->InitHunger(Result->Hunger); + RoleAttributes->InitMaxHunger(Result->Hunger); + RoleAttributes->InitHungerConsume(Result->HungerConsume); + + RoleAttributes->InitDamage(Result->Damage); + RoleAttributes->InitDefense(Result->Defense); + return true; + } + return false; } diff --git a/Source/BusyRabbit/Private/Level/BusyLevelItem.cpp b/Source/BusyRabbit/Private/Level/BusyLevelItem.cpp index f5349b3..3605718 100644 --- a/Source/BusyRabbit/Private/Level/BusyLevelItem.cpp +++ b/Source/BusyRabbit/Private/Level/BusyLevelItem.cpp @@ -4,7 +4,7 @@ #include "Level/BusyLevelItem.h" #include "Components/CapsuleComponent.h" #include "Components/WidgetComponent.h" -#include "BusyGamePlayLibrary.h" +#include "BusyGameplayLibrary.h" ABusyLevelItem::ABusyLevelItem(): CurrentItemID("100001") { LuaFilePath = TEXT("GamePlay.LevelItem.LevelItem"); diff --git a/Source/BusyRabbit/Private/Level/LevelItemReward.cpp b/Source/BusyRabbit/Private/Level/LevelItemReward.cpp index 5e500b5..f183df2 100644 --- a/Source/BusyRabbit/Private/Level/LevelItemReward.cpp +++ b/Source/BusyRabbit/Private/Level/LevelItemReward.cpp @@ -6,7 +6,7 @@ #include "Components/SceneComponent.h" #include "PaperFlipbook.h" #include "PaperFlipbookComponent.h" -#include "BusyGamePlayLibrary.h" +#include "BusyGameplayLibrary.h" ALevelItemReward::ALevelItemReward(){ diff --git a/Source/BusyRabbit/Private/Role/BusyRole.cpp b/Source/BusyRabbit/Private/Role/BusyRole.cpp index 8745885..15a1797 100644 --- a/Source/BusyRabbit/Private/Role/BusyRole.cpp +++ b/Source/BusyRabbit/Private/Role/BusyRole.cpp @@ -9,7 +9,7 @@ #include "PaperFlipbookComponent.h" #include "Role/BusyRoleMovement.h" #include "Role/RoleAnimation.h" -#include "BusyGamePlayLibrary.h" +#include "BusyGameplayLibrary.h" #include "Components/InventoryComponent.h" #include "Core/PW_AbilitySystemComponent.h" #include "EnhancedInputComponent.h" diff --git a/Source/BusyRabbit/Private/Role/RoleAnimation.cpp b/Source/BusyRabbit/Private/Role/RoleAnimation.cpp index dbc1453..451440f 100644 --- a/Source/BusyRabbit/Private/Role/RoleAnimation.cpp +++ b/Source/BusyRabbit/Private/Role/RoleAnimation.cpp @@ -3,7 +3,7 @@ #include "Role/RoleAnimation.h" #include "Role/BusyRole.h" -#include "BusyGamePlayLibrary.h" +#include "BusyGameplayLibrary.h" DEFINE_LOG_CATEGORY(LogRoleAnimation); diff --git a/Source/BusyRabbit/Public/BusyActorManagerSubSystem.h b/Source/BusyRabbit/Public/BusyActorManagerSubSystem.h deleted file mode 100644 index ba3362a..0000000 --- a/Source/BusyRabbit/Public/BusyActorManagerSubSystem.h +++ /dev/null @@ -1,67 +0,0 @@ -// Fill out your copyright notice in the Description page of Project Settings. - -#pragma once - -#include "CoreMinimal.h" -#include "Engine/Datatable.h" -#include "LuaOverriderInterface.h" -#include "Subsystems/WorldSubsystem.h" -#include "Level/BusyLevelItem.h" -#include "BusyActorManagerSubSystem.generated.h" - - -USTRUCT(BlueprintType) -struct FBusyLevelBaseConfig : public FTableRowBase { - GENERATED_BODY() - /* 第一个篝火的位置 */ - UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName = "初始篝火位置") - FVector2D FirstBonfirePosition; - - UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName = "每次Tick的时间(MS)") - int TickInterval; - - UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName = "一个物品生成周期包含的Tick次数") - int Period; - - UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName ="关卡中存在的物品配置") - TMap LevelItemIds; -}; - - -/** - * - */ -UCLASS() -class BUSYRABBIT_API UBusyActorManagerSubSystem : public UWorldSubsystem, public ILuaOverriderInterface -{ - GENERATED_BODY() - -public: - // 初始化(关卡加载时调用) - virtual void Initialize(FSubsystemCollectionBase& Collection) override; - - virtual void OnWorldBeginPlay(UWorld& InWorld)override; - - // 销毁(关卡卸载时调用) - virtual void Deinitialize() override; - - virtual FString GetLuaFilePath_Implementation() const override; - - -public: // 需要蓝图实现接口 - UFUNCTION(BlueprintImplementableEvent) - void ReceiveSubSystemInitialize(); - - UFUNCTION(BlueprintImplementableEvent) - void ReceiveWorldBeginPlay(); - -public: - UFUNCTION(BlueprintPure) - bool GetLevelBaseConfig(FBusyLevelBaseConfig& config); - - UFUNCTION(BlueprintCallable) - UWorld* K2_GetWorld(); - - UFUNCTION(BlueprintCallable) - static UBusyActorManagerSubSystem* Get(UObject* WorldContextObject); -}; diff --git a/Source/BusyRabbit/Public/BusyGamePlayLibrary.h b/Source/BusyRabbit/Public/BusyGameplayLibrary.h similarity index 86% rename from Source/BusyRabbit/Public/BusyGamePlayLibrary.h rename to Source/BusyRabbit/Public/BusyGameplayLibrary.h index aab2cf9..f8ec65a 100644 --- a/Source/BusyRabbit/Public/BusyGamePlayLibrary.h +++ b/Source/BusyRabbit/Public/BusyGameplayLibrary.h @@ -3,16 +3,13 @@ #pragma once #include "CoreMinimal.h" -#include "slua.h" #include "Role/BusyRole.h" #include "Engine/World.h" #include "Level/BusyLevelItem.h" #include "Engine/DataTable.h" -#include "BusyActorManagerSubSystem.h" #include "Kismet/BlueprintFunctionLibrary.h" #include "GameAsset/BusyItem.h" -#include "LuaBlueprintLibrary.h" -#include "BusyGamePlayLibrary.generated.h" +#include "BusyGameplayLibrary.generated.h" /** * @@ -34,10 +31,7 @@ public: UFUNCTION(BlueprintPure) static UWorld* K2_GetWorld(const UObject* UObj); - - UFUNCTION(BlueprintPure) - static bool GetLevelBaseConfig(const FName& RowName, FBusyLevelBaseConfig& RowData); - + UFUNCTION(BlueprintPure) static bool GetLevelItemConfig(const FName& RowName, FBusyLevelItemConfig& RowData); diff --git a/Source/BusyRabbit/Public/Level/Actor/BusyPawnBase.h b/Source/BusyRabbit/Public/Level/Actor/BusyPawnBase.h index e6482e8..162b9fb 100644 --- a/Source/BusyRabbit/Public/Level/Actor/BusyPawnBase.h +++ b/Source/BusyRabbit/Public/Level/Actor/BusyPawnBase.h @@ -18,6 +18,8 @@ GAMEPLAYATTRIBUTE_VALUE_GETTER(PropertyName) \ GAMEPLAYATTRIBUTE_VALUE_SETTER(PropertyName) \ GAMEPLAYATTRIBUTE_VALUE_INITTER(PropertyName) +DECLARE_LOG_CATEGORY_EXTERN(LogBusyPawn, Log, All); + UCLASS(Blueprintable, BlueprintType) class UBusyPawnAttributeSet : public UAttributeSet @@ -32,12 +34,18 @@ public: UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Attributes") FGameplayAttributeData MaxHealth; MY_ATTRIBUTE_ACCESSORS(UBusyPawnAttributeSet, MaxHealth); - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Attributes") FGameplayAttributeData MoveSpeed; MY_ATTRIBUTE_ACCESSORS(UBusyPawnAttributeSet, MoveSpeed); - + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Attributes") + FGameplayAttributeData Damage; + MY_ATTRIBUTE_ACCESSORS(UBusyPawnAttributeSet, Damage); + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Attributes") + FGameplayAttributeData Defense; + MY_ATTRIBUTE_ACCESSORS(UBusyPawnAttributeSet, Defense); }; #undef MY_ATTRIBUTE_ACCESSORS @@ -54,6 +62,9 @@ public: virtual float GetSpeed_Implementation()const override; +public: + virtual bool InitRoleAttributes() { return false; } + protected: UFUNCTION(BlueprintCallable) void InitMoveSpeed(const float MoveSpeed)const; @@ -94,6 +105,9 @@ public: TObjectPtr MovementComponent; /*-------------------------------------------------------------------*/ + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, DisplayName="角色名称") + FName PawnName; + protected: UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) diff --git a/Source/BusyRabbit/Public/Level/Actor/BusyPlayerRole.h b/Source/BusyRabbit/Public/Level/Actor/BusyPlayerRole.h index 8506f66..5152007 100644 --- a/Source/BusyRabbit/Public/Level/Actor/BusyPlayerRole.h +++ b/Source/BusyRabbit/Public/Level/Actor/BusyPlayerRole.h @@ -18,12 +18,18 @@ class UBusyPlayerRoleAttributeSet: public UBusyPawnAttributeSet public: UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="饱食度") FGameplayAttributeData Hunger; + MY_ATTRIBUTE_ACCESSORS(UBusyPlayerRoleAttributeSet, Hunger); + UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="最大饱食度") FGameplayAttributeData MaxHunger; + MY_ATTRIBUTE_ACCESSORS(UBusyPlayerRoleAttributeSet, MaxHunger); + UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="饱食度消耗速度") FGameplayAttributeData HungerConsume; + MY_ATTRIBUTE_ACCESSORS(UBusyPlayerRoleAttributeSet, HungerConsume); + }; #undef MY_ATTRIBUTE_ACCESSORS @@ -39,9 +45,9 @@ public: virtual void BeginPlay() override; -protected: - void InitRoleAttributes(); - + + virtual bool InitRoleAttributes()override; + protected: /*--------------------相机相关--------------------------*/