From 39b100acff861c617e9819f36e71cb51e75798a2 Mon Sep 17 00:00:00 2001 From: wyatt Date: Thu, 30 Oct 2025 23:11:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=A7=92=E8=89=B2=E7=94=9F?= =?UTF-8?q?=E6=88=90=E4=BD=8D=E7=BD=AE=20#2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 同时也将地图扩大为128 * 128 --- Config/DefaultEngine.ini | 2 +- Config/DefaultGameplayTags.ini | 4 ++++ .../Level/Actor/Static/BP_Campsite.uasset | Bin 25592 -> 25878 bytes Content/Blueprint/Level/BP_LevelMap.uasset | Bin 25418 -> 25799 bytes Content/Data/BusyGameAsset.uasset | Bin 4473 -> 3808 bytes Content/Data/Level/LevelBaseConfig.uasset | Bin 2736 -> 0 bytes Content/Data/Level/LevelResourceConfig.uasset | Bin 0 -> 2282 bytes .../GameSettings/BusyLevelPlayerState.cs | 16 ++++++++++++++-- .../Level/Actor/BusyStaticResource.cpp | 17 +++++++++++++++++ .../StaticResourceLayerComponent.cpp | 2 +- .../Map/Components/TerrainLayerComponent.cpp | 14 ++++++++++++++ .../Private/Level/Map/GameMapActor.cpp | 4 ++-- .../BusyRabbit/Public/BusyGameplayLibrary.h | 2 +- .../BusyRabbit/Public/Data/BusyPawnConfig.h | 2 +- .../Public/Data/BusyResourceConfig.h | 15 +++++++++++++++ .../Public/Level/Actor/BusyStaticResource.h | 4 ++++ .../Map/Components/TerrainLayerComponent.h | 11 +++-------- .../Public/Level/Map/GameMapActor.h | 14 +++++++------- 18 files changed, 84 insertions(+), 23 deletions(-) delete mode 100644 Content/Data/Level/LevelBaseConfig.uasset create mode 100644 Content/Data/Level/LevelResourceConfig.uasset create mode 100644 Source/BusyRabbit/Public/Data/BusyResourceConfig.h diff --git a/Config/DefaultEngine.ini b/Config/DefaultEngine.ini index 05b4eca..534d2f1 100644 --- a/Config/DefaultEngine.ini +++ b/Config/DefaultEngine.ini @@ -15,7 +15,7 @@ ManualIPAddress= [/Script/EngineSettings.GameMapsSettings] GlobalDefaultGameMode=/Game/Blueprint/Bp_BusyGameMode.Bp_BusyGameMode_C GameInstanceClass=/Script/BusyRabbit.BusyGameInstance -EditorStartupMap=/Game/Level/HomeLand.HomeLand +EditorStartupMap=/Game/Level/FalconPlain.FalconPlain GameDefaultMap=/Game/Level/FalconPlain.FalconPlain [/Script/Engine.RendererSettings] diff --git a/Config/DefaultGameplayTags.ini b/Config/DefaultGameplayTags.ini index a77ea33..23bb19c 100644 --- a/Config/DefaultGameplayTags.ini +++ b/Config/DefaultGameplayTags.ini @@ -1,3 +1,4 @@ +;METADATA=(Diff=true, UseCommands=true) [/Script/GameplayTags.GameplayTagsSettings] ImportTagsFromConfig=True WarnOnInvalidTags=True @@ -57,6 +58,9 @@ NetIndexFirstBitSegment=16 +GameplayTagList=(Tag="Ingredient.Vegetable.Carrot",DevComment="胡萝卜") +GameplayTagList=(Tag="Recover.Role.Health",DevComment="回复生命值") +GameplayTagList=(Tag="Recover.Role.Hunger",DevComment="恢复饥饿值") ++GameplayTagList=(Tag="Resource",DevComment="资源") ++GameplayTagList=(Tag="Resource.Building",DevComment="建筑物") ++GameplayTagList=(Tag="Resource.Building.Campsite",DevComment="营地") +GameplayTagList=(Tag="Status.Role.Invincible",DevComment="不掉血标签") +GameplayTagList=(Tag="Terrain.Desert",DevComment="荒漠地形") +GameplayTagList=(Tag="Terrain.Forest",DevComment="森林") diff --git a/Content/Blueprint/Level/Actor/Static/BP_Campsite.uasset b/Content/Blueprint/Level/Actor/Static/BP_Campsite.uasset index 25043b8ba4193cb418a6d0467dbe32d4be16387a..a855f5497a21bc9d86b87585f4e7d3ec15d07cc0 100644 GIT binary patch delta 5987 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 delta 5716 zcmc&%dvKIj6~Eu+xtNem*hgNQ*CtCyV9A4&G_;V%vS~sv8%P2qh2%@JkTeScvI&K@ zB%xKKcGP%$%_!K8{^4UB%4b_|V)p+m-6Mo6F6qh`#1yY&FbVDl@PV&!~eR z2g85%3JfbNYtzygBW%>lSRR(Au)QglF$L>kEKlL{20pLXeEiGDnyd|<$#L~H|Fq;j zxS&|4s3Q%TfJ4W#lHcT+NK;evp+H{~``qN`=a-=t z)YN5RS89@yPTe;LLaJ8{sqC%k?*Wu8&Cj%;)~^nZs(S(v@c7EF2cTu?Niz*V;sAeI zR=!rpw^V-!>wGeNE^yBBoO48w_KWfgMr&Nuy)cux%yvMut|BrS6FCwSc`PbIcBIY4 zb}l3Gc+@_GJP{Rn2a(a3NH8X{Hzu+#CNdEdnU0Cf#6-45MgD~Ic`_#QkwwT+(V~KK zoJ5PL9@(P-QIO%7h|CQ>nsSt~L6PHuPCXIJQ)+DE%e-h_mse{A@8tO?`6>jl%b>nd!r0^9rZ%Z3;jyEMw=nZYd%m1 z^5E&rWUx4MJ?{whd)W1TUH37K&1hN6>^j*34S8DEX=kzfA38d1ctoT9bOk<7<3m#1 zie0j~wX4or`$0|1DzSV+)W3_AhnGXTGskmLsNU6$Od}o=dfNA167`R5;@y6c=W^dp zms={)Ul8>AHcoHIueQ_Tr%?&+j??gY4Sqqu6cmDc;x)M0&wCdZXuYWu!Mg?gY$u23 z5T^Y@4n9W}l%yRTRtjD2f9hsN&=kE;$l#?!US(hE!7t>7{=8iHpfK6}cU>2vg)|lq zbD5~`Rk?)&XhBaW_heeHz@sZ&(7&j{4+~ojRGITc^$6-WR46NIP5qnB2@A{=IZVIO zOuk&?a?k5P@{o2383XCz=>hKHjMD{YT^74s4rJ=H!qguJ;E1c${TJP6Gy$3DMBOB) zhX>)Z>zA(4fe` zQr*y#j@bc1P&gY)vWG;OVOqv=Z2}@y_>kPj)|B|B^yXwr%1mmY=*b&26@O#g8KXr( zb0zU=1zW|Kn^*4_3jGMXgpM3_gMYgtua2rT(d7ctQ+B`^e{L25ol(#Lq7HbbBSA)2 za2V?nHQIBe2sfrTNJnECEU?|t7zMZgs|k;t!Lq(?K6vJyjI9xF7(OFSovv^sa;<7D zeA7LbL?097J~3@uxts~-$aC6YffB_FZ*~+HV$jUm+0zol0Z71Yj_vt;)SnlDVUPGmSF-E1-VZdz@-Sv?ZN=k5hb@B z14t97!-r(2e$f<=hVr{DFc}DX8t8uP*&0$qBZD4!A7)#Kgkl($ywyjOb#q=6=D+Y; zGzl=CiMaA549{&X@FWSy5a=2K=(9p5MFKcFEmQxAeQi)~UW`vgWKW=cxL1!7d1~Eq z>D5k4(IS`RNu!^^gSZ{!PCX!O8^TII7}p6qJ401=zUg29pTk+FR&JN)wuRZ)szwbiMthkW}AMGYUaZc_L@7LVL) zFlF5DDAx6E4D1=%=MSofndktIXH-qmzDW+y-GU_I038ugJ)>wv1;}<(0QJ#r@PkP6 z_PnhzLwZX-bdC&;MjUOiugj)E2%u{MNyO1?IAQ-ZhQi~>m!W`19Y+($l@_pMuAE|4 z-XqHH?iE0!FenlQWH`nQw*w;PL}T+ag?`!5O@zb;7Y3|mht^HY!z->zXs c@b?HVGC{=6k`2!eS@UAXk-n!FE)F&Q8{jlh-2eap diff --git a/Content/Blueprint/Level/BP_LevelMap.uasset b/Content/Blueprint/Level/BP_LevelMap.uasset index 02d554792626f75273b3958fd41b37c6d66c9149..6156fca1ce793860b76002fe93dde6636c1f1bc9 100644 GIT binary patch delta 6209 zcmd5=dr(x@89#UBDUpY;ySx?%5JZq=1(x_~!fOFpS>BHT$?gJI*orJJtHwvNq9(1$ zACw%^P9Kx8?X;b-Gfn7DYn?jP)|qy!X>FRxG?PEt+8Rw-TWynAGp3>6ckVfGm%FP@ z{i8k1-tXM+_xm2_JCA!Wzx=uMiwlzZr$7Zfy!7QRD^SRf5}xKpv;L(z<{Q`Xsn}-9$(p%5=Cu8!B9qQLB}E2~9t9{=3PzQ{}a1u3J8Msp>*2;^+&bM3WdIkq`WHS+_|tBm!R7?%XEtktbT+Q_gyFyZ+5<^wNsg=xo&PTqD2@@{~^= z0aIq*E06fSzKRAS-#TKaQPKYn>SNYOkFEqF*f-0bv2j27b@@jYtSM;PecmbA=if)H z$7g2Z6ciiY1vorot*ajc8~Zy-btkb42Fwf zV$!xf@}$4X=bjp0j+TKUydSf@!r>j2osGLEnRnZy-?uNpX%QY$sANc8%qJrxim+vI zmrO)TcO$PC{_lreVHNCt-a)HQc|`W?k?Z6!&t&_Ad*5V`Ib0^t$`E@fTSKzNjPCXAjpY*&XJ0DDWW1rbRxh0AUcZKeaX!5p8xxL`1&Kn{*i0kfil2M$eFd zdIbD=P1H5;@@Pl6{5#a(X^{b!D3II2w4lVg!kWZGkQ{H zL7AG4LB(QO3kQ4)r$-I*4lW?-%d`}IpbCOdFg!^_PS-fuG0cM8$Sf%Or;3g_;qfBq zA}8wzqdT)IO=7uW4tDO%Il?qdoS*W=oBYXee+S*!Mi@bB=cvJVVWydc2 z-mdZH9sL824OKx?&LzoISzX1ZtI<=};P$)8yRhM-V2Jov7mUyATa~ba-x5g|+*=kK z9in)-;*u^zalm>^N6l56q#W8&m`cCB(HzX*a5Le))1s!FE40bBWd&pweBLHWfjk)W z(|2wxVBPtuA&b>*;uS%`Rvhj+e7(h1tq68ypqN6`Xe@C#$c(Ez?6C{+0wGLX+AIt7 zXT}?7(TZStwcAB967W?Fo0?q1G|Gj&%3y*vt{hinK6#WY)Ry8s5DQX3Uu`nxlwcR_ zVJWbtraVF2PZ;T)rug_Sfzmmbv5QrOYcN}uG2VA`Wf_+!IQh`yBEyK0RwFeI6AB3z z(1g3Q?(OrxJvMg!zQR>t642BoW*%|Wc(P(kRK(JCCGSExlrE-K#p+>cj;0e^lS{>T z7!$WRHcb>U1aPsq=W7HF1J2nX?H$AXj6;Q-I=Hx+^dm9fVV&8jCRGG1({e)yB zc1v1yJLG4Bct*T;A-m436Sz|D@N ze6G@P(>b6yVe!pBBNB+ucs&Q*RPVOx$M~JPh)XBh0e5o1${96WqF}jYaYaaO*<7i~ z3tu}!nD{A&O~d>LjG#lo;MuRTVQU@_dzDV%iSL7r+zdEGJt7Nj8#V^ik!CrQy@w3( rn;M}6$%g3U3K8%Mq!y7ZzC#50>N2vJOU1SLS`qAbfo-F)BlZ6QA%&NZ delta 5792 zcmd5=e^AuN72of9ASmeZ<9=Y^?m&JjoQGh8CI>e(mntJubefy!D1+n>@JarMuJ9(_OO|n`2_^bD)e(cor4J0e!)d(KWuI z_owgw-ge>-7e7gS0eEAVp6&lh)rPCr8|zNwpE-MebYg6SQZn&wUTh+u$7*@8DL7jg+s&sen24IdcK=9l zn2k*jt>PEWBfKN#->C@ztlkqC9CokS?SHC|UH!s!GQ1@=PvH}@Q^RLw51GQ1bLy0& zc#vxe^b8N}URuL8dxP=eAIv?iaK&s3Hze*<@rJ;#zs5i8XCLnW8Rx&4=W<|t8~r^4 z{vCk`_+sG?1N`#5U&TWnMYHo8^V9hG`Ehn8S#tppUJ0joZ_;sYamHDnq8Xn+q@&dL z@uakrDC8MKY(mZ$O+Q)PIoNb&%Wl2y%Y|IV@J#NFTqmAkivU z@b7?cQeibmp>Y~r1!Rdth$4}Z$~}!58Xh1gcR0#@a|XHFz$Z46=<|ESq(V?lPx+m2 zezQH-i1kmHcTY2Sh?HQFk$d{^I{r$wlkaz~wCyH%InXic-(JUewd8V#GuU6e&5?F@8S?ymy4p6W>E5X?xy zdd!1a-kg7EY|H}*tRga)k7>rc!p0RE-O|iJuduqv8PcnBd@8e=4=;3B<^Dtu>Pf?2 z098GBZDA$9*AthB=rux%cw<&IZ_W;KuhR^EnjKSM5u<4%iFTq~$#nC3*;%Gf)44mx z8~ZP~x)0UzmYiUENfor=(e{ScC4Kd6dpC{lDITdR>8&Z=*Eq`G&q+(~+W`Wr>jFEM z_pNE}_73c-A8qPeJFunw$+CUnl-#$KjACz@Sn%3@pSTrGaE#0lDgMg|Pv^BJ^7lN> zSNoR5Amzusap42y7fd(^H&+}`JDVzR&i$Is@bzwG7B~|=)1WA!Oo;v5?GL6gx%bOvw_`1tFM*`c^`hA;GNQjcND zrd5Rt#^g<-Q-`lfSq^j{J{@JX(t%z0%-sMVY&sM{trx6G$ju-LAxu{hXeNrW)bM+o z+#cMQ*mSvEs`8mWm)n~xQE!T`V48FziJTBzyhrsWRva{SY3ZSx#`%fXgytk-AQ9?w zi9uJQUhQlW(Air>KnqXm?6W>WBW>82p+a~J!jq6IE%{0<_qV6Ti#h|+K0f74jltOK z`77-ne$yGl-)=ABzXr*zLQ-CBK6uwSK#xYsCT?W3sWtd@@+|M_hvvBwtwPfk_jiB^ zi;yhPs8xXFxBu@`pUyY7Ss-oxwiSk{uhS&8n6GTlerW19E308~Qu*?Z{H$sb>X)Se z7n4{j`7f{8`upq~o{dTp)UDZZI2r$6Yj&bjU9%MayH4XHvtF}qMf~X2M>sOPWm~?I zA=Zv>D~w-9DOpU1Yie7+)k8epnd}G)a}7W4D6ABJbwf;d3CNX2P_z|90zh!5=)0y~K!$-ysS5Z@e4)lDpppX#<-dyo%JyTR3a{BE};RH}mdJ9q&BQC>er zOr6J=q$o+Rk>pK??MVWc!9zdN&}-&~Pm~^HZo@BVkE=v%X>By}j~JNuStNr*>*W#2 uM}aLgsLT8A(^=Zi@FlZz?>XN& zb06oPbNBSlMX&$W-{1etNXEvcFm{vPz-wFI997fTS<-hlWpDnIt%tWQIhe6!0%Idc zcWM2Jb3K6rz2m#{j`&ZN`4*7uL3(n^l}4VkTrriLK(o1lyAVgDG$ z=Fr<;P*kv_)Sp|FUs_g_zj$%!vZZ->OG}G#%L;OXd4+zP47>F4j6Fo}E;0rVQeVE| zQ1)LTIi3!B-tF8`tbH-L{Oycm&!>hvLhyqJgBi`nP`g(>nlgoYnVHq4g_#i^IY+rVT2WPeWlXW zq{i#nku}+`LV*QbqtwQ@R4hB*HJ6+)>W6i$iR)$?D?G4$`)HC?X>rbaM|MrTmpV_> zZs1YV=J}@irKas&R3hdZCHF-pNG*_ zhn(a4ao40Y*KNKq>w0S{ncWr#A(J;Q=SGyZ-}2WkOxCZ^8hK2K*NK3U9oryqWb@gq zVGM$r)=;UKTvwIYYLgm4E&i-p&rW@(&YC}rO;{(E)&Tz&`}oK+^=Zj$Xbmx*3f{tF z_F!7K%!p-pQX|~Znsr*&_ft1_&i14m?33Qe$LYyD@!cHpE8SVc?e318bRlao9-#2G z$mQnYle3aNM~GqM;MX5l8$~3r!ksU4;#@g)ZGdLEn(%m4&orA;9m;ts5MCEnqYVK? zXI(2dd_7269jZ{;xX!}Q?R#u0ELTT$waFCg8c}L%Rg+yV*>mMShbpM)ygCuWtS^-P zC?Z;#mB#B;3iMqiFNP4TQe0hG&WfJCHXFf;l!K#_NI4&^@GX$ifkc$G@z_`l72HA5 zmNFxM)kI5a?|Mdi&1c9Dut<)F`7`G)xc_#I+%MMAai$j&NU}57zIltLB7cd)&&<}1 zFX6xp7t4qGcC?Qpy`2%*^y8N&VafctB7SWHf)Fv^(9BS@lfxu+{)hJaCTjdz)NIO%{J?-KE53zj?YcjC>v z1Kw}MLplQ7zI%~)xFi5>ydL7AKmbmj++XB%iLqA0i-+?Ac<~V3fEN$x2k_z{lK@^k z92UTfhhzeH@g^l`o;=(%055;Y5`Y&ENgnXxAwvOPJfvyBi-!~pIC&zAkPLSR;8%*P zMTw>>?*j2Mhv1R8-x7=046B2f$)!s(fNS1xkk?M=Z};W2$+CPoWwH$)h?V3rCnWm6T$Dh^bq6|Zh+U-()<<7M{MsVBJl`Y@)-Jiq{Yg@| zfYhpTy%y1SA#SpNlN1MN&>iAGQXn(g_lH{~a4Yful78qy{10h{E9W;zhh>!Wu?CAj zawHYFlQj)WG7b-hEy95&FXYIa_Oyk>UUp0`!dn%+PRQ>PzjwBe@*Ijy$NwUEjXY0- y$0sWlHJ-RTo+F9#Sf8fB3w~0RI2)^c`gY literal 4473 zcma)AYitx%6uzZAtO;GUxf}lKvidBSqzB_kjXSdrOzGil2&iU@S zuXD~l(~h09UheMc>3KAhu_65!>!Lf5LD$7~@0>aB-rF_wWMP}@aJgd!$u8W<*m$}- zE0hNAT&QS@)7_|U#G6Z1xkf6+O6ghy3xutM7@Ig)EXJ8QZjB6}ifwSGm=Cb39p7*zG+QLt-ezSeY zg2<;MEB5Ce+&a#8z>B_N2LlSIeXfRyI+E(Ph00kCr zg;EpZhGPDq&Z)ylLGQj;B+6sjMpm+S`}P4OtBQmQl{&s85>P_HO^OzbgsW&@)Tk2RY?QWfH;gaWVrIhy9kCo5HS>F|Vzn%z zV{~m=*E*MVt$Cbj%k({rWg%Asto4?wW@e&(QKW%~lyI$ZQsc#J;BMP|Vs;-5JdsF! zrK0gzPzf#9=)n^SKNhTGhrbSHP4AlD9kiUK**Hvf@NrX?D*5V4sS za)tKFyIF~3FjOagUEyGZ@IF?u^Qrc@hltMOG}-U4hpWzyF-`fs&XsQ8T3;|w?^a^0 zbMg8wdMW+hCCWw~W4)A*s3hy8Dwdv(WLDXhQSATImV(gGG)RhBTgLXKy$-SQsL1 zFTd_Lv1l2xCKkkW_T1LhA0fjf#IW$Z>6506etV@QyK8?3G4T3^o7^!cmfClU)l`UWo3L4uZmJc-3~GVc=c z5Pv{A-bLa~7OX_x1S!Lj4*W?4bq(?0AMx zT6riofD--2ekQ-4BcIdpej;9R3f_Mtmtt|7DqnCojK>!S0fm2Gz=sGffJ`OW(xv+E z7-{Q962~b?P`l-Grr}`pZnZDf<}F=+M(mp8qzBl=v~cLhOA$j7FGGfs=%k##wN0Ec zg{&AQ6|Ct6nj_ILnj-wGsBCQFdP#A=rJ<#Ka|ms&oylDB{fOh#NEhZl$fXt^h^Sx; z^fw;pJ`5uQu+gc?lxt)eI^A)27HQq5dKb7AdjF_*0sIR2CUmB+)b>>a*)4 z#h&-7^Zp?PcG9fz{v|=WG7Mk(sq3J>Nz+%^b(M6~i@@zHp2r{~;xIn3?=(wxi!9+d zFy|+N!dzd>Lw*e2BqsgmK;U-zGzt%~tD+>7Ul2dYE-RH_SpRJJo+Q>>kdSE5A@&~M s+yLCy_Foqr^iPz1*I(b}Sn%;z7_5iY>g0C(OHF(RqWKY>#&k#U$=o zBwiWMHODnUugB~6c&e)I5BeH?l~pyKV0C?EAXx2gaMuL9f(s~xHaRpZg^t$)yS;)81Ca}a{?MhgIVX+sET^L_Hdir*!E@be|CZ6P)V#u9(d*sT}n~2k( zrjy3@_6XPFY8yMH<@oYQ8sP0pI$^N>8MU^A#*J}JH~iRRjYm{HZp76ji$3@5$VyU% zl14;RQ(QB8+0n0S!UZG~A;E2^O=oKlepvwGRwZQ^egNVi0!soB#g=zEIHZ{qq zP(LkLMFTT6HmCml=;V45N0iuZrGsx#V@e{vM?plerKgk_XGKQu06bbGk+HVl?>m9A zvX;8)Z2mr^v{~)mX=rIm{!2r7g{T5s5>bp@VydsKd_6)jiFPP%_VP5=&=QaBrX+B! zOG&V05AXNFN{gBjNf28GOYG3_`G=O1<}uo7RjUfHs5`OzhK|*6^yDe{m(>(ZcEl+| z2kQ=ma6TFmimo%GyXO!Vgo0^NS`(bDd+Tx`swuNR2A{4vgFv=&LlNb5vG1M3*mf&j zOm7+}!9;6p^M*FP#<5_tsI9a;TJpkxb==uHQUZU|k-#Pam>`kK`-^yJM8HD4+e}(k z-UdtOd}OodQlT#q}>kN4K$!vr{sLpUF&*zi{d zn4@eXp{z(83jnEe5}hI8djvQ$gz-1H0U%6}M|5JqX-I?vZ!!s!^AWK^N&IC#BI#`6 zuk#TRw6u8XMu~EQJ(G+Gz#2Y7z(%?j{8u+d|2<#)^Jt&z!B4(Ij%7Q70if##-;UhR LJ}PsYLk9kT5>U)H diff --git a/Content/Data/Level/LevelResourceConfig.uasset b/Content/Data/Level/LevelResourceConfig.uasset new file mode 100644 index 0000000000000000000000000000000000000000..e72cf88c748e1a0482b97ee1882690562bf5d54d GIT binary patch literal 2282 zcma)8U2GIp6h2UXDnDA#s-Q%Ph}OdH)|Ju?rs?jsB?W?IyM3}oXSdg7=yYe9nJrXN ziN7^{f+hY$FcHFwAqdu>kwnu(e2^zK@u67L2S|iqiKG#$;CjBhbGJKnE1YC@?mg$b z=bU@~W`|#U?89sMeEzu#q6M>wCixAzd^R+hf9c{Y$KJm2UibOW6T7ckdyM%+4588N zg_=iNkBs&GP<80i&ubo9!o1(MpE!Rpa$sWNNZsM^=~myP%zKz0|3_?tCH^KTJ- z!YKU4gl%T6q==g7=k*lBh*t3P&Mdj4#yLbQdAUCDL^%9-FxXNT2{hLS!gZlgT{PGl z356o9!9ZxeL<0=32Ims7gJkm_)H84D4UF2`%*T`C=cBG?heDHQHhf+ZIk+Z^pD7q=bGwwk^Iu@wf5`G6owL!Me2S&C=@m zd&X{KQB>>A*t#QVXT0M$2c4RQouskL$5+9AiCxaFqv>g3Q7-pmZn0NrQ}a*D_Jaw# z?UtDlmeWtKUai~&om;64>`ab5V^7BQqy3wttQ@-MzzD1(yqli|ha$ybdLCGb7tTCIX6R-{Esl-g2XijKn^L zc9rCobc*9kZ#KQr#??hpL$hsicJ1DWDgY194*NWBePq_3H!7;~pV`5OhmTivys03NO0OP2f%)TIlldDu=t* zm6yXIv(xEjxVzm0H^X5lfXd)Y_n_c)+hke8DBereb?=ew_K0`4C8e*xQ`yTbqg literal 0 HcmV?d00001 diff --git a/Script/ManagedBusyRabbit/Level/GameSettings/BusyLevelPlayerState.cs b/Script/ManagedBusyRabbit/Level/GameSettings/BusyLevelPlayerState.cs index 04bcc44..783404c 100644 --- a/Script/ManagedBusyRabbit/Level/GameSettings/BusyLevelPlayerState.cs +++ b/Script/ManagedBusyRabbit/Level/GameSettings/BusyLevelPlayerState.cs @@ -1,5 +1,7 @@ +using UnrealSharp; using UnrealSharp.Attributes; using UnrealSharp.BusyRabbit; +using UnrealSharp.CoreUObject; using UnrealSharp.Engine; namespace Level.GameSettings; @@ -11,7 +13,17 @@ public class ABusyLevelPlayerState : ALevelPlayerState { base.BeginPlay(); APlayerController pc = UGameplayStatics.GetPlayerController(0); - var role = CreateRoleRoster(pc) as APawn; - pc.Possess(role); + UGameplayStatics.GetAllActorsWithTag("Resource.Building.Campsite", out IList FoundActors); + FVector SpawnLocation = new FVector(0, 0, 10); + if (FoundActors.Count > 0) + { + SpawnLocation = FoundActors[0].ActorLocation; + } + + if(CreateRoleRoster(pc) is APawn Role) + { + pc.Possess(Role); + Role.SetActorLocation(SpawnLocation); + } } } diff --git a/Source/BusyRabbit/Private/Level/Actor/BusyStaticResource.cpp b/Source/BusyRabbit/Private/Level/Actor/BusyStaticResource.cpp index e7e3182..e32e53b 100644 --- a/Source/BusyRabbit/Private/Level/Actor/BusyStaticResource.cpp +++ b/Source/BusyRabbit/Private/Level/Actor/BusyStaticResource.cpp @@ -1,6 +1,8 @@ #include "Level/Actor/BusyStaticResource.h" #include "SpineSkeletonRendererComponent.h" #include "SpineSkeletonAnimationComponent.h" +#include "BusyGameplayLibrary.h" +#include "Data/BusyResourceConfig.h" ABusyStaticResource::ABusyStaticResource() { @@ -21,4 +23,19 @@ void ABusyStaticResource::BeginPlay() Super::BeginPlay(); SpineAnimationComponent->SetSkin("default"); SpineAnimationComponent->SetAnimation(0, "idle", true); + + if (ResourceName.IsNone()) return; + + const UDataTable* ResourceTable = UBusyGameplayLibrary::GetGameDataTable("ResourceConfig"); + if (!ResourceTable) return; + + FBusyResourceConfig* Config = ResourceTable->FindRow( + ResourceName, *FString::Printf(TEXT("ABusyStaticResource::BeginPlay Find Config: %s"), *ResourceName.ToString()) + ); + if (Config == nullptr) return; + + for (const FGameplayTag& Tag : Config->GameplayTags) + { + Tags.AddUnique(Tag.GetTagName()); + } } diff --git a/Source/BusyRabbit/Private/Level/Map/Components/StaticResourceLayerComponent.cpp b/Source/BusyRabbit/Private/Level/Map/Components/StaticResourceLayerComponent.cpp index 6cc9ce4..d3d3af9 100644 --- a/Source/BusyRabbit/Private/Level/Map/Components/StaticResourceLayerComponent.cpp +++ b/Source/BusyRabbit/Private/Level/Map/Components/StaticResourceLayerComponent.cpp @@ -113,7 +113,7 @@ void UStaticResourceLayerComponent::GenerateResourcePoints(TArray& Ou const IGameMapInterface * MapInterface = Cast(Owner); if (!MapInterface) return; - float MapWidth, MapHeight; + int32 MapWidth, MapHeight; MapInterface->Execute_GetMapSize(Owner, MapWidth, MapHeight); const UMitchellBestCandidate *PointCreator = NewObject(); diff --git a/Source/BusyRabbit/Private/Level/Map/Components/TerrainLayerComponent.cpp b/Source/BusyRabbit/Private/Level/Map/Components/TerrainLayerComponent.cpp index 3f37888..9a60953 100644 --- a/Source/BusyRabbit/Private/Level/Map/Components/TerrainLayerComponent.cpp +++ b/Source/BusyRabbit/Private/Level/Map/Components/TerrainLayerComponent.cpp @@ -171,11 +171,25 @@ UTerrainLayerComponent::UTerrainLayerComponent() void UTerrainLayerComponent::BeginPlay() { Super::BeginPlay(); + + AActor* Owner = GetOwner(); + if (IGameMapInterface* GameMap = Cast(Owner)) + { + GameMap->Execute_GetMapSize(Owner, MapWidth, MapHeight); + TileSetSize = GameMap->Execute_GetMapFieldSize(Owner); + } + else + { + MapWidth = MapHeight = 32; + TileSetSize = 128; + } + SetupTerrainActors(); TArray Priority; TArray TerrainData; TArray TerrainTypes; + for (auto TileSetConfig : TileSetConfigs) { TerrainTypes.Add(TileSetConfig.Key); diff --git a/Source/BusyRabbit/Private/Level/Map/GameMapActor.cpp b/Source/BusyRabbit/Private/Level/Map/GameMapActor.cpp index eb492af..d08cba2 100644 --- a/Source/BusyRabbit/Private/Level/Map/GameMapActor.cpp +++ b/Source/BusyRabbit/Private/Level/Map/GameMapActor.cpp @@ -11,7 +11,7 @@ AGameMapActor::AGameMapActor() this->RootComponent = SceneComp; } -void AGameMapActor::GetMapSize_Implementation(float& OutWidth, float& OutHeight) +void AGameMapActor::GetMapSize_Implementation(int32& OutWidth, int32& OutHeight) { OutWidth = MapWidth; OutHeight = MapHeight; @@ -22,7 +22,7 @@ FGameplayTag AGameMapActor::GetTerrainAt_Implementation(const float X, const flo return TerrainLayer->GetTerrainAt(X, Y); } -float AGameMapActor::GetMapFieldSize_Implementation() +int32 AGameMapActor::GetMapFieldSize_Implementation() { return MapFieldSize; } diff --git a/Source/BusyRabbit/Public/BusyGameplayLibrary.h b/Source/BusyRabbit/Public/BusyGameplayLibrary.h index b05c64f..ec1be07 100644 --- a/Source/BusyRabbit/Public/BusyGameplayLibrary.h +++ b/Source/BusyRabbit/Public/BusyGameplayLibrary.h @@ -18,7 +18,7 @@ class BUSYRABBIT_API UBusyGameplayLibrary : public UBlueprintFunctionLibrary GENERATED_BODY() public: - UFUNCTION(BlueprintCallable) + UFUNCTION(BlueprintPure) static UDataTable* GetGameDataTable(const FString& TableName); UFUNCTION(BlueprintCallable) diff --git a/Source/BusyRabbit/Public/Data/BusyPawnConfig.h b/Source/BusyRabbit/Public/Data/BusyPawnConfig.h index e202136..1a136fc 100644 --- a/Source/BusyRabbit/Public/Data/BusyPawnConfig.h +++ b/Source/BusyRabbit/Public/Data/BusyPawnConfig.h @@ -20,7 +20,7 @@ public: UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="移动速度") float MoveSpeed; - + UPROPERTY(EditAnywhere, BlueprintReadOnly, DisplayName="技能列表") TArray> DefaultAbilities; }; diff --git a/Source/BusyRabbit/Public/Data/BusyResourceConfig.h b/Source/BusyRabbit/Public/Data/BusyResourceConfig.h new file mode 100644 index 0000000..890b0a5 --- /dev/null +++ b/Source/BusyRabbit/Public/Data/BusyResourceConfig.h @@ -0,0 +1,15 @@ +#pragma once +#include "GameplayTagContainer.h" +#include "BusyResourceConfig.generated.h" + +USTRUCT(BlueprintType) +struct FBusyResourceConfig : public FTableRowBase +{ + GENERATED_BODY() + + UPROPERTY(EditAnywhere, DisplayName="备注") + FString Desc; + + UPROPERTY(EditAnywhere, DisplayName="物品标签") + FGameplayTagContainer GameplayTags; +}; \ No newline at end of file diff --git a/Source/BusyRabbit/Public/Level/Actor/BusyStaticResource.h b/Source/BusyRabbit/Public/Level/Actor/BusyStaticResource.h index c586ca1..0244a98 100644 --- a/Source/BusyRabbit/Public/Level/Actor/BusyStaticResource.h +++ b/Source/BusyRabbit/Public/Level/Actor/BusyStaticResource.h @@ -28,5 +28,9 @@ public: UPROPERTY(EditAnywhere, BlueprintReadOnly) TObjectPtr SpineAnimationComponent; /*-------------------------------------------------------------------*/ + +protected: + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) + FName ResourceName; }; diff --git a/Source/BusyRabbit/Public/Level/Map/Components/TerrainLayerComponent.h b/Source/BusyRabbit/Public/Level/Map/Components/TerrainLayerComponent.h index ae0b58c..05e294e 100644 --- a/Source/BusyRabbit/Public/Level/Map/Components/TerrainLayerComponent.h +++ b/Source/BusyRabbit/Public/Level/Map/Components/TerrainLayerComponent.h @@ -62,14 +62,9 @@ protected: protected: - UPROPERTY(EditAnywhere, BlueprintReadWrite) - int32 MapWidth = 32; - - UPROPERTY(EditAnywhere, BlueprintReadWrite) - int32 MapHeight = 32; - - UPROPERTY(EditAnywhere, BlueprintReadWrite) - int32 TileSetSize = 128; + int32 MapWidth = 32; // 用Owner的Width覆盖 + int32 MapHeight = 32; // 用Owner的Height覆盖 + int32 TileSetSize = 128; // 用Owner的Size覆盖 UPROPERTY(EditAnywhere, BlueprintReadOnly) TMap> TileSetConfigs; diff --git a/Source/BusyRabbit/Public/Level/Map/GameMapActor.h b/Source/BusyRabbit/Public/Level/Map/GameMapActor.h index dfa5b12..af0fe9e 100644 --- a/Source/BusyRabbit/Public/Level/Map/GameMapActor.h +++ b/Source/BusyRabbit/Public/Level/Map/GameMapActor.h @@ -18,10 +18,10 @@ class IGameMapInterface GENERATED_BODY() public: UFUNCTION(BlueprintCallable, BlueprintNativeEvent) - void GetMapSize(float &OutX, float &OutY); + void GetMapSize(int32 &OutX, int32 &OutY); UFUNCTION(BlueprintCallable, BlueprintNativeEvent) - float GetMapFieldSize(); + int32 GetMapFieldSize(); UFUNCTION(BlueprintCallable, BlueprintNativeEvent) FGameplayTag GetTerrainAt(const float X, const float Y); @@ -37,9 +37,9 @@ public: AGameMapActor(); public: - virtual void GetMapSize_Implementation(float& OutWidth, float& OutHeight) override; + virtual void GetMapSize_Implementation(int32& OutWidth, int32& OutHeight) override; virtual FGameplayTag GetTerrainAt_Implementation(const float X, const float Y) override; - virtual float GetMapFieldSize_Implementation() override; + virtual int32 GetMapFieldSize_Implementation() override; public: virtual void BeginPlay() override; @@ -58,11 +58,11 @@ public: protected: UPROPERTY(EditAnywhere, BlueprintReadOnly) - float MapWidth = 32; + int32 MapWidth = 32; UPROPERTY(EditAnywhere, BlueprintReadOnly) - float MapHeight = 32; + int32 MapHeight = 32; UPROPERTY(EditAnywhere, BlueprintReadOnly) - float MapFieldSize = 128; + int32 MapFieldSize = 128; UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)