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!ia0vp^3LwnE1|*BCs=ffJ3QrfukcwMxuU+IipuoWzu>Vf} zCw}v9MoGcpA?1$WoBCfi9uNwhy6McDb<6^a4GkGT;u@YOXedbeF)*^cVg6Ao_)$0F zmwki79)=7T(FCGvj)6MHwSehBl@Gy+OQO*Ll))#j-==brZWPZ3=E52Eq!h&-e=vZqHwI|`J!oF+#2pxdN(8%vmN$atNius2FvGv zQZ`MQG}S?5!g0nbfxSBeW->m%vvkG14XfWWawTaousZHsu#eN-&nN!qTJHZp#WGgk zo3h@DfuVa_0&`9SZ$L}OvkL9Pi&eTA`_o=qZeWb6WmGP=eHd-|X(G@Y44$rjF6*2U FngFjuW1s*4 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!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ydl>XLn2z= zPCLzeK!L}ZH%Un>QQ0kJ>9>GTEfbbsoDUoFHJI$xyILHb4c)fA+nfGcQ*~RO%Gqj# zoa@|8tI8U@@6X;Na+UM@lg91G?$mB#PW`q1*c_vViN_=vOyAF{V#%1qWlNprH<})Z?>tnqzfw^ST{7ti-9bi$8VBk(*ym4)RtPF!i p-RdZXU&=e=Om-QBvx_yfm2vgxEp&EWyb_Q3R8ySGSo%{xH>*#)<4~>C*^*{b&h6lR@%QoP;a|e9!N<8uTI-#&7Yj_?uGBzLG!5Ij#}44}Tnw>fZ3gK1X@H%zvr<%71DK{$zjU&@HSvWpg*GxaOMlU-r1Uj0tQFk_>4KGX^80 za-wv`yu7okc@)dTCCl7)9D9^HZ?53Et(9|g(_4ypVqe^md>FA*`>eIHOmgm@6m^HB zmh{}-`8+HhJs(!={W$p`L#N;>w`2ZXj6%viQnL1%Y#u!umK)Vgs$rhID9Pen<}G0S PFfe$!`njxgN@xNAtYD$; 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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 R!m|JX002ovPDHLkV1fv~LKgr4 literal 478 zcmV<40U`d0P)Px$m`OxIRA_Lcis4gNjp2*i|IU)ugMlrs$yymla zj}LcI@G$Cnf75PYW8&#~gqFp}#uH!$7DWt!C(saABZk5g@D}=u7!pt5YjkKl0Rv*) z^UGF{fOX*s5U@@>Jpl0V(2P6=o;^Sc90 z5h>#-9ih62)bUhipd66{9*W(){eS<^yuH3;fv4sc$_Y;;AU8avfE@9lZU%B%-}Z`! U899~`ZvX%Q07*qoM6N<$f=h(YHvj+t 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!ia0vp^2_VeD1|%QND7OGojKx9jP7LeL$-D%z89ZGaLn`LH zz2V5$tRTP|@aFG(A9GbhH|{NJXJ&lA7TfdR_(lZCI0T5yUClltFng`?{@dGh&lWG0 zEHU|`=FO?uHivir$pEJxjP<qVoH$AI;JHi51B&NM#-pBQIO-lxA%f6;{ zGR?ienq((#YETb6kfh0NaqscPcV8tl+25c1q_6Rm?Mq6PX1f({`Ha79TcUO}{+p=# zCrGY}Ro0bv|CIJz2hIJp2Og(=P5vr_@CJx={wrI?vIsTqdId2M*VEO{Wt~$(695tw Bero^# 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 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 lr+*~ja00A&TjY|J@C!~DtkdS*a) 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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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 A%K!iX delta 6259 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 diff --git a/core/assets-raw/sprites/blocks/production/cyanogen-synthesizer-liquid.png b/core/assets-raw/sprites/blocks/production/cyanogen-synthesizer-liquid.png deleted file mode 100644 index 4bd1161ff0cb5ce38d5a9ef888df262bd2795462..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 351 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGojKx9jP7LeL$-D%zB|TjnLn`LH zz3rHH*no${Vdww-~I2k_A)8Ar=|VW zR=vIHU^-vKzEG#2ZK}@pmI;xuPEp%lGXF0=uxVAxk(}W6vla<6YcE{Mxy*LfCShjj zg(o@o#%&)gSxtf+j4_DnBl}W&?&NG+sP3BY?0xIp-_R&C^Cb4zS8i*T+}XWv@*G}> zGu|DZ`h;=cO227S&TgI}toKnz_2b82&okdTp4TToN&D>k)p_5_do4_}G#AXoAZ(NF z8@c6~-M%n+(e{O^xzGP;>CTqk*sNEo92WF0_P*yiP&fg>_mA98n>W}WJ1Nx%;(EIJ KxvXB>3Xzo4a8Zsm!v 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 I&MBb@08Uj>g#Z8m diff --git a/core/assets-raw/sprites/blocks/production/electrolyzer.png b/core/assets-raw/sprites/blocks/production/electrolyzer.png index 4558855096b359dfac07ca59248977c1e7c1474d..ee3954fb7e06b0573952bf7315c7aded79a35432 100644 GIT binary patch delta 2210 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 N002ovPDHLkV1iJ}l|TRh diff --git a/core/assets-raw/sprites/blocks/production/silicon-arc-furnace-top-alt.png b/core/assets-raw/sprites/blocks/production/silicon-arc-furnace-top-alt.png deleted file mode 100644 index f199ba271b6ee0762b4c7296b3d2acde747aeff0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 467 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGojKx9jP7LeL$-D%zdp%toLn`LH zy>+pu*?`C8;?n>B&wp9EWJ;rFgVNeH)%T3UY98-M(P9MZgM%5*E6>e)XzzQIdCtar ze==uzovl0a%XiQ3E&T!qzwy@m3JtbB6#k8&JaoVC8hhJxv+b`uH^^6g;ZS9hvviu7 z=-xY_j?@0*b-$(EmR~0qJw2GUW%2~G2lw2{dJ>A6#O^9B;lF0vbTnYDatrU4oGTaA zN_qv1&XhHGe9(Ss`5|5sPtxy{9Xk?v+Q&oua>L3B)h#_ zD%MKweIO;sGp}X0y9d9**S-WnhgZ@E)f%oCH-$2+jAz-+Fe$vHOg-VDfZ`)QkN@jC zl+)`Zdw+?3<=n=&L{4xGv&Uoi4SSilEqdRwLgAZwf?%moU)=vGMqt*W2;R>tCo0|G zDY~X1sMEG1tA*nw^PNyzr=JX$zH;20t{xgzGeUb 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!ia0vp^2_VeD1|%QND7OGojKx9jP7LeL$-D%zOFUg1Ln`LH zy>&6K*+9VM;==#`&%g7YD8S2<>~6h#-*ep{k8Q?g0wJ70jmY4DNc0y5|E<@e&i~$? z>-};2Qi)CGe`4E&-muq5|2wyr<@H0i!}l$xCs^MI{ZXE{&sMMNX~1H|G_8Yq3nCw; zY97p*adTm+#zXb025aTSSXt}WkL;SydfkvcTq*Q#@^|a^EgxhH_|o~8n*Z@%e|~;t zc}>d&(F?n8t?#ovy+!!Yz8}F7i?`48w>!PIWkc`!$k$&zAuQw!1>}{=C+`?hj zyvOu&iAbQ&kJt+gTe~DWM4fid(s4 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 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 delta 1662 zcmV-^27&q46pjs$BYy@}NklOOD+(5Jh`e$-pZ}Ms0fuF)|CXgkFZ>v3KC9 z*OmlogASXj&%ISe@(Bg{Fx2@>+ct_J|g^(gh&7l%26vDZpE=AM1OLK#7Rr|?e`CK01rx) z1SF1>do}!N5)SySq5)7SSqV&>KKEJh%O&*iQ3))RsDwzIm9f$iB>0{LBpL0P=jUg- zvQR2xuffcpTiMw5=hXDce80zPvtR{+}aMLVHt(9wAYQ!AOc zLr}I}Ny2RS2oqI6B#;;IpKmWeD=XpMufI^0g>U7Sf$uRAsD#2?YDj^DAlYqdNa$~=6=y8yM?7YBgq<+vPh*l1 z0h$y~LJxwGpzUX{@HGhtShQ*aTA%bZCd>2z83_n{NrJbdXTe7#%!J=~^n-%aw+0;r zWh5~0dw&TY{9b~0J}HOU@Q*r<%EZeyBEf>$OF)iq6$S1UCT9yO+editRROF7cf?(*hNs%_w)kXC*L`HHi_juK@{=B!3{cA#Ym013oH&ovcalO9hM)yp9-M zTiF5MlMtD#N$|@B^wpYWGE@6q@G}y|HXI+BcPYikDadqzZFZu*uD{F^tq-tK{EoH1aFOGH)O9Ma{~z| zBY)rxk1;?-fVAazCHSpa0$Mwx0!~b{AeI2_cBKWm68u&yF4}Fy6CiT2OiKc+4qLs< zE?TrNrPZ-&0@S;LcezF2pE{b07OQVWCAha`OF%!XW8uFUYF)H=Lv%!fw|5LZ8He2W z&B?|^i#JL2`U7n<-W4FN>_r9ahL|l;0e{+luq!}Y*NzC-4X>(H36Lb5UQM+&V3-7U zL#rf$#G45WD-n<;$0^J)j8#ZM6VE2~f;w{M$>VLf{ zzi?Atf_guevgolC?Y441n6==+EURNh1dQL1`_V+=(L`^e;RzTMz8}uT1-wpDGXk`P zuOxwizy0xaZGS*Y_zDu*swD$|+Y1`j22JD@rQH%nc$S3iuP9j?G?AC|c1w_AYZA7< zr04CBv9GD_mSDvmC5$7w<*%tC`+vjCi`u&-AhBEf`hVN0@~;M8yLzi7oZ2%kDXf6cNDwbu0KO){g1Jb3W$!9yvbS>d`ki{hq2m}yadFP+eCT6LE z5)hRTh3`EC=1D-$U)iSif71l860-0SP&3aRZ9m)x9A%b-9q?yMV0T5i@LQ>rVAaS7 zCK6|5ERT^3f0cyHI6Vqwwgi-s3xBqRib+xw$}9;iBNzTG2^H{B3EJnXB}5oO@G}ys z8XlFsBbO=gt0e4f@FV3Ef}fS}i12shmVzIZ@W}92=7_NU56-~8&flGORR91007*qo IM6N<$f|q~)Hvj+t 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!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|B0XIkLn`LH zy%fmj5Fo&OVEeoJ=UccQw%=e_Io-ai?m)C#$7|PJ>=5M)@utis%S2dxehFlNL_A&nT-G@yGywpak~Sv* diff --git a/core/assets-raw/sprites/blocks/production/slag-heater.png b/core/assets-raw/sprites/blocks/production/slag-heater.png index 2ab51c583f0267e5e0cb124d30a0a859beffc010..d559a894d4508d783c9daa29bdb01375496614dc 100644 GIT binary patch delta 1093 zcmV-L1iJh51=$FYBYyw^b5ch_0Itp)=>Px(6G=otRCt`tTRTo1K@fetBH;)~4u@nU zdUZ*%n`j8sfXVgXC6Qo{o{vdk1ip|tM zlL7$$MbHk3k|JnrrSzQ@pae>YkZU6*f;l`o9jP1L{z33XcZ}5zoF)3e#RSp=B;-TJ zYeL!wP9X6R;C~uwDMHCUtfj#axD?5Cpw!Ti5bOI+)NZl|Sn`r$sf1T(Y)IZo62Ovo zf42~!#k=Y>SX+cvF+~&ue7G^eicvdA#@dl0$pb=ZF}G}%K+;ZjDeQw2fx2Ep1j;7Y zPL(VG#0w;CCra9qwwpZ{@H2!($skrUuI&8WC8h$;kAGNv_?T>DSS>}~p@CoENXh^H z1OV&a!DfMDr3kJ^P@P=d-URI&pL}NTSrK&PX_!A>zmT&*3rYme?R|9n2b0dm$XkR& z2!R^^A@V>%3^;y%T)UR)?rw@qB`~>g+Ke-Q>Hfuli&q0O z7)Icad4CG7JG;-`-(63Xrxs=ww>Qz@kV77DhJe-+LU23Z_uaeK_~f~3fNnU%;BK)^ zVn9g|s4v&|-Gu1q0B9qEzrVPa1}PCrl{DYazD>xx_r`G?jWOo_?wVbvlp(>VQP( ze$BD(w)uc94%jV=XC=y{e{XS6% za)u;VHaFiI3!OozaY(}jUchew#Pjnt00000 LNkvXXu0mjf;EV8< delta 733 zcmV<30wVp{2=oPzBYy(BNklqA2y1wHHP_a$`pHB~mQ9}T_=7C86R^8T@rU_sn%qGLx66xK4 zY!L+XN%77ZTmS~a+b2Zt%Y02{r%Y3TEQILwECLh$1aKUT0YDK@00aSj@0SNNmsNlP zhy+^}x%~ZZ^`p!Q48Ua-SPqsAFe-KwUO`|0u9m^|V1HQvR>4+y76AqLQBU+8&H$K& z_YfF>$o$a;5Djl3+yHI>H-Ntl@Mk8$f4vM=Z-izD=RnbZ7yxr4RJ|3RA*@41!m|KB zw!+mPLy>oJ6b!i*1-N_+Reuh%2gcZ5d~)+ { + 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;