From a24c15117de3d82b624d51d6d6525ca6a75c6f0e Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 27 Nov 2021 12:17:45 -0500 Subject: [PATCH] Cyanogen synthesis retexture --- .../liquid/conduits/conduit-liquid-r0.png | Bin 177 -> 0 bytes .../liquid/conduits/conduit-liquid-r1.png | Bin 243 -> 0 bytes .../liquid/conduits/conduit-liquid-r2.png | Bin 257 -> 0 bytes .../liquid/conduits/conduit-liquid-r3.png | Bin 242 -> 0 bytes .../atmospheric-concentrator-bottom.png | Bin 0 -> 462 bytes .../atmospheric-concentrator-heat.png | Bin 0 -> 6328 bytes .../production/atmospheric-concentrator.png | Bin 478 -> 1827 bytes .../production/carbide-crucible-top.png | Bin 326 -> 0 bytes .../blocks/production/carbide-crucible.png | Bin 1603 -> 2511 bytes .../cyanogen-synthesizer-heat-top.png | Bin 0 -> 7371 bytes .../production/cyanogen-synthesizer-heat.png | Bin 6328 -> 6284 bytes .../cyanogen-synthesizer-liquid.png | Bin 351 -> 0 bytes .../production/cyanogen-synthesizer-top.png | Bin 258 -> 0 bytes .../production/cyanogen-synthesizer.png | Bin 1722 -> 2465 bytes .../blocks/production/electrolyzer-liquid.png | Bin 392 -> 0 bytes .../blocks/production/electrolyzer-top.png | Bin 233 -> 0 bytes .../blocks/production/electrolyzer.png | Bin 2238 -> 2273 bytes .../production/oxidation-chamber-glass.png | Bin 410 -> 0 bytes .../blocks/production/oxidation-chamber.png | Bin 2554 -> 2702 bytes .../silicon-arc-furnace-top-alt.png | Bin 467 -> 0 bytes .../production/silicon-arc-furnace-top.png | Bin 442 -> 0 bytes .../blocks/production/silicon-arc-furnace.png | Bin 1678 -> 2647 bytes .../blocks/production/slag-heater-top.png | Bin 159 -> 0 bytes .../sprites/blocks/production/slag-heater.png | Bin 756 -> 1113 bytes core/assets/bundles/bundle.properties | 2 +- core/assets/icons/icons.properties | 1 + core/assets/logicids.dat | Bin 3541 -> 3567 bytes core/src/mindustry/content/Blocks.java | 74 +++++++++++------- core/src/mindustry/content/Fx.java | 15 ++++ core/src/mindustry/core/Renderer.java | 31 +++++--- .../world/blocks/liquid/Conduit.java | 61 +++++++++++++-- .../world/blocks/liquid/LiquidBlock.java | 2 + .../blocks/production/GenericCrafter.java | 19 ++++- .../world/blocks/production/HeatCrafter.java | 9 +-- .../mindustry/world/draw/DrawArcSmelter.java | 9 +-- .../src/mindustry/world/draw/DrawBubbles.java | 10 ++- .../mindustry/world/draw/DrawCrucible.java | 17 +--- .../mindustry/world/draw/DrawHeatRegion.java | 6 +- .../mindustry/world/draw/DrawLiquidTile.java | 36 +++++++++ ...rawParticlesIn.java => DrawParticles.java} | 7 +- tools/src/mindustry/tools/Generators.java | 2 +- 41 files changed, 217 insertions(+), 84 deletions(-) delete mode 100644 core/assets-raw/sprites/blocks/liquid/conduits/conduit-liquid-r0.png delete mode 100644 core/assets-raw/sprites/blocks/liquid/conduits/conduit-liquid-r1.png delete mode 100644 core/assets-raw/sprites/blocks/liquid/conduits/conduit-liquid-r2.png delete mode 100644 core/assets-raw/sprites/blocks/liquid/conduits/conduit-liquid-r3.png create mode 100644 core/assets-raw/sprites/blocks/production/atmospheric-concentrator-bottom.png create mode 100644 core/assets-raw/sprites/blocks/production/atmospheric-concentrator-heat.png delete mode 100644 core/assets-raw/sprites/blocks/production/carbide-crucible-top.png create mode 100644 core/assets-raw/sprites/blocks/production/cyanogen-synthesizer-heat-top.png delete mode 100644 core/assets-raw/sprites/blocks/production/cyanogen-synthesizer-liquid.png delete mode 100644 core/assets-raw/sprites/blocks/production/cyanogen-synthesizer-top.png delete mode 100644 core/assets-raw/sprites/blocks/production/electrolyzer-liquid.png delete mode 100644 core/assets-raw/sprites/blocks/production/electrolyzer-top.png delete mode 100644 core/assets-raw/sprites/blocks/production/oxidation-chamber-glass.png delete mode 100644 core/assets-raw/sprites/blocks/production/silicon-arc-furnace-top-alt.png delete mode 100644 core/assets-raw/sprites/blocks/production/silicon-arc-furnace-top.png delete mode 100644 core/assets-raw/sprites/blocks/production/slag-heater-top.png create mode 100644 core/src/mindustry/world/draw/DrawLiquidTile.java rename core/src/mindustry/world/draw/{DrawParticlesIn.java => DrawParticles.java} (86%) diff --git a/core/assets-raw/sprites/blocks/liquid/conduits/conduit-liquid-r0.png b/core/assets-raw/sprites/blocks/liquid/conduits/conduit-liquid-r0.png deleted file mode 100644 index 82bcbcb1b4ec8d17c179c5d42db6f2e012a4d18f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 177 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}6`n4RAr-gYUc1P3K!Jlb zVE>)`PyFWJjFN)GL&_b$H}$`4JRlT0b<>$Q>zD-;8yYfx#5Fum&`^-_V_;-?!~COG z@S|?TFZ%|EJq#Hxq6un;SQP||mWmlLE2d@%Dxc;R5?b~&Dxo2+=og diff --git a/core/assets-raw/sprites/blocks/liquid/conduits/conduit-liquid-r1.png b/core/assets-raw/sprites/blocks/liquid/conduits/conduit-liquid-r1.png deleted file mode 100644 index 8a54c43db1003edb8d40de1e175e3128675b1576..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 243 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}jKx9jP7LeL$-HD>U|8$v z;usRq`gYny-evk_gh{_QiJaKGS@lDhmnKKpxysdB zSH+$CmhpL-*nt`bmE%kiyo?H!B}p0V9)4C$tQ#1_9Hy>P>NQ$7E1#u4{^Yse3zi2k zWanLOXWBBUovGqk+%JKKdrue?lsxY5`LH^tO3?Dv1^$cbj{_L;@6EGhPhy x-pRKPdsm1rN&TZ|`{7Hyqrdn2CF~92<+{$Bo^Pr$V_;xl@O1TaS?83{1OOq~U=siU diff --git a/core/assets-raw/sprites/blocks/liquid/conduits/conduit-liquid-r2.png b/core/assets-raw/sprites/blocks/liquid/conduits/conduit-liquid-r2.png deleted file mode 100644 index d01216b2beede6593c2064c88d9fad8e4d819b9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 257 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}jKx9jP7LeL$-HD>VA$>H z;usRq`gYnuUKT|T*HUBAiyg9+8 zW7BfrnEig0>2oASPcWSk;ACJ}^lIsIOYuJIP8Ee?J_8h8U*I-XT%7hbH=&Dfvz+HwP9R4t=&x$VPf%TE&-7#J8l MUHx3vIVCg!0Ix%1pa1{> diff --git a/core/assets-raw/sprites/blocks/liquid/conduits/conduit-liquid-r3.png b/core/assets-raw/sprites/blocks/liquid/conduits/conduit-liquid-r3.png deleted file mode 100644 index b29602c27318dcc6ab4b0d58ecd5b3a2379d99cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 242 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}jKx9jP7LeL$-HD>U|8en z;usRq`gYoB-UA9e&b&!VVu{LbDNDZvgld_v{NjArkgvgHuin+-=xpe=?cLt=*P5!^ z@>I@NE96|~Zdz5=;C+Ag9+9h@-=8#YKX#{f6LadX^~dHIHB3Av$zb|^RwYN`Z{Y*m z!hA2utXQKsHSW+JE`w8ZSTrts&zj7jd^Vp!`C1?Ag$c|hljd)l_3QwPas&f+0^^Nq v`(tGoEb3NADg092A!oA7Ae>#Sp{*9?J3=9mOu6{1-oD!Mk44ofy`glX=O&z}VsG z;uumf=k49yg@+A9STAymr>MW%&!n2-T*lI$`ng$s;vI)-rOuW#lX7kc?~A{WKM((E zzCLAM-rAylB{x1E4^iTgFZna;B8PLk%zr~=!7_e}f5qRFa`u({NzQSNsD1e3cvSa> z9~VBJ-zf6%KJ#(=>-Raz<7NI!?N|O&Q}8GID~E1j%_*C^QN=aar2n$V&1FnrYmj6} zW0)}*8I=>IGv?);UCpCd9xhqtw&U2N)Om9S&uy)oo15NJ%oF?Kj^x9LrP^n$m1UB1 z|D>opB(~+ literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/production/atmospheric-concentrator-heat.png b/core/assets-raw/sprites/blocks/production/atmospheric-concentrator-heat.png new file mode 100644 index 0000000000000000000000000000000000000000..aa49eeb57da1e424d71f5eabb008d2a4d409dc47 GIT binary patch literal 6328 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 diff --git a/core/assets-raw/sprites/blocks/production/carbide-crucible-top.png b/core/assets-raw/sprites/blocks/production/carbide-crucible-top.png deleted file mode 100644 index a5bef0741f428f066a28dcfb415b4f6c369f3965..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 326 zcmeAS@N?(olHy`uVBq!ia0y~yU`POA4mJh`hDS5XEf^RW7>k44ofy`glX=O&z{ud~ z;uumf=j{zgzGejh)_^yE-}{)W8oF_BQ9Co^`?c7f|Hd~WK*lk^L1gY~_8EcMYnAuk z-lluDc&TKG$saXuPR+JCy!%fEIQ?L(=iT2K=k(&?Ki>VFF-|uQ?rW_V%UHi=h3cL# zeuLLqC*ls2=U%?+G_UKK#H|yW=eBV!G*6JfmQiq#>7A$Po1WFa9bo}064Tx=@8kNq zrX_>5Wna@endaVKO|la=HK+$3NYdoCxcB(tyRVX&?C(#0(${#(_9dlCv)zife8%6l zEm1of|4r2W6C_u~D(lL-e@c6=omero^# diff --git a/core/assets-raw/sprites/blocks/production/carbide-crucible.png b/core/assets-raw/sprites/blocks/production/carbide-crucible.png index bb09add910abef16461609e127cafa36df3f7ab2..dc23c2a8fe91f2275e9f5b022c87cd2f27575cfc 100644 GIT binary patch delta 2502 zcmX@ib6$9Yay#o48;@#?Di-9~n*G zx%0cFv30fdQ}sxz`)9BJySHbi`TMhH!uJ0wyO5K^v(Wd=x~s3Y)E}3BvMu20(kH#T z`l8KMC4AGT|8gtk?Q`JX+15qh(EsS{sJocGS1r!GF5TJiAJp2k|uiSO&(ziwIWpS~R#=iO@ zMU^kFl6w9XR^D=2rFn|$z{L0e^SAZ|O>|0;Z)rHkDC4v+LG&nxx@mo<)s8<`B=j4v zGUV7@@VRiUt>CA8-4pc?zPfv6w_gY(J9SGL#N40tt!iy43&WzVObiyA~X)(2Dg`oO0&2 zn{C9dSFiKyayA@^=r2FeViI$I)@p~x6S5E6&e`pgTWNSr;5GLqhRZE?6c61wao16! zKwwtrXG z{m*nynWuDNKC@Gc^TDe}E7bnZRaX~fVA#rcaKT#@p_O)V`>UcD89ZzXoTWtr{=xOP+c}%lesnvQF&5aSrWSM7UeIf4xO%fy;LOJc5uSav z3i2Pmu3o+*T7|`RN}5G!X<=&i>649NZ3I82X^PLnkm6(HD z&2JV8FG&qOnc37f!`k2P#Gh#k-+d@vTBlZY{D}QWzH?PdrU#Nd3tq-L_t*Eyuf8g! ze99>8(}Egv+%&$wC`p0@6Nos*f6_&$MZ`+nhbnrTxRe+KRxE^ zokb@XaV{0~wre=|u`TmZ4}-xc-FF%CwZcwZKSfNc10yf@E8Q1bbJ9}A)OWE^Olat` zqT-3`Z(2(o+F}|0Il3ce)&kZ0v$o}as$Y6PfH8wZPm_gv;WQi76VorL=pIRW&d!~5 z;{3$$?klp2PdFvH_`{AH&t7s%#EFmTwn&qI-3jjwo!v@*xNeCtxyQ6BY+Do2@+5h_ z>>{6X03s#v*mtv(Fq?NS<@}PZ+WtS+w<~_ z=|T1R$4@=jGe6|_&SoXP7>8qP+1VJ1mUMR46nZGiCrr~>o0}iY%<#c)-wlZd5#Hjw z&PKB{;@T`cQlDf^l5M6PzqM?RUWTuRP=ZoR(#M8788!*~k8>>K{u0EX_)_)F-)$GX z8UIZGu%E%oO`lbu?|rT0dqbWr3*FB~Ids3i-2B9_K01mu`g!XdYekc6mWGp22@DGE z2a`@d&v_x^v|z&In#|4mtezZsifZqU7S_p~di#Lyh^|*p#3#kp`%8~CsK!m=%lP4E z_GZeWZ%>j|en`>$RO_)PW$(IU`ZxaP*!qV_<@#K@A{gbP5V>ykLahjuPpen0N|LGA z$iY9kI3PYe`Cz@$#P;WtsX9`%KuW-R`ul9 zgwp~OU!8hpvQXtGgKkE{mi~G+<@Mdn(h+m7FK6c!|J~8cTab~;v58~h>B~lSch~t| zxhs}Cf&aoKfs!9Pn+`87uGs0mUR-Um>RuQAw|TD(6?6YBetg_FW9gb4y@O_VX63o9 ze*ezl@4~sSuWFrpR=OePn&2*D3q^(p?AKSg_J>S6yjQvAYaeH$^4C{MJnH8AMd~j{ z>%aamKhkDNI^(qYN{1C|7EJoi>S_CHy1iSVxL^^-=kvUdmpBW#=6ra^d3a*;vFDSj z65GCInOrY45f{u_xN8#+gXM}|mufZM%h_jcyQjZ#3H$WO&XYq}@pJiuvlA*Oe`qlZ zH@5Bw3+S@GbucqzexC1(Ntg#UD>33Jg3SPUf8|UZ6Vd)dQN{0LAjm;63 z3tJZKGqMv~$uAWgwyww|)jm?NDlq!~tQo5~cV1Ne$?$pBh1I*2Oj=4LA6z^n?zEnT k;ehZR_D`~N1pcuF_pDYwd29v~0|Nttr>mdKI;Vst0ILkE!vFvP delta 1587 zcmX>ve3)l~ay=WDr;B4q#hkZuz57HBd0g-RN?=>VY?yMxd0K$bFaRl>ffKIudlp*zFqytsUx?QroSnz{`%|f=N!(d z>yit1+c{uaNq3O5!x@nMoTyy|jO%Qz4Mxx#R!tvb9n##5S&}s25aQ*D#S~wes4- zZy4MQl|Skz%#=~~NnqT|vShJV#H|O53726i0*>@ z=bPsD#;P(*eZbW*uTP6rVPk#T@$K)@RRWldmM_+F2>fxiw!$!gGn4UzoS@{CX$4Cg zeB@8O(HA$E)KGTjz{g4J+Vp=rB)MMyaYaZ))!^FV_l%)J7oIB4UVW71AuHzvz1Jln ziV9kdjqww;51$cj@cO`25z2I9>7nRbVQ0cb_GulM+#vE{mFj|zX-87zMbcI-tIu|v z)gUUgiZ$eP%ER4EdweaG9{%2KuD@{U0|!`Ra5)L(-)|^`O*>J?Evjh@TdI&?`Do z;ou@Bx1DzAC+=UW%1xNPjTpJkjt8{z!g8a;lQSE zBCGX7n%Jg@UWgB7*|O9@?dJbK-?l5ZGl+;Ng~jRer(|09Flb+tv(sJ})o?~xD>0nu z4&T&mQ4Q1FT@EF(WHh^}o_OlrEZ*AhVX=lG|3U`~cOAbz^Zm&iLL9uMR&qvi{9_dB2@Q6ITQtmtJ`_Cj^+mr{H2Jb@w4LNJZ0u#>2A1`z!2zl9`kO_5Sttrv3IM~oy zZ^pU#VY{7Y)xmR0iJ~>$PF@Etes7L^T^H4$n)qeAdHw&@4E^2}oR?HG>g$_5EM_xI z@vab_CbXrBT`8ge!)BoXy?H0TuDQua0St`HilAIIq(%F<=wRT-JYCoT{@w z+@Lu=6r}g?UnFw_0|P%bS#wqTwC|t14HmUWz)0!Ez%0K@8kYKETS@h+U&=%9P z6D=02n}R$92qWUn=&n9Y+ZjXWHJ37#J!-o!b$Ffpx( zI^f~d9Qidj!I-g!MdTU}<6aidDU#>kv22+f$adug&pD2Sb04Ixn903o^x)iZZjT^i z(E~xwTipU$4V4o=&C3Z9Q+|-hR^J!5Y!TC<2LeBCb&p7v zvRn6`u9?zc(9ELHIDs*Y^TqFE)&)X~cABl=**t;aNxCtM%L8|nl%lN)(>W4YzJ`~r zJaNEX)!<{~k6A2U49T(oY?xOt)s@O$`+H4FUv&zH!#6H5KecmRc6%iL&I?deP+rL8 zcU8#5`1-|TF`HOYRYI61ecaN!Ny%)scC{5({eJcw-33R#_-S96Rnx4ep>dL#5UMni1(w`kOlJs2gkG=ausAgiROo&>sC+B6> z5Wb4k9v#UK?m~R344qq_FRxd5SirQVBKpassUNugB-UJhcDJa5fq{X+)78&qol`;+ E05>|rT>t<8 diff --git a/core/assets-raw/sprites/blocks/production/cyanogen-synthesizer-heat-top.png b/core/assets-raw/sprites/blocks/production/cyanogen-synthesizer-heat-top.png new file mode 100644 index 0000000000000000000000000000000000000000..96f13221525774633e6929038e96f640c030cbcd GIT binary patch literal 7371 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 literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/production/cyanogen-synthesizer-heat.png b/core/assets-raw/sprites/blocks/production/cyanogen-synthesizer-heat.png index aa49eeb57da1e424d71f5eabb008d2a4d409dc47..38598c0d6d587b24f6d1347321399b1c3bc335c4 100644 GIT binary patch delta 6230 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 PFfe$!`njxgN@xNAJCpCr delta 6259 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 diff --git a/core/assets-raw/sprites/blocks/production/cyanogen-synthesizer-top.png b/core/assets-raw/sprites/blocks/production/cyanogen-synthesizer-top.png deleted file mode 100644 index 2926a4396c5d307bba2e6f9463e4c1a096f7e0e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 258 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 S>t75E3=E#GelF{r5}E)4jU_Dr diff --git a/core/assets-raw/sprites/blocks/production/electrolyzer-liquid.png b/core/assets-raw/sprites/blocks/production/electrolyzer-liquid.png deleted file mode 100644 index 0ecd1df73e0b500f0f9069b3ab900378ed2f0c83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 392 zcmeAS@N?(olHy`uVBq!ia0y~yU`POA4mJh`hDS5XEf^RW7>k44ofy`glX=O&!06=Z z;uumf=j|Quyu$`Ot`~RwzF%y-QjM|cnfqja%XCJ*)zKDPTYeQWGC;tNufLa9_m#`s zW#03u>|y`ojz5t~?fbq*&zDfld+ zN_-L!`h1VD@*J~(TMvImZuI*(Vaw6@a~%Qy7*}@h4{_JnTk-3W{#3zJdV5Yk(hn8% z(%W_Wk-n(l8&=a|?y7(*x*0cBot{kpFiB4F*ZB*oriaA%lf0u^)^1apmuj5HaQh;& z#RSO%6Q3~fJ!SvEFEvE~;x1IDMjmrtvKb4Bb~hPWFh2lUqKbZk44ofy`glX=O&z_8fU z#WAE}&f9B-e1{A~Tn^^Ht53iDfKAeIf>QO`nMPNS>30UPGN6DZnXB3VEdG8k{d#nE z;df#4AD18UX9_MlR%iW3QS(sp*9Pl9Qd#VV{-+9_76{*KdCPuoj)>wX;Vr)x#tBL; zcr}M(Bjc)b9RjiowCtT~8dkmG*myYo-v7QyhmX9{UtNx36$1mqod=u?E~`kVR!@`y ONqM^ZxvX=&lwoHuZJg8R&ETd->asen)BiG(chbY9G( z2K8PH?{b&BaIkJzRnHZ1yVulxmhTi3ea~R!+`eUj^*oDiwJAk>;Wzy~NA2o=XHdUN}kJShU*2n2$(wVd=hQ* z;S4|b=?BCct2cxQ);uy4EIKj$ z-#X6ECwEM-bJSvT+fl!^<;L|A-*U3@YtHPR z53NgrzCL)hh&7md!i4_V)q(~SuN+>bXLp9>z=`|Tbmc|wwm3)T|d%(e)I1CFF&ZhiLEvdV{4tIf4D>`sfD9YL*7y;;d?@* zzw~8pPa&lQ55a{;va*^*4%i6DcO2kUQk>>JS!oxWg}&DoJ&&SZ@8aZ#+BOf}1=Tt# z|IX8O?orV9Yq=nMw%2uaOT7x?v6DU@jkzTff^tv%^e4a9del=!x@;Rweo$l~zwQ`InCN6+wJ*h=nt_q+1h z$7(*g|7U0MJSo21mF3y2{!0z^W&dZeX8bzOpLgGP6$e{7r{gef{bRJ8 zOQXhHV(JRdy7wo$PJNmXSI(&V-=@hRc3pwumhk8wcecbbM!m58X~HQk>?pN3_WvXG zDSsk<2?-|U@4uSGecbnU*Pjgw1mDPdDZ70jx>y1uv%)Lp?xbyU3$!;O~3m@0;Kg!|ckar@87$|%?lEEBSTAzK#Y6GFV(-gLzcZ6>&+q>$-=<=?Q>-FJ2YvNPY93|HRI@L936wOYhgY?Brpy-AIY; zoRG#sw`mS*Ito^7)meHf<^s#l1!UVBrUV8-0dgI+5sZEqAP&(t|pmvnir$}78!(m||Q_DLAhk5^d z?>0Z>We65sIE!JD#b)o~$8SSl?D@e^yxZHgS-!mf`O$X4pLhIZ8+Nrf&Ys$`wrQD* zMkL1sE-#jzn$wOmeBaC*CVpqZynm7R#~*J?D(2jtXBmZvx=UTO+VAGd#%o`)ci_N%ef6_=gnKUbB|if z(aoLvl&3Wdz4zGUp|xgueB3E7bImpTmQE;*n^4a(ZQ2CsrI&U5nNEhZRYZ0@WlmbX z*07{4cbi=E;UDH~PTU!X+B+wm zk1yV*$D!>ZZQ8nZU40iv+I{{FC%iWm2JAX~dDp)n!CO}{pIEX+KX(+Ivup3QUH|5A zWb?nTzjY!kyLRdpmPwtP4d!Sl-Y=Ts!#Mj?+5M^VS63VnTE;m4!=&D)rUFq-%JL5$ zn?J2JIV!Z}eEqy@x8Em!{Kb{??@vWf@t3vxbCgUPYZ&%S?KHEV?%JX@ncsnf!Qi)& p$=n(SH-?6rqKRTB*cpC^m#--8OnI~N6axbTgQu&X%Q~loCIG42B5MEu delta 2175 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 C8Lh?u diff --git a/core/assets-raw/sprites/blocks/production/oxidation-chamber.png b/core/assets-raw/sprites/blocks/production/oxidation-chamber.png index 0b744657269301c164e2d66980333f11cd33985a..ebee304b7b0c3eabe476dbc98b53de343523d02c 100644 GIT binary patch delta 2648 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 delta 2499 zcmeAZ{UtoXK#X&Xr;B4q#hkaXXS3(HO4M(T!{ z(6}b_Mv#`8+@+i6&e_d3KL2L6Q++_j_V?EE`|sO){&>dt^SQe}UOmg)f4^DCCboV- zU0GfA(yX|xm%pFkW>{c+<9_opNfFf~&5or_mhZ3m*&k@GVQAoEIMA)o^mOj6m(>&b zKlm^-eAYcwDRgFXO@l{0h~uQY#na9~iQ&K-*NVV^)qdg|BwBJ+^XpBv=4JVCJZ>m86FIS5D{rfv=b2@aK9=%~Dbv~P zUnxCdW_TlaFFk(qr1gzQg}m0ZHCs{{LNPXBC~CuA?9xCnnI) zDg8Y0Zr#?i_14Ot7?&OIlG6RZ$1&5=Vla7Wv zbaLcQct3IbajDe0>ZfOzZV5Rm9Y|KySvpak>~b-r#Zb3oLE+$<|cTgl$9YTCvR?2 zUUz_j_RlN%hEB7lxMt`aoL$p!M%FM>mcb#~X;ys4HjWE!h5;JAn-=IeI@?_<=qf+5 zLG=BrrTj~-2Y4Si(xjoFl&Te2T!!^ zS+K=vr&7kTNg^?Ecm7XY_xa3@`BQ2%%cd~R-re?xVKs-y&%bs2zy8j<`O4&Hb*IDD zKQe+R9B(+)@ti$yN4E6Bm&;rxXA`viH3NKt-L&%8_g43mWCe&FzRbL%D>1G?waJdexW zqSg>n=r5?Eogds1ru#rOj_ZO|9M=V-C}D?LwH5cyEBx%dHHUL+7GucK?3g~s&I@Wk z85qQOE$;I!2-Ra^{CspZ0`~ec;OG>vz&MngP^3#}>_bMZ~tthFx zX=;7{%=L;+nm-v$`#ZfRoX}O2S15F!thUQ%KKqRucdWh^xO;CXao?CA7d?A>-hIoh zI~FsZyQ8uC!yM-|-K-YRrHv$11dGf|Z{3=ZcsOW{QUqIZo_A356rIfGm|Isa-jQB- zR+}|^`I-|JJ}q-*hOFZV@jlxdv|+;er>Uy)3dTly^`fffQr@i=MJa`MUHX{y+iP^z z%Y0&-!fm)dPu;crN+7G>)TZ5cSEXD$&S^LKgvI&`M`kHytP@+U+QhbM1xJp|g$eWB zJc=Llimsd>q;XeK>K)h9hS=2t-4lw}GMP;NnWg{nbXU)5UjOOe+HDUDF16XSKJ>sb zpuE+@x{vvmwL^9ZOWH%VR~tZ%_5gbrxWp; z40O27@{3K_X8OWu~Qb?Uhy6qKko zr%>+Q3zd2@@HILdsRT= zfBlaL*K_S!72FDGc9(4SvN4JU-rljk!zxud_KxE{ag&YK(<&$Ud9#%7+GqVLMR?c7 zou#LIjl9-{b}am89%!c=vTaLs{lboEhxVIJQ;5wCxHM~Nx%awIjth0}4N@DHvn=@a zO-d<)V+HRzp2C}kf@|ap54bGQe{G=P&cgdsE;zS`;$`q=N!JDs=@WQ zzT6EG)UnBMJ#lNo$;#zRo<8qz*gILSr zHR19pjoB?)@Uw^xrS8wOjnY+WqzQUX!@f z6aVFlP5NVNWjSbt@A6VIV$trN#1HFc& z3rzRS3yU}v;LH-vmNjv{a>&{*dtD2J7nGg0_iw7~TCi{1rPU5fs(1U+(pQ)LVvM_g b?~nXCq11~K$pV243=9mOu6{1-oD!Mk44ofy`glX=O&z}V~Q z;uumf=k2YFMa>30E*F>n|9}3=(j`+GJsXtPuBpCf99HvqM~W6B0}`0=yz<<NxE`UiVwtZTWR_(bI!jTP9C1dvMRKtS6zEN$jrD68>wpO-BRfD!1@% z$+>b-t)y4L=uBC2#|Q1FmJc#Ee=|$_^1S84`UUpg#X?E?iArzQ$nRAUG|Nuc@oKrc zOS0R`rDCn*-Um{GJo8$1yL<2}eC{c?+oJa^D-^z|CkU1b^~L?4VgzO_is1dc za-z}=o}z0Sf;w$GvRXJ^GT#Zcb^6J0=_|+0+4{Uf4p#C96F)C)Wb&97Z}>ifzua{z z$F}CXftpS;=PR8nxcjE;nf%RSq%dV*U|_0c-jLAagTe~DWM4f+MB*+ diff --git a/core/assets-raw/sprites/blocks/production/silicon-arc-furnace-top.png b/core/assets-raw/sprites/blocks/production/silicon-arc-furnace-top.png deleted file mode 100644 index 486fd5d12375124377c3af57716632a73d020227..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 442 zcmeAS@N?(olHy`uVBq!ia0y~yU`POA4mJh`hDS5XEf^RW7>k44ofy`glX=O&z*yqx z;uumf=k2YFdCdj_E*BU6|9}3S_e23+ret^P-TR*F26=2VHWLWpWIzQ6M54bi_;0-y zb^iDET!g1eq`5t*6W7s;Yy)@lfPTPZ}}iwz?aUy)clYC z`t$QE%WGOLh+f!zYki;X=`F&C_WcN!SiF6vzuoDzEgOO_nCq=`kMwh2c)cN6VsC5B z;ua3G<~^pLOGE;Fe#Bl_F>&q#g<8f**EN@hcQP&6qdG;?VVB;)opXX%J^mjqFVdQ&MBb@0E%0=WB>pF diff --git a/core/assets-raw/sprites/blocks/production/silicon-arc-furnace.png b/core/assets-raw/sprites/blocks/production/silicon-arc-furnace.png index d4481b2f65327497a880ef38f81d2ca34d0f401f..0c7055569b6a8000ebe55556b1ab674f2dfa7a52 100644 GIT binary patch delta 2639 zcmeC-R`2c-bXSa(!{x%%A0Rn&!_QPmx3!vq+^C=2<7xOC~;?I@R>! zuRnic-fvrQ!9_rS+JyBJom{?LpD%s!#g(4umjW-9rcC&M>vi>^mk|?OW}MQWV^do7 zBGsr}{NAY!woZd1dYV4jpXvjni#%AXXDg}u&%MWEQ2sz+NzsuBvt|jLHMo6`^=FWk z;1bis&-16$w5dCJYHA2BT*CHsW>_x=v(n6(HZ`V80$GW2fB!`v2~$$Kwf%p9M$KuH z2{u!^3^trdf1>2lBhk(gJMnymCX))o#c3R>o!7ezHvc}GyML=((7%24-@fqIYy9K* z*%PMJ^QFmT&00Ni^;LJ>y-NJ-Cf?cLb$v;CptRR#kzDaa#%FvoJg##VFR6-RS=JJ5 zE9=rCqq=QbM+XDvgNglW5+@~`?p%7rbmeSMN5icbPbHro$z@hj-M{3?lrNW~7p1IH z3_4`%cScH}_U)7&?qBoT*7@%Ks?!+7oK=7C=d4%HzvoC6mnK(BtXH#%*(bm0;o9c+ zGrkvp(!DLA%G$HAQ0W>&@1Lz#Q=_6|%Y-NM_!?{c-R6}%rRKe4cg;(4LAQT@{>1Dk zH&JSE-S@?wNz?gKsb`DOr?u&}pZ30%3VNihBUz{OL&48~&*F72?Fjg! z8c{i^{@p^EJ&#y7bi_r+u9K4&5IlQ#r{nba9N#m3=g(aFoZi3sv9F=6vG?};yLbN7 zW?rB0V)J(ALJwocc?S1ZXRk6_{ByOZlwo$Sl;Fj?+58Tdr}w|l<{PF zh5l;Ju*OcO)rNOo-_Bv)GArO$*T*a-C%cOpjZ!}^*{&4x%v`dq#M4gsZ4v*cpwI6% z@*ioBy4JGO+T87s=aD59|K4o$tm}GwypL~h_>2(YYxn+(bjmfk)$Q{zQDO+3$&uMs zWE3p8LvhO?C)ihKUf)ps zNpc#;PTolzLDNHp6rJoQ8uI=4de8sS*FC-yPE22S{`~n~o7>_)!{$ul%`BhFA-~4; zqwCJno?thh#DOdXu;s`mX!x?uT}nSJ7pj->j%i+5j_YZ0Gh<8#%o>Z#Hbwry(nH!t@V{B(co z6M4I$N2$Coyju31{C?etYmXDBK&>kQs!HRGX&cvyyx8))s>(dr+6;@ z(yaRJH@G*sKyquGwU30?zOUB(m#ghu^_VslWppm6tX*+8z>}r>&mDgDN`E89SsW)e zzxXO7C}H_?+U5q8rl&>8eax3MUvm89@n+fbMd|#a@7^vKyzI1^wm)_gZCK7}BVKf# z*;jaB_c2pfZoxg*`<|N}z7si5a6)=aNp(P1eg3|GUiX*GnII^-gj=v^f%gKTqI0Wk zAA2QCJilR?z=ZU@29HG)+h0qjPn4HcR(P`Ap_fBrky1o&o}N>N(YmFZL%gqSQC}-q zTFHOD?Vo;A-=x26p_eaCX7g?F6mWNrXt?ILd2OK4+>2bQlS>pC)#lc?rC2RCU8IyF zeBe_}_oVvzZ+BYNPIoTN@Z7gOXZB$s#q!HCD;byCEf6}U+r+vhTT1nQ)01<0`9=PGXIN(|v%i_OV&`&!mr8F^ zK1t5v5c|2Z+iPR?qAM@lTz=?JIDf*`;beM5?k{5aQ^Huo?joB z>aW+d+mqil&dOx}ufpyNhy1r}tMzuBq4cWnPhqFR&XpD1_HsXCI|KFx-q!wE+dV<3 zpKr&7N%vbhLN8yOR9(O8iMRc^>l4+TuGrcZo#Jkq!0`K<{H;Hm%NFzpx11>X0;;4g z8LinqJ5EUPsTxxRgLcx%2Qe(!?w;XF6;Ff{cbhM@<-hi9ZwJQ&hQLpfI!v4X?teWi zVQFfo!o>3#icQ)Mz5W7%7u&->ynJhSi$#~$v*p%eZh?0R*N=$2n8jE>eNoNh&8>Q_ zA0GL+KG=Kq#Y5R!J?R^>mAv+C^EKVC*LflRy+^n3O{dkJ6XNv+9YqwPKJDEb(i75R z$DS?sb0zQg{JSlDbDj7~ycTv|_*rNw^y%(rm%7mSsF;SmZ_mx!ZSdvS^GP2nt6S@i zI5Aa~Fm7>OsrvKcL8*(^HpoWads1(3O=i!OYj?Bx-Kt8iH9nOyd3Z(Ft9Igf2iFsw zTU<`O_f*Pw;%z2Ws((nqK6cfUGZuAhwih&AZ=KKE%Q-7iHhkq=)JO)3$M0JxiD*SPiLGM&-Xh4FPE(T5~s4KZF=wh z`fJAb%B~CP=<4M}8|?CRnO=7F`0h=c!oC`|KYGs|QO&6|+h$3!)^01yaI4!)ty9%I zGq#i+m{)jWwHvcl#N=ygQS)Vcy95N=I~Igb4hgoh+!rT&(Mt1Tw8W=53yLZZMP7a> z^)puHWqzIGVwHoF@?P)Qv(DQ}L3NHu^)c6zcRcH#OkXB@cJcMlRzH9D5O?0wkE_1C zx}Rk6#G{47Bz{@#@5hhjrU<9Z3HbB3;Y6+5l3z-46_<@SU&v}~|rv~!)gYEP_X zQ+@B(y<PQ_cxLv0K+RcrrtaJ(p~)oS|TS?m_BbY+6PXM4t!DeGK1zVJl0 z{P|&4cxmxg4&4*(mlQ8~X6ib5ZjZ6z*-){VscTYCb@OTuXOA0Obv3q3mN;v9JxcJ{ z%tYSD8%|nvUzz(wPc%{JWcruP+2sN{TV4r>CQdq;{v}cQ)54B=hAnSj|A}2wwSa+v Ofx*+&&t;ucLK6Te1na~A delta 1662 zcmcaE(#JbNxt=Z5)5S5QV$R#S-hFq?1YE1bPae?raLcXcG&JJg)DqYBaAWy{mDi`S zWHs~6UUhzNsOu+A0Y<+Z+t815)IX~4t*c@>^;|#xf9fmw`Tv$^ODji*Kk3+@+g{Jg zsa<@V>HkF4HzzW=|IFn5_xio~MmwcH6IwhNcuxgtOXnTksNzyz)N#bq`^Vew{3Q(h zUQ=0A`leKy{>c>L`>}QrV}M2^r_UU_?~xx)tA6P|gny;ZO&a3F05-=j+>RYd^fZet*E!*8Hc_8s8fRrXL78 z`-QWXIg(SS#@|WBeA(HamdOnKc3KCs6|@w&;wLv8m|m2;zu-mTgoZbJ4rDE?H|Y0=J%Wyd7b{rlLQ%OiTFG5H%(mdHhsefQ%;VEEm=%a^S_v=o&Lfo$;naU z*|dFe`ayS(-XB*0>z{kuO)1HYMetIqL!;l^>H@rpXlDUe)&A zbApyple2pEwMiYC3=zVe8dLO#6PcZGv&SmC~#!RzV@_SRvQ`RdKGjnPv*FWIxH*|1o*z&Yo^~c%>rYP&h zOnyFF6s9q}EnCXEQ|M2aj^3@@qrwVB8-2W)*6>B|J);-3MStnljaf`rb~lypbbT=2 zYF4+{>U)hXWn7U3M=Gc+%D4p+Eu5PnacwhU%qDV8Iz3NHNH`OSW>AU`k zxA_tFJJ?(Bd(xf$O{IqK;`;9Gk-5usSK3J0Eag|i_i0Za>7EpPRliqre?f3uQ!p7*|zv^#)T4cs_f6{`pO2^yQPFisE zqE*Pt9jW%A2M%0U)43K>mvbS9Q|ymn`?Tfi2X}V`a9*xo=eFvMz}BnRQw~1T<;uGM z!q7k8c&XE&EAly;)`_?sn%%V{so3+w|=eeQHom?G#llGj960PxOGHTy=tIOj< z-~3O9*RE;!_#^Ab+O*G?Zk_(dxP^gpRoR>po68=#^DU#c_9~m1uiyJZzVlL!kWtVdE|M_j{LET!9;;8K1+kkUhAN>{N(6*R^hj1q5s%r_V`7wl3NpLIw@PV zCY(X~gV%>}&kt^%sr5(HXW4wd;k_)YaMdlrMt<%OOljv9Hae;-2%jjrc$Y0tjaP%H z!RJWsK2^rOQ!Ag(zo?eBvPno_szB>|Tb5^@4(H=hw?KuAka+#=@2>bsNi+iQM(uTDm-gL{8~& z>L`o<)8Q2T5XgD!`6^Wx3C9n{LaU_YrtVdquK8iL%A1@I%1=d_=1=|5@uB?5v?lqf jA5MG-f7Y?#FaNm%`_A2;TNcW|z`)??>gTe~DWM4fmw*2^ diff --git a/core/assets-raw/sprites/blocks/production/slag-heater-top.png b/core/assets-raw/sprites/blocks/production/slag-heater-top.png deleted file mode 100644 index cadd63b0c69f026336249996582a3c724d778ad3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4mJh`hEk44ofy`glX=O&z!2%_ z;uumf=k29HK8FAS<^$W`)j$8*+|gmLbtY!P-L&Hj5b$roq=$F!Mo(PjG5rR^@5kYt zg3FdOubQUyT(&u2o=ks{py;bkly*mHybeY}NzxP7I zL+h{ovG{NLt+suV#cgS|{m=ESelLB~VjvynZDY&(QQi1~@XGqHeQd@IH_Qa1CbHjS zVc6#0GVKYYJ43=}r7ddw4A%cz6SuN3{AdhRITIJR+`{A61gRV8S6uH4FNrJsr%<)0 z>+BV~$xICYT`%x;PEyLqUHWCN=mHk6jtSYyYE70lRG!IcXW1YZC4yOOtwJ>t`(q?Ik< z895&JJcSNSDzD!zu<+>aS0)kBEn$YPBFr^A3=eh%T6-M3HBsp#vs0$w_MB-Bm;A~! z-!uz1?uv6}Ii+^pZ>kQ%5pI=Sb+22Kw#~K`|6ttWdQu_Gc-@;ncT|@#o$s%YsQED? zCnZAH_1?n9_y-;*|NmoQczy3+T4VB3j&<$$%oh?>>L;eysnLd%%jlM|^o`Ng%uYbSW^5O+UhH}&X{X3?yX$pExHMxI& zpYMs?-;Wi_^cp_<_ik3~@+nHG##>*l+Q2>CrhSI`6$fL+8j0jt6L}JonHX*>9&%%4 zSf-Ry?=&HeDdybz8wb+vCDc#nYSN52%@pFeMdQkir+>0~SPxHnvhr=2y|IstLojdA zgQD^i!g|lcl|z%V)!jvE0`IYEc;0hTYTElOtj8hplh`_rXCGda^h|tyjWuZbQ7NHG zmG&vFy(x2}ocVX%#U9i|O z1->-%%GuY!GNI<`BsqnRs%JSKF$-y4&)#95y7@@o#8(Y2FY3;2e7{}!EQiRZbL=}h z1g9Ts5$W%q8|md(Kl$YbHHB;U$~T;_Q`pG+K1j*LS|RY4>{{M%mQMGMB!@KzR&I5D zcYA8e5{V;*3tS&w-o*drKdXvthG*PucD-Ph@rB`5)p@X*5$-eAd-qopF{4|2Ney{j=b%|N<>1R(&G=vh(|Jns|7PYB_o0;F2 z;-2fcqR`_o>r+l&Ru9D+Q7vgq9vxdn7Ird7Ijwd1!5w!XpYh1&&!!9v3=E#GelF{r G5}E+ui}02J delta 733 zcmcb~@r8AQay`>-PZ!6KiaBp@Ir<$o5MaG9kH74IrGWbjLxJqP1JgDKUh!Ic>4D_= z|Mh81i#+ZvI5O|QN6zu2?|(Mg@7cF^`L^}_e?xEYl3)M!-8*^yn;fqX&3t71i-S2u zxu?sWX~p+ohM62;4IUg%<0KWh4{|?bO?>aoxP5K1txUIxSq5SU=dfHnw~c4L!U2YRkGG`$@ZdFK*yaC% zqo+rkal`DT?>^kyVd7A-c}nkrw(ZA!Sy#9P9Nx~LBWT3k-;%}Jp^)kWr{!s?6_ z#g12%Whz^*WIwERxHeBw`A>ZY&lWk!1H1M;<_y^A$1vZYzdg{IVb`-pkN;tJuT5XZ znV@(^?eI;Zmv`%P1X;d#emo}`!@zd%wz|vv(>1`z?-jlhar!_ykS4@hjg`r^?P~3@>|k4o;zHu zlVB)T4%sU@PjQX2>!HmI_S+6!m3N+4UMRw|Q;c;-4Nqu2-)4^IC&L{%YWd1r+y$>` z2dFyToG8(q@Kw6jG@xaYbKp15nGfBr)mN0*X;_P`XWJmK=T`gbiChbGCVEw9hiEob z<+3t;67gX0C=@MbFyfEkFkuLa3H@==Lc>Y3;gg*9`U&kHvKcOXh~&sEc5tl_U6?Dn zg6F(a#NR1zn6;R+74Fq)GK4Y4KAb9bh(W`tykZ$!_EL@ivX%)kjU2Yt28K! { + color(Color.gray); + + rand.setSeed(e.id); + for(int i = 0; i < 5; i++){ + float len = rand.random(6f), rot = rand.range(50f) + e.rotation; + + e.scaled(e.lifetime * rand.random(0.3f, 1f), b -> { + alpha(0.9f * b.fout()); + v.trns(rot, len * b.finpow()); + Fill.circle(e.x + v.x, e.y + v.y, 2.4f * b.fin() + 0.6f); + }); + } + }), + berylSpark = new Effect(21f, e -> { color(Color.white, Pal.berylShot, e.fin()); stroke(e.fout() * 1.1f + 0.5f); diff --git a/core/src/mindustry/core/Renderer.java b/core/src/mindustry/core/Renderer.java index 09f8e1c73c..d9294520ea 100644 --- a/core/src/mindustry/core/Renderer.java +++ b/core/src/mindustry/core/Renderer.java @@ -53,7 +53,7 @@ public class Renderer implements ApplicationListener{ public Seq envRenderers = new Seq<>(); public ObjectMap customBackgrounds = new ObjectMap<>(); public TextureRegion[] bubbles = new TextureRegion[16], splashes = new TextureRegion[12]; - public TextureRegion[][] fluidFrames = new TextureRegion[2][Liquid.animationFrames]; + public TextureRegion[][] fluidFrames; private @Nullable CoreBuild landCore; private @Nullable CoreBlock launchCoreType; @@ -113,14 +113,7 @@ public class Renderer implements ApplicationListener{ for(int i = 0; i < bubbles.length; i++) bubbles[i] = atlas.find("bubble-" + i); for(int i = 0; i < splashes.length; i++) splashes[i] = atlas.find("splash-" + i); - String[] fluidTypes = {"liquid", "gas"}; - - for(int i = 0; i < fluidTypes.length; i++){ - - for(int j = 0; j < Liquid.animationFrames; j++){ - fluidFrames[i][j] = atlas.find("fluid-" + fluidTypes[i] + "-" + j); - } - } + loadFluidFrames(); assets.load("sprites/clouds.png", Texture.class).loaded = t -> { t.setWrap(TextureWrap.repeat); @@ -136,6 +129,26 @@ public class Renderer implements ApplicationListener{ }); } + public void loadFluidFrames(){ + if(fluidFrames != null) return; + + fluidFrames = new TextureRegion[2][Liquid.animationFrames]; + + String[] fluidTypes = {"liquid", "gas"}; + + for(int i = 0; i < fluidTypes.length; i++){ + + for(int j = 0; j < Liquid.animationFrames; j++){ + fluidFrames[i][j] = atlas.find("fluid-" + fluidTypes[i] + "-" + j); + } + } + } + + public TextureRegion[][] getFluidFrames(){ + loadFluidFrames(); + return fluidFrames; + } + @Override public void update(){ Color.white.set(1f, 1f, 1f, 1f); diff --git a/core/src/mindustry/world/blocks/liquid/Conduit.java b/core/src/mindustry/world/blocks/liquid/Conduit.java index 62d42885f0..75f50a2d10 100644 --- a/core/src/mindustry/world/blocks/liquid/Conduit.java +++ b/core/src/mindustry/world/blocks/liquid/Conduit.java @@ -23,6 +23,9 @@ import static mindustry.Vars.*; import static mindustry.type.Liquid.*; public class Conduit extends LiquidBlock implements Autotiler{ + static final float rotatePad = 6, hpad = rotatePad / 2f / 4f; + static final float[][] rotateOffsets = {{hpad, hpad}, {-hpad, hpad}, {-hpad, -hpad}, {hpad, -hpad}}; + public final int timerFlow = timers++; public Color botColor = Color.valueOf("565656"); @@ -31,8 +34,8 @@ public class Conduit extends LiquidBlock implements Autotiler{ public @Load(value = "@-bottom-#", length = 5, fallback = "conduit-bottom-#") TextureRegion[] botRegions; public @Load("@-cap") TextureRegion capRegion; - public @Load(value = "conduit-liquid-r#1-gas-#2", lengths = {4, animationFrames}) TextureRegion[][] rotateGasRegions; - public @Load(value = "conduit-liquid-r#1-liquid-#2", lengths = {4, animationFrames}) TextureRegion[][] rotateLiquidRegions; + /** indices: [rotation] [fluid type] [frame] */ + public TextureRegion[][][] rotateRegions; public boolean leaks = true; public @Nullable Block junctionReplacement, bridgeReplacement, rotBridgeReplacement; @@ -55,6 +58,44 @@ public class Conduit extends LiquidBlock implements Autotiler{ if(bridgeReplacement == null || !(bridgeReplacement instanceof ItemBridge)) bridgeReplacement = Blocks.bridgeConduit; } + @Override + public void load(){ + super.load(); + + rotateRegions = new TextureRegion[4][2][animationFrames]; + + if(renderer != null){ + float pad = rotatePad; + var frames = renderer.getFluidFrames(); + + for(int rot = 0; rot < 4; rot++){ + for(int fluid = 0; fluid < 2; fluid++){ + for(int frame = 0; frame < animationFrames; frame++){ + TextureRegion base = frames[fluid][frame]; + TextureRegion result = new TextureRegion(); + result.set(base); + + if(rot == 0){ + result.setX(result.getX() + pad); + result.setHeight(result.height - pad); + }else if(rot == 1){ + result.setWidth(result.width - pad); + result.setHeight(result.height - pad); + }else if(rot == 2){ + result.setWidth(result.width - pad); + result.setY(result.getY() + pad); + }else{ + result.setX(result.getX() + pad); + result.setY(result.getY() + pad); + } + + rotateRegions[rot][fluid][frame] = result; + } + } + } + } + } + @Override public void drawRequestRegion(BuildPlan plan, Eachable list){ int[] bits = getTiling(plan, list); @@ -138,17 +179,21 @@ public class Conduit extends LiquidBlock implements Autotiler{ int offset = yscl == -1 ? 3 : 0; - //TODO move out of conduit int frame = liquids.current().getAnimationFrame(); - TextureRegion liquidr = - liquids.current().gas ? - (bits == 1 ? rotateGasRegions[(rotation + offset) % 4][frame] : renderer.fluidFrames[1][frame]) : - (bits == 1 ? rotateLiquidRegions[(rotation + offset) % 4][frame] : renderer.fluidFrames[0][frame]); + int gas = liquids.current().gas ? 1 : 0; + float ox = 0f, oy = 0f; + int wrapRot = (rotation + offset) % 4; + TextureRegion liquidr = bits == 1 ? rotateRegions[wrapRot][gas][frame] : renderer.fluidFrames[gas][frame]; + + if(bits == 1){ + ox = rotateOffsets[wrapRot][0]; + oy = rotateOffsets[wrapRot][1]; + } //the drawing state machine sure was a great design choice with no downsides or hidden behavior!!! float xscl = Draw.xscl, yscl = Draw.yscl; Draw.scl(1f, 1f); - Drawf.liquid(sliced(liquidr, slice), x, y, smoothLiquid, liquids.current().color.write(Tmp.c1).a(1f)); + Drawf.liquid(sliced(liquidr, slice), x + ox, y + oy, smoothLiquid, liquids.current().color.write(Tmp.c1).a(1f)); Draw.scl(xscl, yscl); Draw.rect(sliced(topRegions[bits], slice), x, y, angle); diff --git a/core/src/mindustry/world/blocks/liquid/LiquidBlock.java b/core/src/mindustry/world/blocks/liquid/LiquidBlock.java index 1f84ba73c9..a73d85d506 100644 --- a/core/src/mindustry/world/blocks/liquid/LiquidBlock.java +++ b/core/src/mindustry/world/blocks/liquid/LiquidBlock.java @@ -50,6 +50,8 @@ public class LiquidBlock extends Block{ float squishX = rightBorder + tilesize/2f - bounds, squishY = topBorder + tilesize/2f - bounds; float ox = 0f, oy = 0f; + if(squishX >= 8 || squishY >= 8) continue; + //cut out the parts that don't fit inside the padding if(squishX > 0){ toDraw.setWidth(toDraw.width - squishX * 4f); diff --git a/core/src/mindustry/world/blocks/production/GenericCrafter.java b/core/src/mindustry/world/blocks/production/GenericCrafter.java index 65134a9104..a04f04cd98 100644 --- a/core/src/mindustry/world/blocks/production/GenericCrafter.java +++ b/core/src/mindustry/world/blocks/production/GenericCrafter.java @@ -29,6 +29,8 @@ public class GenericCrafter extends Block{ /** Liquid output directions, specified in the same order as outputLiquids. Use -1 to dump in every direction. Rotations are relative to block. */ public int[] liquidOutputDirections = {-1}; + /** if true, crafters with multiple liquid outputs will dump excess when there's still space for at least one liquid type */ + public boolean dumpExtraLiquid = true; public float craftTime = 80; public Effect craftEffect = Fx.none; public Effect updateEffect = Fx.none; @@ -109,6 +111,10 @@ public class GenericCrafter extends Block{ outputLiquid = outputLiquids[0]; } outputsLiquid = outputLiquids != null; + + if(outputItems != null) hasItems = true; + if(outputLiquids != null) hasLiquids = true; + super.init(); } @@ -169,11 +175,22 @@ public class GenericCrafter extends Block{ } } if(outputLiquids != null){ + boolean allFull = true; for(var output : outputLiquids){ if(liquids.get(output.liquid) >= liquidCapacity - 0.001f){ - return false; + if(!dumpExtraLiquid){ + return false; + } + }else{ + //if there's still space left, it's not full for all liquids + allFull = false; } } + + //if there is no space left for any liquid, it can't reproduce + if(allFull){ + return false; + } } return enabled; diff --git a/core/src/mindustry/world/blocks/production/HeatCrafter.java b/core/src/mindustry/world/blocks/production/HeatCrafter.java index 7505ded727..e63cce35be 100644 --- a/core/src/mindustry/world/blocks/production/HeatCrafter.java +++ b/core/src/mindustry/world/blocks/production/HeatCrafter.java @@ -29,16 +29,9 @@ public class HeatCrafter extends GenericCrafter{ bars.add("heat", (HeatCrafterBuild entity) -> new Bar(() -> - Core.bundle.format("bar.heatpercent", (int)entity.heat), + Core.bundle.format("bar.heatpercent", (int)entity.heat, (int)(entity.efficiencyScale() * 100)), () -> Pal.lightOrange, () -> entity.heat / heatRequirement)); - - //TODO unnecessary? - bars.add("efficiency", (HeatCrafterBuild entity) -> - new Bar(() -> - Core.bundle.format("bar.efficiency", (int)(entity.efficiencyScale() * 100)), - () -> Pal.ammo, - entity::efficiencyScale)); } @Override diff --git a/core/src/mindustry/world/draw/DrawArcSmelter.java b/core/src/mindustry/world/draw/DrawArcSmelter.java index b8b43ec815..8bec2c68ea 100644 --- a/core/src/mindustry/world/draw/DrawArcSmelter.java +++ b/core/src/mindustry/world/draw/DrawArcSmelter.java @@ -8,8 +8,9 @@ import arc.util.*; import mindustry.gen.*; import mindustry.world.*; +//TODO make non-standalone? public class DrawArcSmelter extends DrawBlock{ - public TextureRegion top, bottom; + public TextureRegion bottom; public Color flameColor = Color.valueOf("f58349"), midColor = Color.valueOf("f2d585"); public float flameRad = 1f, circleSpace = 2f, flameRadiusScl = 3f, flameRadiusMag = 0.3f, circleStroke = 1.5f; @@ -17,7 +18,7 @@ public class DrawArcSmelter extends DrawBlock{ public int particles = 25; public float particleLife = 40f, particleRad = 7f, particleStroke = 1.1f, particleLen = 3f; public boolean drawCenter = true; - public boolean drawBottom = true, drawTop = true, drawRegion = true; + public boolean drawBottom = true, drawRegion = true; public Blending blending = Blending.additive; @Override @@ -53,17 +54,15 @@ public class DrawArcSmelter extends DrawBlock{ } if(drawRegion) Draw.rect(build.block.region, build.x, build.y); - if(drawTop && top.found()) Draw.rect(top, build.x, build.y); } @Override public void load(Block block){ - top = Core.atlas.find(block.name + "-top"); bottom = Core.atlas.find(block.name + "-bottom"); } @Override public TextureRegion[] icons(Block block){ - return new TextureRegion[]{bottom, block.region, top}; + return new TextureRegion[]{bottom, block.region}; } } diff --git a/core/src/mindustry/world/draw/DrawBubbles.java b/core/src/mindustry/world/draw/DrawBubbles.java index 14323b8611..57377a1751 100644 --- a/core/src/mindustry/world/draw/DrawBubbles.java +++ b/core/src/mindustry/world/draw/DrawBubbles.java @@ -13,6 +13,7 @@ public class DrawBubbles extends DrawBlock{ public int amount = 12, sides = 8; public float strokeMin = 0.2f, spread = 3f, timeScl = 30f; public float recurrence = 6f, radius = 3f; + public boolean fill = false; public DrawBubbles(Color color){ this.color = color; @@ -37,8 +38,13 @@ public class DrawBubbles extends DrawBlock{ float life = 1f - ((Time.time / timeScl + rand.random(recurrence)) % recurrence); if(life > 0){ - Lines.stroke(build.warmup() * (life + strokeMin)); - Lines.poly(build.x + x, build.y + y, sides, (1f - life) * radius); + float rad = (1f - life) * radius; + if(fill){ + Fill.circle(build.x + x, build.y + y, rad); + }else{ + Lines.stroke(build.warmup() * (life + strokeMin)); + Lines.poly(build.x + x, build.y + y, sides, rad); + } } } diff --git a/core/src/mindustry/world/draw/DrawCrucible.java b/core/src/mindustry/world/draw/DrawCrucible.java index 8f08ea16c6..10d1c74308 100644 --- a/core/src/mindustry/world/draw/DrawCrucible.java +++ b/core/src/mindustry/world/draw/DrawCrucible.java @@ -1,16 +1,15 @@ package mindustry.world.draw; -import arc.*; import arc.graphics.*; import arc.graphics.g2d.*; import arc.math.*; import arc.math.Interp.*; import arc.util.*; +import mindustry.entities.units.*; import mindustry.gen.*; import mindustry.world.*; public class DrawCrucible extends DrawBlock{ - public TextureRegion top, bottom; public Color flameColor = Color.valueOf("f58349"), midColor = Color.valueOf("f2d585"); public float flameRad = 1f, circleSpace = 2f, flameRadiusScl = 10f, flameRadiusMag = 0.6f, circleStroke = 1.5f; @@ -21,7 +20,6 @@ public class DrawCrucible extends DrawBlock{ @Override public void drawBase(Building build){ - Draw.rect(bottom, build.x, build.y); if(build.warmup() > 0f && flameColor.a > 0.001f){ Lines.stroke(circleStroke * build.warmup()); @@ -53,19 +51,8 @@ public class DrawCrucible extends DrawBlock{ Draw.blend(); Draw.reset(); } - - Draw.rect(build.block.region, build.x, build.y); - if(top.found()) Draw.rect(top, build.x, build.y); } @Override - public void load(Block block){ - top = Core.atlas.find(block.name + "-top"); - bottom = Core.atlas.find(block.name + "-bottom"); - } - - @Override - public TextureRegion[] icons(Block block){ - return new TextureRegion[]{bottom, block.region, top}; - } + public void drawPlan(Block block, BuildPlan plan, Eachable list){} } diff --git a/core/src/mindustry/world/draw/DrawHeatRegion.java b/core/src/mindustry/world/draw/DrawHeatRegion.java index 9abdc5ea24..45b6c4ce1a 100644 --- a/core/src/mindustry/world/draw/DrawHeatRegion.java +++ b/core/src/mindustry/world/draw/DrawHeatRegion.java @@ -11,8 +11,8 @@ import mindustry.world.blocks.production.HeatCrafter.*; /** Not standalone. */ public class DrawHeatRegion extends DrawBlock{ - public Color heatColor = new Color(1f, 0.22f, 0.22f, 0.8f); - public float heatPulse = 0.3f, heatPulseScl = 10f; + public Color color = new Color(1f, 0.22f, 0.22f, 0.8f); + public float pulse = 0.3f, pulseScl = 10f; public TextureRegion heat; public String suffix = "-glow"; @@ -30,7 +30,7 @@ public class DrawHeatRegion extends DrawBlock{ Draw.z(Layer.blockAdditive); if(build instanceof HeatCrafterBuild hc && hc.heat > 0){ Draw.blend(Blending.additive); - Draw.color(heatColor, Mathf.clamp(hc.heat / hc.heatRequirement()) * (heatColor.a * (1f - heatPulse + Mathf.absin(heatPulseScl, heatPulse)))); + Draw.color(color, Mathf.clamp(hc.heat / hc.heatRequirement()) * (color.a * (1f - pulse + Mathf.absin(pulseScl, pulse)))); Draw.rect(heat, build.x, build.y); Draw.blend(); Draw.color(); diff --git a/core/src/mindustry/world/draw/DrawLiquidTile.java b/core/src/mindustry/world/draw/DrawLiquidTile.java new file mode 100644 index 0000000000..3b6e3cfefa --- /dev/null +++ b/core/src/mindustry/world/draw/DrawLiquidTile.java @@ -0,0 +1,36 @@ +package mindustry.world.draw; + +import arc.util.*; +import mindustry.entities.units.*; +import mindustry.gen.*; +import mindustry.type.*; +import mindustry.world.*; +import mindustry.world.blocks.liquid.*; + +/** Not standalone. */ +public class DrawLiquidTile extends DrawBlock{ + public Liquid drawLiquid; + public float padding; + public float alpha = 1f; + + public DrawLiquidTile(Liquid drawLiquid, float padding){ + this.drawLiquid = drawLiquid; + this.padding = padding; + } + + public DrawLiquidTile(Liquid drawLiquid){ + this.drawLiquid = drawLiquid; + } + + public DrawLiquidTile(){ + } + + @Override + public void drawPlan(Block block, BuildPlan plan, Eachable list){} + + @Override + public void drawBase(Building build){ + Liquid drawn = drawLiquid != null ? drawLiquid : build.liquids.current(); + LiquidBlock.drawTiledFrames(build.block.size, build.x, build.y, padding, drawn, build.liquids.get(drawn) / build.block.liquidCapacity * alpha); + } +} diff --git a/core/src/mindustry/world/draw/DrawParticlesIn.java b/core/src/mindustry/world/draw/DrawParticles.java similarity index 86% rename from core/src/mindustry/world/draw/DrawParticlesIn.java rename to core/src/mindustry/world/draw/DrawParticles.java index 3ca9f82f08..16d1c70a52 100644 --- a/core/src/mindustry/world/draw/DrawParticlesIn.java +++ b/core/src/mindustry/world/draw/DrawParticles.java @@ -8,12 +8,13 @@ import arc.util.*; import mindustry.gen.*; /** Not standalone. */ -public class DrawParticlesIn extends DrawBlock{ +public class DrawParticles extends DrawBlock{ public Color color = Color.valueOf("f2d585"); public float alpha = 0.5f; public int particles = 30; public float particleLife = 70f, particleRad = 7f, particleSize = 3f, fadeMargin = 0.4f, rotateScl = 3f; + public boolean reverse = false; public Interp particleInterp = new PowIn(1.5f); public Interp particleSizeInterp = Interp.slope; public Blending blending = Blending.normal; @@ -30,7 +31,9 @@ public class DrawParticlesIn extends DrawBlock{ float base = (Time.time / particleLife); rand.setSeed(build.id); for(int i = 0; i < particles; i++){ - float fin = (rand.random(1f) + base) % 1f, fout = 1f - fin; + float fin = (rand.random(2f) + base) % 1f; + if(reverse) fin = 1f - fin; + float fout = 1f - fin; float angle = rand.random(360f) + (Time.time / rotateScl) % 360f; float len = particleRad * particleInterp.apply(fout); Draw.alpha(a * (1f - Mathf.curve(fin, 1f - fadeMargin))); diff --git a/tools/src/mindustry/tools/Generators.java b/tools/src/mindustry/tools/Generators.java index b8c21fe13f..c8bebc23d4 100644 --- a/tools/src/mindustry/tools/Generators.java +++ b/tools/src/mindustry/tools/Generators.java @@ -128,7 +128,7 @@ public class Generators{ generate("gas-frames", () -> { int frames = Liquid.animationFrames; - String[] stencils = {"fluid", "conduit-liquid-r0", "conduit-liquid-r1", "conduit-liquid-r2", "conduit-liquid-r3"}; + String[] stencils = {"fluid"}; String[] types = {"liquid", "gas"}; int typeIndex = 0;