From 1220a7a4a8b6b51bc18ceee629d8023b59ed45c4 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 10 Jul 2025 19:47:39 -0400 Subject: [PATCH] Floor experiment progress --- .../environment/crux-floor-1-autotile.png | Bin 2800 -> 1609 bytes .../environment/crux-floor-2-autotile.png | Bin 0 -> 994 bytes .../sprites/blocks/environment/plating.png | Bin 0 -> 1154 bytes core/assets/icons/icons.properties | 1 + core/src/mindustry/content/Blocks.java | 12 +++++++++++- .../world/blocks/environment/Floor.java | 12 +++++++++--- 6 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 core/assets-raw/sprites/blocks/environment/crux-floor-2-autotile.png create mode 100644 core/assets-raw/sprites/blocks/environment/plating.png diff --git a/core/assets-raw/sprites/blocks/environment/crux-floor-1-autotile.png b/core/assets-raw/sprites/blocks/environment/crux-floor-1-autotile.png index d73a9a72dce29f6ee9dda94c0ba3a8c3a5c82a7c..c9bb24e5ec4a70b615634b2e9bbc74bab171e11c 100644 GIT binary patch delta 1580 zcmZXUdpwj`7{}+vm~3WTD!RC=X(Y)gYK0x6hRH31m0RXT7ftvqDoW!WLu*^gWx7m= zVN_ZsLr7}P*sj)XDkF(yvmeGaVdR6?>?{4Z=b!VO=RD{4ob#OTIaBMJzsn|r>ga<9 zsD6nB6Su76K9C7C^D9{cvHKp))t~k;i*AouB>0CB0{!uIaqJc_z!NJlf9W6o%pI%Y1inWDLGgms@(4}`1;2m5& z`J*HhBzsC}_R9%XE<0ML!DDB8erMzwh_R_%t>YapeWw@gpboie4=QR?tTxNw=jJNM zkh;3eKrdCiQm7uFmo7ZXjq@haHx4Yn+#guJoln|^4deFBylpw5z&^}nZd~eh3dq+L zEEw3gFOCII&D>y8%5CFkd8SSyO@#g`8=abQv)qks;pom*O^2JHldy6pJ zLA52nkc~ni&?Y+JO@VqY+&6=i$uA!Vsum1{b5+wr@f<@}E+N#F`#qXogqI~Y zXq-f~K$#|T3qvHK={w3At)IyS!0YZM{yxsvX-GO?!sthTkW*6`ni8d+z zD!5>W4gzEDGMVJu8ihG7ij5N~9}FQJx2A}!if<>+5yf|jV&&GFH&zYb<}GJ4tk6kr zs9+{4h&jGsv>UeF;d$laS@CkSi#8^u`(zH0FkNvopL zF|;_9tULo>n{*phKTtJf4x|}pRutJ{6^AEyL=RN3(WM|Zh&XN9 z4Ik5#QI6-tVC>;z5?M;5>@r}MBFZZDlQg#!8}g)Gu0AFG;}byEO6dQ^W7&u{mo&gE zOpjf=#^ib`XC7M5FT-=5W#D!YRoqJp2zo`n)MwhN#wMlS3pgpPOQCgr<`LfF!7Y+I zMf7Z_-}!@GXAhl2Z=AJnjqpv-stxCQ+gD6(b`#-c;jW$*r0(#rVQ*1Hez)D#Xs%xC zXur8PRM}&F^s(=YGucF*+0ZkxT6Gbf0PU@fFMFB8aoi^xLkki*Ygnkc_F{9m5KiH8 z%=MIaSYUSp4jux#J!OrcYUpdO&;Fx{3W8UbnRu`*-2ae=w2DVasI&K~#c$ zI*TuLrbNK10o{zZ8Mq*7B_0TK^(-gJdLng>t-itWbi=c4R|^JfZ^ZaUUjW$|%R9`L zJwK_H-e-$|bKwEy*L2~G=)1Uojfc=8&uq{ZyYhlR`@L3H`Os~vH*g*JQr0GIO`09s z9cqWN(glqp`BcZIs=@jw#GsISekjdb!P4ssY1HIi)2_BDi#Q z6k_JU&1pHxjQgnbYhjwleC9I)v)~A3jg~B!U^ANo7n{DR$qQx`=SE?1{H=)9FpM3v zLHU&0H^d*+-@^}Bh($ literal 2800 zcmb_edpy(q7yo`|n+-Ad+prOl+k_{|-PFi+Bo$FoJv_7$?Rng0$t4V3q~dW4xlFn& zlgdO<7^0Msp$NH!#TI+^{PFwm_uudL$LDj-=khwQbI$91-sfa^d+y&Rp(X(Uz&2L` zo+y%(e-{ES+S}}ocZmcTP2BGU)U(ku03cE0ig)xQ7tR+QIL{%-r3zaBr?R^ZBmJZ1 zk{b|>=MCkixJO0wcu#@8blmt7Y(#P|+T572ofz-OE|Uw9g%TX{@trq{%bnr@0(YW}!UfLF`|GRAqn|x7F}wufD9TeihW|O~$@S*k`$bT9 zXpW=rjh6YXp`wv5q<*;;B@1~@@6jh_aB8L-{H2)^J~!E6XIdPXk0O`sU>tr+@PN_pWP;@CUm?U-zWrT0=lYRUiu186pKo#0*lN=^;+p+0XJR1Y4f-E6u z$I?Ues0J`!FbeF31$_JIQ2@XR8((q|Su-T3i2~^kn#w>afYYwEasawraAG*woCs59 zYRADd3YfAU=S#-&ES7%lR$)7sAum_O9&hSea(_i4oWQ4=6z+*Np;ja6+sChJHi>g> zZB$Nxd9PW0P#n$;%tE0Py1BoKi`u+Q+6**aOL;gNQEnmhw3(=!JiA#*@D$4EvFe#C zFn2)glG^+6SE*}4OAsFQ5wimSL>Cgzz$eR)uRJmv_`rEF5_5DwK0wzUthJ5rAJTGLnTr%y#799?Fmg?nZ+ z8FUBR1*hEV4mC$?#S1``%(C3yv9jsP4mSTD%~K+~HuEd2j)VgupHK?(r#*P6@90IJDf5y> zdJl_^P&xr26R$gR17GfyIRS4y>8h~W>3R|(}C)KcvyJ`-6OhJZ}kO4^q z{;e8VK+HWrvO`{vp?r%yFnStWiZqA=BH3xk5GKKTNsJY-y%;&Jj{)2~fcH3p@aV{o@?$UJU+uV{?AV>~t1kX`d*Rn&;h8#GR!1q_nrsv}HrvSz{txf+ z{uI`#a7`kKwsHyXnv*SuW}*`k*j04#zO}8!qC-Q`>GO+Hkj5B$cfjy&g<)*)w9ijR z-`z_lyrVGgAR!gUGr2%q*K; zrAezWq8ibN%3WHyEE)UxQj0niZWTr0m|g)a+lN;G*ZPkpM` zTGy<~+K?JFS9B9@+pRg9)f@~Z==;-$?BT+;5Tr_|G;P9Wvm z)Fn;K*(9ZN(@tOLN$g8_(Xn+KDBSl;{Gh-~)E4~iT+)#f9VoppY$pTti#2m!Wzo~QULrC&2V}k zSv^~rv#_Cda3AehBOo&QQdIk9(d_|FYeDdyTD@q2x!l=-S2AB)nQbpPyA~IJ%X*aM z;9TN^^V@xT+Vs+j21CB)Rnyu}gX_bVX>k*z*e$usc1`8_A$k}03QZC*jPDJLWuZgW zYmk@rRrAf6ROkFd$pCGSo`k z^?Ae3m-~s^WkHuP#VUiUBkF^`jPmb+TH9Lq4E#JTZDBS|gVz=P@zf_5K}6%Ji~coJ z+G!J;e1U@7{Oy(WfJ4km>=Lh+W$ivl_B@b6)5!E?BC!eErLt~WH zd~*6jj-Kr=??w3M^pG;%*_biwC)4mR50-Zs##G*_;5;O{sw2YH5VLoRICw34j2hxL zxixs=oZ_bz#a3bjm0o?^G3NNrb8f9``E`SprCdLJUzk4AD>iCixtU-3yZ*YH&DPva zrnjK+HhNg;a@`OR=3fI0o#}P!(VmtGOYRKqi`;cDI5z59c75VKFZgK9rX)kyxK5yG zgj4DdSJ%(hR`z@lLHtvbN5}U&8sE#wrH_S;$V ziSVyMVlX~9a&e|p^LnY~H8LakwQi6j(4u#wu%TG|WK#wTh3+bAo_x@21j% zru*OXK0KrFlaEYcuHK!2+Yb`g1l?x$LR(}S#Q9rxEa&0IPb}Mp#XxsK0tH;MZIK}r b^Mo>vxV4maY;uumf z=j~kIqALzOt?DA~3lg43E{|Y)SI_W3V5Y3*I|l7lLg8=nqO1NIzyDpf;Kr*-^K9?t zM%MlK_2bKTrfoGZY#Cl~Ga0Zm&S+*hV(y(M*PLd@7sT>ezJ8#^{1&We^0YId@4=(F`cX7$?FrJ_FJ+?Y!>e^b~!)Yc3#f^tj3g| z>vu7K;oD|?>W4T`p4VJTu8(wdEv(B}8{bu*=?w!Z>PrGaF@LoO6 zc=E<>@y`0S{~!4?C|R86QCcyJS)u83k6u&zTJz?tET+nckn_LHcORKJ>p;i<3tA1< zhyS!pZ|q3O3;M<=aB$C@b)0YZo|C(~uC0o}gAp763*{VA!kujymNb9^W6nJ0FLCMp zdG%*YBl+yPH6}itU(S3q<;^6wNAaJ|?{0K*^Z(ac&RlwC!k^P|whr%0-@REQT(HGG zz~tZ7f03-vAl<;Puxa%|Ifftyu#Z--3*5XKz|Wuw@!c07cku=Jgd(?k?H~3)o>4Q$ z3x0*P62Xw~>UdsZ}<^uNHCA-rym z2aoY1f7=5LU-nH{!7kA-(e=Voxdmzpd*?q7=2uws{VGF#rWV5_d%3eL4xf%Msp9(( z$CQ12=X=@Tzy5DKSL|kDnw+)u$SIen{{P-SxOD%_j6c;*zuqQHvbWom&p!E&<&8D$ z4E#4ZP2edL5?tVP!Us#RH`lO7TtDc3vpOO8^8&RhP+DDlpYLAx|C#KWvHNA;%=;sj zY-!E6lfh$OozBEU4`5pSn%vo!T+Fv1kMH8{Vz()i{)aJjay5rGSbkwQX#dCX?1DTn z2`K;1QwZP3?!$Bz81P^b=XwT@MzHh&nP1F4On(`*c3gj=z0e-6af5IM++9Fjf0#vU Xj(yr+lD89>X&F3S{an^LB{Ts5KF7q{ literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/environment/plating.png b/core/assets-raw/sprites/blocks/environment/plating.png new file mode 100644 index 0000000000000000000000000000000000000000..534913714bea917d40a795ae91515f1cbd888ec0 GIT binary patch literal 1154 zcmV-|1bzF7P)Px(JV``BRCt`tTfJ@?K@grpehMgU7YJFFc!8uqNRepcXRzeLqV_`|7fI;{a9S$F zGo(Q%6(xQRQaDSNx!Ikcojv#@OZLIt?)Tly&g|^Cd3<^~tXE5jF&Om03;X>C002y; zv!dtRjjmhQ-rs+<#?g+|>w-K003Jt!^=b)=#jDe-PSM=l-XFprp5y@u5TLaLEZltl zeEdCS0U8_ypvXTwd{;dzo=|R5QV~*CGoL?;$Kuf3+}1p$a}kIKuZ8jezV<)9)wqEs|a0^2P}YVd~d$Jecpb;S+XfmC_pY89H&$$)7#)3z^ zY?TX0tp$G%ljm0SuE;|w6^^0Z(Q(^rY}(j8x*#9Vi4_18B5>sQ`;X$nh!)(OL@q$Z zZTw&fdFp#LAu0AGQ(+LMv6JacG!VYGwk2?L3X5=705Ih8xhzj30w!RMK-8SVI&?R> z=3PLO#%fdClsiz@tr3VztI1TDtH1*BHd7`>rN22#;D~xgAjs_nG$L@@R*47{27|s^ z1WIL=Nf)5vG35@DJv((x>MkA;D3?}e*8qtKC7-24z}Iskl#mBW9v~G#Qmv7QAQc51 z$b+UHpxx00;UsGb{96+!canx-Yu4FNXM>PfXrv-wtC5NjBeoW81k#)nX1Bu@5mK8O zjR?ch*j!E0Zr<2>fM?1o5h3>5+9Ir1OMVgb+`MoLDqgg>;%W+-&`F*RdYtO!kb1MJ zRa?6DSk54Nlv)x6Em*IXt+RfKSxbu~mNSTKLB!J%BxinH-1fGF!Jz+NfYj!tMw0^= zla?H`M{;5O9w5_^n32XEx*!kA)2Nf0V5%VEVF_K4kD(2nz0?9zY6<5c56aLv9F0F+ zz*~fKkq?kWjWGT(5%Ln@+~fmtBE;jLWP+t4TnhOd@c82X085f_Zt{!8E8AeH>JTZZ z5O+;p8mg~SA8fWeGV{Vk3aW7FNxt?;lDZ}ciX;OrfIR1_rkWrKE5z3JRj5Q>buNIB z+K8kwEo=KaRBDz~p9^3}Edhu(@4a`>BIkzcE-|SkSWk2?YLW+Qo1B*jTJn}oQ7$bu z_X(DWAVC-8p`=gHJ7dH@xo4Kl52LtKwA2zffogY_6nBc2Sb}9g;hh<}^$Ke(Atpwd zIA=j#mf+SaY|R)`O_Q7jd0B#Mv$VF!k!yqRLIn42aj6JYf^rTKsqD0ZY4{HaeVGz$KA~jx6CQz@?E7u!x|+Ut-)0 UNDUN~t^fc407*qoM6N<$f;Zz0_W%F@ literal 0 HcmV?d00001 diff --git a/core/assets/icons/icons.properties b/core/assets/icons/icons.properties index c503a0a1e8..c184afb202 100755 --- a/core/assets/icons/icons.properties +++ b/core/assets/icons/icons.properties @@ -601,3 +601,4 @@ 63081=basalt-vent|block-basalt-vent-ui 63080=tile-logic-display|block-tile-logic-display-ui 63079=crux-floor-1|block-crux-floor-1-ui +63078=crux-floor-2|block-crux-floor-2-ui diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 0ebea668b2..0ecebafba9 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -59,7 +59,7 @@ public class Blocks{ shaleBoulder, sandBoulder, daciteBoulder, boulder, snowBoulder, basaltBoulder, carbonBoulder, ferricBoulder, beryllicBoulder, yellowStoneBoulder, arkyicBoulder, crystalCluster, vibrantCrystalCluster, crystalBlocks, crystalOrbs, crystallineBoulder, redIceBoulder, rhyoliteBoulder, redStoneBoulder, metalFloor, metalFloorDamaged, metalFloor2, metalFloor3, metalFloor4, metalFloor5, basalt, magmarock, hotrock, snowWall, saltWall, - darkPanel1, darkPanel2, darkPanel3, darkPanel4, darkPanel5, darkPanel6, darkMetal, cruxFloor1, + darkPanel1, darkPanel2, darkPanel3, darkPanel4, darkPanel5, darkPanel6, darkMetal, cruxFloor1, cruxFloor2, pebbles, tendrils, //ores @@ -315,6 +315,7 @@ public class Blocks{ solid = true; variants = 0; canShadow = false; + drawEdgeOut = false; }}; empty = new EmptyFloor("empty"); @@ -810,10 +811,19 @@ public class Blocks{ darkMetal = new StaticWall("dark-metal"); cruxFloor1 = new Floor("crux-floor-1"){{ + autotile = true; + emitLight = true; + drawEdgeOut = false; + drawEdgeIn = false; + }}; + + cruxFloor2 = new Floor("crux-floor-2"){{ autotile = true; emitLight = true; lightRadius = 30f; lightColor = Team.crux.color.cpy().a(0.3f); + drawEdgeOut = false; + drawEdgeIn = false; }}; Seq.with(metalFloor, metalFloorDamaged, metalFloor2, metalFloor3, metalFloor4, metalFloor5, darkPanel1, darkPanel2, darkPanel3, darkPanel4, darkPanel5, darkPanel6) diff --git a/core/src/mindustry/world/blocks/environment/Floor.java b/core/src/mindustry/world/blocks/environment/Floor.java index a4bbd0b5f5..b67ecf9313 100644 --- a/core/src/mindustry/world/blocks/environment/Floor.java +++ b/core/src/mindustry/world/blocks/environment/Floor.java @@ -80,6 +80,10 @@ public class Floor extends Block{ public int tilingVariants = 0; /** If true, this floor uses autotiling; variants are not supported. See https://github.com/GglLfr/tile-gen*/ public boolean autotile = false; + /** If true (default), this floor will draw edges of other floors on itself. */ + public boolean drawEdgeIn = true; + /** If true (default), this floor will draw its edges onto other floors. */ + public boolean drawEdgeOut = true; protected TextureRegion[][][] tilingRegions; protected TextureRegion[] autotileRegions; @@ -236,7 +240,9 @@ public class Floor extends Block{ } Draw.alpha(1f); - drawEdges(tile); + if(drawEdgeIn){ + drawEdges(tile); + } drawOverlay(tile); } @@ -295,7 +301,7 @@ public class Floor extends Block{ Point2 point = Geometry.d8[i]; Tile other = tile.nearby(point); //special case: empty is, well, empty, so never draw emptiness on top, as that would just be an incorrect black texture - if(other != null && other.floor().cacheLayer == layer && other.floor().edges(tile.x, tile.y) != null && other.floor() != Blocks.empty){ + if(other != null && other.floor().drawEdgeOut && other.floor().cacheLayer == layer && other.floor().edges(tile.x, tile.y) != null){ if(!blended.getAndSet(other.floor().id)){ blenders.add(other.floor()); dirs[i] = other.floorID(); @@ -316,7 +322,7 @@ public class Floor extends Block{ Point2 point = Geometry.d8[i]; Tile other = tile.nearby(point); - if(other != null && doEdge(tile, other, other.floor()) && other.floor().cacheLayer == realCache && other.floor().edges(tile.x, tile.y) != null && other.floor() != Blocks.empty){ + if(other != null && other.floor().drawEdgeOut && doEdge(tile, other, other.floor()) && other.floor().cacheLayer == realCache && other.floor().edges(tile.x, tile.y) != null){ if(!blended.getAndSet(other.floor().id)){ blenders.add(other.floor()); }