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 zcmew$dXi^?K|LF@r;B4q#hkZu4U29Y2)JtY^*<=I+WBoqNsxN(xxC*3Vd}l_9)z5_ zV8p=K-T!wt!#$s_6Jquoe)Bdd?7Z>!-{ky6K$$RG(UQYgOPR$qnqy*Ur2- ze?0ipZ_B^uul_e<%8@P<%#tiPxzRRe+qRxazyHNw7qdl(v@gzVDhg2Zkb3a%xO3!c ztr=<>?1@cxKVLqb{(^n`q*x=kr^nl`HZA@#S=r&`L4o@l zO@y|*QJ*ArHi`Ml8E%`I^$v^Ydn}pd%C;j$?pq$y*}7vFUhRJ&vOyzOu|l3R>*9<3 zHyFGV)+YSsZ#5O(@+!UO+TZm?2PXaCetDB6de7_yw-{EQK0425!BzhyZhrq)^Df}L z&5{%K<^EL0X_-tF|L;mB%v5WbSEMlcfP`-Ix?H9(`{V^a43dma2VWM>ZMb^AUV`K9 z17<~`q=S(nZcUdS+rRt%=)uNcl8e7>{Pe82LC(ENAkMu>iP>X5|AmTO9GOg~|Mni-H?eEEc|xX}Uj|(`5c4uE1OMA5}JNTYTMd{mdD$&2uC+ z32QA}@_$O}f{4d!`dH)|ZA9-hMLW(@I}lj^H^gApod0Cy>t8DnHy5*AoE~vcj zmu`LLYA>efc&4cMw|5Unya6dt_1j^7ql{19Hs4EY_SkwJKR(887rEs5h?dUlOwa za*INDyN$$SdYB!P+p9ic>o_)h|N^Xi<6j+Z9*tQM$2sMXGSceesKD&n*nQ##wb+@#@uc3&Y$%Nsy`Bx;<;g z0Vn(93$K|YZUkQL=8SS&&!3R!?z>v;!mSLUR7f6t(=JzbcFLT`Tc_s*=hoEMcK_2+ z|L6Ojb;-KgwF#9;5v!*P|9@7_yqxoi!ZYTzz7y(A*+Dt@W5~s?8-qMdH;Fgd%s7xG zEy(R^S?m4x+~5B81^ZskcCz~7 z{+Tdz&f?6@TU7kzebVN`opNV>tbbE{>BWY}`=c_ByfAqD|G!qktOjoFfAM&`3AlBO13x1_d0I_suGZdL$a2DG0!rLHF9+H$puCjC7jZ0xqeD(T; zx_d)llfkBcXM+!LI7&p?XY*aC7I3?EejdxWdYP7qU%S^aRq-A=@#}TakDkbWM~TSz zEqoWE1x&t7yzrXYL;9c}Q?xv%mwi@4n7+!U$p@~TcYS>I11mI%@7%GH|A8TA&fl0j zkhET>r|UamjiAXv!D?phP~{a{zZu2zU3FeOE5qw|jSXwBK|FtW%ij}!*YGDWWUH#p pU{gpq$x_Vc&=h;&)uR9W%ICiaq(}PnFfcGMc)I$ztaD0e0syJ8{FMLz literal 2800 zcmeAS@N?(olHy`uVBq!ia0y~yU}ykg4mJh`hQoG=rx_R+7>k44ofy`glX=O&z_rTL z#WAE}&fB@(MYlbK+Wzlna9Xrv!<~zFjk$j^$?n~-Sl?jt+_g1+zcu)(AAVrH!)+~N zth-eus3zpxBB2C977vGME+?kWU+h%F;KA^7vDWK}CjY;_|9>KX|9{40`;dE$F zZD3{PR(vL)yA8}B)60Ofvt^1 z663^U2QIJ}7<4~=4Pq4&sq2!Wvm}bHh-=UWt6d8bRj{2Q6%(FfMzwRvn^cyGq&VqF zJ2?s;U?`M&E1n|CJm=EGDSYSW9v1A}{CT>6GmcDD?(^7F@t3Pa@`20)nHNSNw)?KL5szD(`X}Z} z8k#Wj^qdORsb*4qpe?cL@8-|b8Dw8@1a&Jrv~T`AU1Q5LjqlODk|zA(vl-Yp9Cxf@ zQJkV`vG>jdjr%RrV{Tu28PUjmaN12K;R6S5%z2Xd)Na$w&g|c>e;l|~7p>Og!@!(w z${1pI__oW2qJQgjy?q#%7oAP)oqv3*qx0DdUnA5S)LowLS+=aEl!=^kL{srdY~A;a1(buZq+( z5}O+j2s=dG-;#gB^x_qk4=yhzTi!{J7Cvxbf-c`0yXkGZUpDX4e5TgWsHD3-T;A*R z>)hWaHF-=D3PL+Q7o9J&f4s=loP->Fa-ywMLx%qp=I?f9I z3jUAYHFclm%y*r2VF|ul9@w>DspJN=goX-6F_Al658Q0l9eLsI~x9$jC9(O7E$>HzDT*sV5QbKF1 z8I0Ge>K%DpU)SmVamTkNO%`s(X}W<8oCygPy2TvJ7}gzC4u5{0b;rWvik*SJ48?1| zt#>KVl&k-#y6$MQR?|+l$!ZPiP1m>m7CRuy@zj8wf6S*#s#(? z-kuJx`SoMn=Wp4~&KK|RIC6h0YmM)>wVXGE@9(QQs$L@Qc&7Hxnwm`e|4--t&sfvf zb9~`i%L<*C`>#&yh=-NC-zxvFmUy6-8)Pd~>m&DgfB4Jd+S+r=*Ro&u`fvN(@ax4L zZ{PDUZ7;R=VbET(RJ$zxdEj@)VDk@p-=bL`T=8f#c<^AyFCDv$wI3%iMeILzH~gn9 zv*GT7z>`<_wH@z#b_noX##Ss~*(lhtMymdr^cMg3_l0-Qx&1BIhLc&gdwpAyW(0?M zThec?X;UvZ&N<>yJ2ClqK!N{nX{HlfM0kqNwJY#_DHU+qYgM(&Ye&EF^kpX{xRx>9 zdDU{xY5#lYpA3B*G7~I9;zgdkJGnsa+vi<@%g@PAwpetSQ?}1jW~Tw~%-1$w`V|^t z-|X6S_0ie3mk~bU#rzHirA97+ooo~wT+ zGw<@lE2$QNqJ1H?zU%g{7J0YWw%$YX+UlA$tT92l_jtICWb{^cThz=r_0?+OWmN<1 z)&J%!d}gay_)2EpZl3cYJh#PLzHE-?To5GNVb~$e_Wb{()E_5PEtVdRI6Coa(}Z8W zuTEcJ71*rDv@-4OBh|>KpVqdvY^~y6+qU}%(^3XEjy}7zf`8}F<^EWh>lq>cyE4b( zvcuzsBO8_dVhjGQ&-!sf&{dS(AdBr%(%Rii8^d;LY@SeH{%luM`X-fSJi$9p^9A+) zE$DdAo?ddc?n3Rp#eyrBe1|ZcAsm1%=3@C!%F=Y{}t#q{r&LGA61XCZRf>)TV^ryq;6l#P!Pe^+^7Bg za-($b|NeJBr9$2M;vzp5w@lls9~G4S6Kb{FxmY7Xt=#&*UY)|$ zHyhqBO1{4GE7KwSu257|FPJS*bmiC9+{l%! z+>t94Iac;FocMKHeyZ%<1G`h6U+Y)1{S)w>?OsR1qHp=7_bs6FM2R2yJ_vpM90!ZtwOJZU#G3PvTWgl z5SI(78aw>U@-Bbe{cB;S#t$!>f3K(S2>88ymdq`&)-~4|Qo~j;T+cY~byn#)e`@22 zG-;%G+GEMrXieJLs`fW8gn0)oq1~s!V zmeP}6ri^P={Q6aX=3MULZuwQk6Q*WNyY=Kq@PXT5%DEg1vcpz!DkuaRRLt*o+Wljp z+~kU_@yAqS!xXo!VYE-%<5? W-y{Du2N)O_7(8A5T-G@yGywqO85)oP diff --git a/core/assets-raw/sprites/blocks/environment/crux-floor-2-autotile.png b/core/assets-raw/sprites/blocks/environment/crux-floor-2-autotile.png new file mode 100644 index 0000000000000000000000000000000000000000..58b7aedf4ad2786942ae43228bd9e727c5a17477 GIT binary patch literal 994 zcmeAS@N?(olHy`uVBq!ia0y~yU}ykg4mJh`hQoG=rx_R+7>k44ofy`glX=O&z&yv( z#WAE}&fB@ZMOPenTGd6|7bHB7Tpq#puAbq6z)V@qcMRIAgu>tCMOXbbe*e2{!Hrjw z=GorOjja3e>&KVxOxtQ+*fPA}W-?%BoYBm1#*yJ!%^f3~+W*sDz4%#ndrRze*SeZ1 zEB?pZ*U5d_-nai${bcKg>Q7T${+?!a_*9zmV>(yElh-Fc?YCr)*eu>->~em(?Yx}- zS&b<_*Y9Hf!ne)()DLl1hflv3_5EMR;87PJb)>$SFQDk(^Y5o;*Vq60Bw4L=@yGQ; zehVx)4#==1_CHOV>h+u5x4U;9+du8D zwZnV$IOEA1yTv=}*ZzOx&!A*+o=0iLEM|qK&pmog?Q6}Ov$B{fBSOyqGT(h<;;aK5 z|1W4YSRek=GQF`QAus3~qrkyEbJlUb*?Ugz?z*-r1`kGX04$VqNC|hgWmwVx4vabT zn7_oO_vh80Esf-}=hm3`bbdMW(Udon+#bb$I={Qo$<6;?YdLf2nF)VR$Jsi(FMaoB zjc~yh_W+ZBTmMC}LW6Vzzrv=~3*{Js9Kb$W!7gy~Y5+fjCd7AN*adDbz964aUdsZ}{m5*XsTHheqVToy;6B_f~ODZ*`t?(Y1j= z%3u=*nz?V7JKmh%KD*@8^r!RxF*t2{RQAnAQ`%9*-tGPRCDZ$s+dD8%2`~6!^MyU* z$i=FLH$Q^;CwRP{yVpm9)7qmyLZdcFq^hCX``^+n{2QL{`EIp)Yi;b}>x<+Rg#H)U zGKAO7@!&CjDSwYN%nS|^4TZ< zvAnT{oq_)brwKe|LV^pNPWWI6_U0P)i0cR4Z&oJ+e_o(g1xl-n@AKX3{y&pFGj_l1 zn|Xi4k}a+Ib~1SEtJ9fS=)vmn>1%RlUve?uf;_&9yNlhXO!^ 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 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4mJh`hEk44ofy`glX=O&z+&U+ z;uumf=WO)eJSj(kdCqlQ8oA;ek<%&~mpFJ#%y^u>;mM&z-<%c1JzugHL}?u{UgD@B zs#?bzWZ^w+=gqnE=i2^I@&0!3?z``I&zyVnW=CaBmF1dn?+!zWF9*4Q|7B-j@L9Hb z(epdK>!PpUyI;Tc*u}o9ubXTb806fWzh-fEA6oiQQX$WnR$(qE@kWu%iCVMA? z#0mC_u7;D-cd50?m0t9kw@chV>X+Nc?`?|@-=hh9|T?+E&J4G2plnS1F z|K0!SP>0x^IWBq*M|1xqa8|ymHdWO8rV^Yeux#Vxmp&!}`?haWEhy&dE(l{Vc=Bnd zj=wUKT0*bGl{ts3O3ZgXi*=ZMEGziV6zhQNYXv*JSDy@-vHAehN3&oxx25|ny&rT` zxhb4@%W9%ja67D%Lxin)Uo?wX>NHRB1&<7$@=da}F7hs6YgW=r;R9KLuX#`jX*y&F{x>8G>=6~EoSrL-p8yH4=S zojnEIT5(%;Jj&vlb-{BUZ`GVv&n8rDUKtv_>s!P*g{mo0Lae$G>!+>VT-O=t-K{ds zxFg5$$Ymjw^tzZk-?p_JT<|}>;mWh6Zj+fMCQp;u;$D>aM^54L#2FKh$?j6%KXrM< zC$UArM6{g@U&gTmJr!H8^^xDTBh;AvK$UniQ*WjO_;3uJncb+g8 zDIIw{Kc#7@QViEmnGZi6{bTT+RG9av`>6Kqgq5!ZG*=3g`^HJFS|22zv(4J*^C4HR zRRu3S_kHu6v`dYnONCjl!RGm@WwR7Gw2xf-7P`VEu2ipK;;oJ)M!MO*twOSOAN9mv1iYoGo2&q(=@+8JzcZ!oYOiK9L1k3T;hMh zI{AqG&h%+#_!sX8-f~6AqA{y{nn-!qw1}ou`-gKScYWo`)>Tw{hFP5#x|rg+xkVps*~;j>d!CuqoQMOe6WjZA9%>v|I+1@v$AW|LNq2ZWctxhJ RV_;xl@O1TaS?83{1OPYV4fg;5 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()); }