From 585affeeee8054cf04f53294991124ea2d835c5c Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 1 Dec 2021 19:31:59 -0500 Subject: [PATCH] chemical combustion chamber --- .../chemical-combustion-chamber-bottom.png | Bin 0 -> 462 bytes .../chemical-combustion-chamber-glow.png | Bin 0 -> 10214 bytes .../power/chemical-combustion-chamber-mid.png | Bin 0 -> 168 bytes .../chemical-combustion-chamber-piston0.png | Bin 0 -> 333 bytes .../chemical-combustion-chamber-piston1.png | Bin 0 -> 335 bytes .../power/chemical-combustion-chamber.png | Bin 0 -> 1478 bytes core/assets/icons/icons.properties | 1 + core/assets/logicids.dat | Bin 3631 -> 3660 bytes core/src/mindustry/content/Blocks.java | 19 ++++++-- .../src/mindustry/content/ErekirTechTree.java | 4 ++ .../world/blocks/power/BurnerGenerator.java | 28 +++--------- .../blocks/power/ItemLiquidGenerator.java | 33 ++++++++------ .../world/blocks/power/PowerGenerator.java | 39 ++++++++++++++++ .../world/draw/DrawLiquidRegion.java | 1 + .../src/mindustry/world/draw/DrawPistons.java | 36 +++++++++++++++ .../mindustry/world/draw/DrawTurbines.java | 43 ++++++++++++++++++ .../world/draw/DrawWarmupRegion.java | 36 +++++++++++++++ 17 files changed, 199 insertions(+), 41 deletions(-) create mode 100644 core/assets-raw/sprites/blocks/power/chemical-combustion-chamber-bottom.png create mode 100644 core/assets-raw/sprites/blocks/power/chemical-combustion-chamber-glow.png create mode 100644 core/assets-raw/sprites/blocks/power/chemical-combustion-chamber-mid.png create mode 100644 core/assets-raw/sprites/blocks/power/chemical-combustion-chamber-piston0.png create mode 100644 core/assets-raw/sprites/blocks/power/chemical-combustion-chamber-piston1.png create mode 100644 core/assets-raw/sprites/blocks/power/chemical-combustion-chamber.png create mode 100644 core/src/mindustry/world/draw/DrawPistons.java create mode 100644 core/src/mindustry/world/draw/DrawTurbines.java create mode 100644 core/src/mindustry/world/draw/DrawWarmupRegion.java diff --git a/core/assets-raw/sprites/blocks/power/chemical-combustion-chamber-bottom.png b/core/assets-raw/sprites/blocks/power/chemical-combustion-chamber-bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..4f4b6a2b8fa10ba52de5f54471a2bd0c9083c362 GIT binary patch literal 462 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGojKx9jP7LeL$-D%zJ3L(+Ln`LH zy}P^cuz?8cMQ-sF^>_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/power/chemical-combustion-chamber-glow.png b/core/assets-raw/sprites/blocks/power/chemical-combustion-chamber-glow.png new file mode 100644 index 0000000000000000000000000000000000000000..dc693222b29ba053803f8abe322ec35464406874 GIT binary patch literal 10214 zcmV zaB^>EX>4U6ba`-PAZ2)IW&i+q+U=QJk{r7YME|)8FM%%*i~TU^2ay#ZS>#Yz6pNpukrLvEMI6jzWne+kZ;D*dztw4 z!s)%E`1wSQANYJ9T*zUC9!}WzIKyO%Iqs+&W1IkGV>M}PaT-=B+b5i;AhuEk!x^^&vz+34 zFX67+?s_v+R$hTiV_-6a{ih%IS0{hxB_s(Yc#Tm* zAdVG)Iy;Xk#{mLCBrY}?b4n#TjWCC`xktmjHcBkfhS4T~kW`X_4LJo^ISc&JT;Wic zBw0j?s8lCSdPyZ0DW#xvh+NmCSw)MgR&CmAs<}!nRco!S_7+=01ErOwt+v*BkFK*& zXRglmoskho8hOYlLq{EL^a*`to-)hSS!bJl#g!H^vC7g_S6h7tw^53nx9qZY*WGqM zaP6d%kDPM!)YDFXqxM4eyU%Z+7G9{ui7a=(O|lln`z#lJ(&8Fc>*Xg!ALn=NF1CX9b>h)8!mM?txh#u&DSabAhZR~074_L=kQII1uOxXZ zr>r(lk`Y`PMfpD0>Fksk#mvUaS!HxtY^=vAW9wPUW>=mBclec5Lpg1*?XE*q9cZ#K zS?o{u)Ny$9-j!^GEHN;__8T$@&szG)XkyAOP%>)MD0Op7;4$19+}Ds*mRBfH0#$vj z7IWi%B!NJcK30~%Zh{@e3iY=~_xd8B4GvY#EFGI-YQgT5bqGEe`LMHeLenL*WV?UP z_fhX-I4wmhn?I?u>pn35?09dC4gzXDYf0ns zlXMTMhd{16HOa0}t2D^m&ph06_t5&7BgBvEqt|d;vhYDdi6q775&A(pM&@Wc+;1pg zT$M!WGaIR^uaK&&kOyf(M(6Iu#mckvR8L~4g{dsJP+g-(HpNwVRi+s8H)F8GiUWjB zut^VbtI$28M{5k@&83N?jZBd~ak1?Vu^*O%o=PQGDS%^!bsm9-F(j)P2^u z6LF|xhsN}?HC?30xF?8lIwWu;oU6m6y7_hDP@8g)A|f8A6q()kV>}O}70J}#nq_6{ zWKW6S4$-pd$4B@5335qnI%W>5)siUNcRG)fkU29&1SSM<*Aw*Nl6Qn93lZ1Nz2n8P zwWS$_Lf=ZMIsQbMR-822s873;hdwxjV|p=M-f;|lqCJSkJhDvapdb|4%r!S5O|jiD zk2jqcD!J|s%E|jUQ=M)?9un@uNC-If1X52H04|1ryrg-&O}}Djt>(+BG!<4=6QJyR z3;SlZ-^Lik`zp|o0#(LKcovE@+QT9hqzaNiZk=n77uM$jW{-O$oyeNMdnqHdbx>+m3q3=5s2|~Dy-Kj=}i0~B9|KOuekB6 z#}rjuUPRzDHjZgTgt|%nBN=Uv(ZfqJNbL`9RLTsbSZMIU1R*w*R_FJ4%0(wX=Wd-s zg`Y$<77;xUCB_24{S_tluJclY@T=O=PSmGfS1l_J%TpU(xrS-QTz$%O8mlywPLS=RUp9L$&Gxg^#ahX1N@JU?xz>nqvZhm z5p%RhEMGGSJb^_&pffL?V;Qy22XeVpk`4Fb$Y!DvPpqQTMlcwPnFsm6e$`M`c~!vF>*ul zrQ)ySYS@EwYn?(|%r-u+4;QhArQygu9s?3Emj13h|LEv`^}?@?A~-0_z+y48lF*JF zB|E3B6wCyzLji;{%zv2R?eG$c^+`oH2}ND+@hlU_7!Y=MP095NC^%Io2b0gEHH{~U zXeg-a-QR+Ts(4~fr;gNG1kKBw`)J7;8QZk~v!nZ+8#3OxbjmQnz@3t|lGf`A_vd^0 z|3v@$6Jd|DsSa*7l^`{Q-EnXGY-G6qLWy&KSQ~#lQH^v;n7iuZz8Pp$l=4WTEA644 z<}uxidV#&nD6L8gy8HBfJBk3Qho1@eF;3dM4L!7LItK;A9OSva0;i;=SSKnj?vCe% zHg4*m2;C9xI^bIal`>qXYtr_+x@Pa#eplBxUTHJ$gA<>X8n|#H-dEb+Wesbj;`dAs zt>tMytUK|c(~{DK_OrL0Sp)zeDX**KfuEQ-Vs+P45=-;um8%AQ=x+DgOh2+E&bS?l2b(5Z^BadOs8Q2IXJ0&=9H@+P=Tw3FC-uHopR4QQY$J!C4 zmeHGSabISB>i+=xNd2dOx6<0SH*3E;vzc-DX@POS9q1n&V@l3jLx>wcmHw(PYAZ&W zf@_X`k8>CSKw!dKT(y z=|=|TCl81$4tbSLIPp3&ay%}aKw z?K9Ro@cS>Ut$)H?H~aINYuchohlOE=SCKiUx#enav~VB^Qbfzhn((=dlh8KD3PmV4++0|++TvbP-=bdYJlFJM8VS1&$PvaOdzQD5Atbhi-6!^xJwF2EUD z2gi_a_eBsnLZ4ypfE4kd1%y_V5cO6BPQb~RrRjd1C);~L>+&O7ZIp66KwETT=~fRx zL1=1w5QDd#`JlTMswFO(QYKY|20z^gKux$Z(4X3isB@^n<1H4LRXSUGenEnuKP)r_ zu2(G%`%Ad^N7`=5A<1yzuG0yRL&|)Vc^ax<@`M?tNd@jgsOfG!0-V-QZMpkAfRm=S zM*1~cJZnhpy&>xR7nRtWV&vBa{R}wuRqe&d{zg8I__ur*;JFQ)&$4oHX@Fz9T5JMh zF9jD^+och2qbd!%Ll_F=rR4C3*gMq8RnSF>}kjyM2E=ei) z*4I4(e7}qFUjFy~tUfhwF(4ok&oRTai8qL6Hf@9RK5>MVWR>`wc-*7`i66PHc>Kn> z=(0O>#LT4Ui6g{fv4fQkW+hW2o+gf}noj+Ntj8+nEzVk{##(do7l!lt$}-n!jUb6d zEJ1<@1vQjWfsGjLIw=;?be{0>54(PeTnf3$VB}ap6&hsM5B>+gv$YCSlU}EA0_c8m zoR3i;vZGW`^%zlzyZ)?#bpnn^3_cmMDZ5gT zmQW}F?`QN)Ibh%x=w0)2Yn|it0mx8RsT<(n5Ev^`?{%Md_jKm=@10hDKh6$vWq-$B zH2?qr24YJ`L;!67Z2)cS?M)Q`000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2jvU` z0019otO)J^02#_jL_t(|+U;G}cH79Z-HpVYlx0O*vS*$D|Cqbxj%``V%8?QIK6E!w zY;^-np7U}s3j>;jK%#c#Ds(XvY>cs~*K)Tk3zlueu^l*$3)gkvx*j~wh38e^RVt`f zs;JhgsMqSKHyUWQ+URt;SYKbq&dx3lkB;!yU;n|*&My9&+wJWQ{{H)aaB+T)+uIvF zJw4&=?G^q0J4VAHM&l7C;|V7I1cC1(2z&%Vh%gKgh7qDDL=;Cz;uuMiAWhS3mm7Vp zZuYFi2V<~Q;=3+f&xPlC@G2fEl`5*$Dyp>_>h(J6^#+>FCfcnwI^8bT*4MDLxs6YI zdpJJ+f`fxY{I|DevxOu{5QYKbI7X5tK$?O9kpGjUVDkSA^*p>~)5yW?0c&-P}lN?_|O%T6PZ=ls|q22Cq;;*e^b8`zjySq3#JjT~= ze=SNgRE{V@yf4n#YkpKaNd~-^AG$7a};>*{JS%UZ$9LI&@I9%mS5x>s4z9CdjyMs=r zgI;e98yg$g+TO;e-8~#09^vHVD?G2V2=U7#VV1u!s{-3Wr`rXPa;~?y%4N(Fgtr9o z&0m@8`g9r*#_}JmfMAyspJh7VbzQighl(flJ?HvHy@5tk$Mu`o+1bV3{sE4TKjY-& zD{R|dhU?Y4*S%(oN`r0N*x1;FW!tbUo7+3F=RgoO#HMvn%25!iC?(clS|3pm?A*gK z5MSv0ocI+^e5vajO|+U#wA*cTJ6)`;tzlzh6WiN6*!{%0{>zsW?CySAhU-;sw+i$> zGyMI`TesUqyv-#@_d@fUpk`VGxyYgyt$A-<(~t>gBEL8#a3*x1;BZ9A}S z8@6o|X^=Ky+5)6P^-Ot0>9k)&H4tOS0mzMxhWIYm_Z6w{8`8sRqucFbt+$?W{odXl z4v&s;^5qo!2M4e$dlj5732iH{?E(;%whNYJV{L5>^;#XaW5Xt@$Wjb)N{<=$DYCw=Ggr9a*rzL>Fwk(SWSr*H^9cpli zn<+V8dN}Lro7mpo#wVidznq-HaoklCpAy{@yGxE#8fJ+J<_5uWTx@J?!gbwD4N1nO z#7|WavZG$B+LmPrM5UkaDmtHYewI$?cCpr5!^Y+&ws&^0_h}zTM@Kk0{kn*uH4&e3 zy(GK~paP&O_L?|W1Q3ome-?YN5C{O!>2y%5*K^`CN_-KFr38dDS4&XhGR6QWQ#&%k zb)1g|SK)lA?>~Lo!@=PpK7T$ztJPX1@tLA-B-c}dyTpx-0fYbo06u_;cuj$b#kCVc z4)&2W<=e)_CMuOGT+f5!IIt}nj9IyUNz;t`g>x!m02xt7NMeR0Nnks|)yg7V;^)^W z=XW}S^M$_OKj8ZQ+c(tfja3n!X*geUd;>reKnp-y9Gd{@LK-TH6zB+?u0kCFK&4Va zx7(dcz9mV5G)a(T?&}j?K7lGCO{sE3Zf5z9Z ze=QQ#&O`i)AZ|kty#t_2_BH{bLZre{h@Q^zTjsC}4!XS_k~BdQCrFY6NfKv3q*-<} z$6lr+I0y_*memw`-^<+1n#k$2(CKz~GHr_++@qsooSuGz>$+IMrt@}m#Fqd_qF2Rv z5b9?FU_jotHH4*LBn472^X9rPPEWrfO}GTaNsKtofsoQ5)e;llW+;rfBaN=-a=l-b zsz;`hh2G!X+{EtACmb9e;^g#nS>iK8gsZ9^NqouiJ#lOaa3}y{Aqk#A3KF9K)r@hv zs6CJ%oSdE_iX%i(ggA;2#}VQa{wWLicw&+}GdU-ogI< zK0bdwL8Ve%1@YDQ>;mrZ0aydDPE?N$0LlH*kSD_U%3TE^ElO<8XA`RU{P_f75Qt(; zD8P`CkYtV#BUx6*bv>=W-)sr5XKf9en_FD<9DiQM+bPQLP=8+nP#2uu5df@bsT8gdjxNRpVl zrZO+Y7#!;L$P8z@Ee-D$c0cXm==k_gaXt!+u#9@^0tmU+Nfb;2F{$$<@#VQy;-Z?O zWwvTbI66AUa5%(xJc92}5QZU_f<#o@#D7la_0+iPX|-DDcDtG3J=i})wOU&x_m_d7 zOF?*oh!rIgrV@}4RYcFBgtz7({!*Y+t2G=P9C8pQV+28fC<>7zaV~ERaH=(~dK!(U zFuc5|vbnW|PkZ~=+}irL8x>SgY|ZYF*V2GGhI7kO)PHQ-+}uL{owv966CYt1iq@4p zB6jLEQOj*f)x!<%?(QcX9UZNbpoU(8568rCL;*2%CCajEr85L#ORJ{CqhkyP11<%k z^(9TyEHC8H;)<+lZHsinf@$SN!h0GhQQtk%`0$Cwhff#0#yt125D<>zVE^C%qtOt7 z?<0<5;)YsqWFejB_cyS;wS&FAeXOr<{2PSVaeu7%?V-kxkIA{v5WMJblNq^xWk9U0 ztz&Qh0Dj;jP7-eDM0wNcbh_xtLi)}Q_V)L2baec05uRx{I3~V&K=zRAlBg*$!jWMQ(59(_eV*I@!^CGA)sbpIPzmXi-6ig)1i)8z z6}VWFhERcEbE>AfK=}OSM5ra3Cq6w7&d$zmM*J@)C-6LPS>m$=fk-qeND_Wb_6mt& zX&f+7&KnaTR27sI5T4DbGUo=tvMijOe$AR2YPA}i!=ob{9PoPX3JK3jempBM#1sIZ z5Oyd6Fk74#C;<54oB@e^)f7ZrV1Q=@kEhU830WcPXe-$7M#Crje0G-}1Vkj7F*3uw=g!0R#lZ(34 zQib?MB|>U|eZj%B_#TS)Xx<-64roX~kW%0)hB#BphU%OtuuC^U#upR>UG6Gf27t1rDcZ4C zQF8CLLO>dgMuu`>L~bBf#6D2c%9cUObk|Ra7o)a1I?Ap}Gi~e&l?t2u9U(bquI4Xi z0fVb6n$$?4gf>Yr#ju*v1u}YNinkIg>cuWG^fZ=86se-W-BaoYw07WPy7^a1K%@kP zBk}n}p<8T-71DVCn73)FK}v-U;-xT57sms9Y$2pKqv~6#cU2>)i#2pc9t!7I2&2&I z8ZF{bRVwcxR1CZ-Av%w)6ogq+kgi$Q)HKyW-l^u2s5RDbybQ7iic6VlJdTv;T2_)6 zOO?P$E%?_6!_fA|szxHD1jNJzrg4c~5+{^4e>o);DQHxW6yG}XrYYI2Ae*KdBv4X= ztAL1cUtG)9q?KdE4kUA=I@EJi?r&kby|G24!o$aIYZ__S$>)~F22l{0;b;Va6-a=s za8Z*0Ae*Lo;=P83upu#GGPk34HmK=mM(oI}IeeAyOd|nJ^1JD8t`R4KN+r!TRTb5w zW12*fTw^-MDN#MTo=w@QAbWPyrYRKwMqD@wK#imqLShTXinkMML>zO1K$)jXRFDLr zi@eu}c2HPEf_*~-9xHWC4j1-7V>UoTjL4&iFp!0kRSjl|11J~jazCyn zfT7W(tpq4i64c%uT_$y@1vm^DTT>p(l+U8qNt6g$y>Inibm{sJ%wysIxBu$ql!&q# zROs42LW36&Dc4CfUP4jdep&5cmd$j%#Na+girQp`EU50jbxFmv%zbud(4(nRDpW1M zS}=DMkyVYbuXqfz6wNVXA-u?Ln2P>1GN*pOYJ>ym3;z>R_6(KMXIf^zoEf<%(Uc0M z^{*2n$qki(n5lT4lyDC#a6?g$A2JpDJ>r>#1#akw6nbRcc|hWq0Q&wTlh-x{ zKnn9iZIt*vsnu3terC5U5F3!27!nXn4OFIX1e4)~fq{Ibbm@_R&o2qYWYPaclswhi zvtLqwp34T%te*Pd1N8)KLv41JRKz=}-42xwhS<=-Fi#W=jr3CDyCelZo-q|60eBL} zHzEZSrS@!+0%Iydr~geVNL`;n`pAt$D7V{Kj`idjr8$7v%Z2&WXpgT7vqC8xp zBw18Ix0WnP>I(hz@zzC3l4b3Wr5)I1Zm5pKVuO*R26h!id9{G}4CXOa=6srtPJyF{`Z5A7i=3thhwyucR@n%qFO=-ZHI;MFn))aWQLaVo{+V3NtO+ znz+zYH}mv{nm~|Vf<@HRBF(wh35Qe)VgPP$Z{~eK!vuo*SZx^r0(1m1$4FTMMktTu|{JOnyIxkMJSylvx3ht17nqL@9*!pz4;C2;`|&z z5Fqe<@sM6+9uQ1f%5)9@Rqw|xD4sVJJD@(KCvDJJ<29+pa+Cm3cHawg{ngbaZf|e! z@NmynP#nkEN*ukWD&;{Wh+yS2cj#QtFEZ*$fzg@HJQ(+1#@*_4^z>9Q8h9b z@slLM+0P&NeRGY6hX=eoKf!r=ddkU~XgjnFDpTl!^iX zeT2!>^{h){s4XLZjQ9X>_VWiWE-!F@cZ=ueC%nGC!g+gp1!I6E1~s^ji)yvD$kXz( zK4%L6^%v%ola+&6;tK`LYMWlq3^dbaquG7_@jge zfGCP^b$N-~yIVXyJ>up08EldOJQ~57j3-?EkSR%? z=b>7yp;2$3-D>~at7fH|+)Gja4lM}j&MocD`BU4&!#%ElU*rDa4$sf|fVkmcfYEq} z@puep;!pU*AgP8NCmY&OtJU~$o_1^5b>q?*(i6JOYN%AuAIljpfwxQGM{3#IBXODHwzbf%l4eEWFM3^^%pg#efW zGF^qrDk#9vZiN>B&t!kY?0rW|Z;y`;IQ#hnS63IfyS>HJ6IVZj{yT=FAtr+RgCIZ< z2C%Eus-m3pS#ffJCnNK-TCFxJmCC9>K!I8^wWuc~|F3r0Nv?k)uVv$u>|6*n26`pj z-|zSF^T$89yu85e%?(#QFE4oSzhf{QU_2UUswW5oL}3Wq^D2e}EJHrOl12|wt z9A_0En3jrxA#I$L=zYrlulU%truOZu%<%gD1mC~^BlP|?9v<$6=kta^zt5L4o{afe z+<+55j3Pe5q=-&*tgG~x(=J`ZqY(9aV;RF-_8?n=k1Zi;e<@w8Z$$ik>GMacHoE~(H5A}6h$lLu1xJ*US8nr=MP+7Uf|~D8uxd1czSxw zIA0Q9rW!c$bG^@}E2RPeIZqhVW4P(yu~eDO$|WI}f;f&5MG=B9fG;e3v)Nq5JV}!+ zP$fZKAKJwAOA&uE8RN%~?>IXqbS0!v!6IS`-!W|3*6lN#>4%ca5IIz7rA|EaQ#3- z{3Ok$DAAc>*+}zg6v{#1*GhyW)U4gw$k#K&YjhU>Yg)#|HA+?l{I1yu_Z z|M~d|KfZs@f~%bCpLspE|IQ;^>E~182Rh;>nFgVn#ioR31`znKXHZ@f{bJ7r2og&J!;q(mF0T zv^=Gp<#t4b8xhWz-j1sCQ)SM%Hj(quFq8Yw=HW6!jWNxof}}1WcLvzDjdr{9CqY=K zUGVbqJWC_X?uCB8&uh4&A+KbOCwWRam`ofAGUrpT0XOwtRS^XVL6Gw}-n zkOa%YApf2sz8M6jykd-H-4~wgVtr%bK|w3s&VQZZ>iSZ+m`^$9i`EeuSm}w+hjk{2 gO8E3+Fsp3;2cF!my7T5rF8}}l07*qoM6N<$f)K^0&j0`b literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/power/chemical-combustion-chamber-mid.png b/core/assets-raw/sprites/blocks/power/chemical-combustion-chamber-mid.png new file mode 100644 index 0000000000000000000000000000000000000000..b731775514d563547bbe62fa28372137ece56c08 GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|#^NA%Cx&(BWL^R}NuDl_Ar`&K zDF+z8eDVF4EWE$uBagCK;hLr$JO|Sy+87j_3nbePDP9xEX*(#nM5-xILRqyS4;0zfAR-!J;lfr?!V$HyGNE8?F$za_&9Q OHU>{uKbLh*2~7aZ);3}Q literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/power/chemical-combustion-chamber-piston0.png b/core/assets-raw/sprites/blocks/power/chemical-combustion-chamber-piston0.png new file mode 100644 index 0000000000000000000000000000000000000000..c34d9e07b70273a1b5c7a103431dce3a3475471c GIT binary patch literal 333 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGojKx9jP7LeL$-D%z**#qxLn`LH zy=jHH4_Ay zg9Hq2KD#Ksp{@V#!}q@`cGv3G^?lzS8#c{9{y^>z@vT!nTw(nq{?C_*F=@Wa068XiAi_^Q!3ReRAZ>6xd~VpwzB!xucWPeF1!kg0H3Qd84QX4~W-Cdl-;Ul9iB93F*YyAW{K@O=Jhmx3^%-CC%lkd|OHVQqo;8P2bxGU*>xG`NVg{;z zHlBa}YF)#e55fD-UyNnk`f^>v!a$pE8)6?#-MX7e>62H4(w`1L?v5E@hk_ouo9y80 zh{)G9aDSDxWTpX literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/power/chemical-combustion-chamber.png b/core/assets-raw/sprites/blocks/power/chemical-combustion-chamber.png new file mode 100644 index 0000000000000000000000000000000000000000..c3fcc8ae3a1038259329ad1bd01a09e75077dac0 GIT binary patch literal 1478 zcmV;%1v&bOP)!;nkQgDxY>Tx#l$MNwv0e98-HM%7EP2!&r|O)1{7JHH zMEUXa*K4$X|NRB3-tDvY%T$KxlJI8=SW?2-@MjBHO2SI;BLXfd;cD=oN`hj?Y{ILF zR0*IZym|Zn_0#9CrwTapOj5=rm$1Vxm6cGoV-r=MNy;{@{G<|&@L37mKD-;& zECIdzWD;8NQ3<{6)B-H{M+r&+qx>WiM(`~O)^;iZDEv}Y0<8SP5)k-33D*B#zI}Yu zsDMXXqyPkt6<3KrRRSa6C;^3!NI)-d415F*0zX>F@Kq9+ z98?m*L9>Bp!M~~mGvF)1zoLX;uuAy*rOG>)W8g<6lsM0l;1=M4-;$64-z%YxQzb!u z35vi!O2~xIO6bKIl_0+fE8v%!4IhLKMDN0s_A&U^vtl!_StW zg3n4|=Dju;J}7}rDocVIJ}QBoe%~ngh6Ha?hy ze#pQ-O4wZRD+%fZvjnK%*F8cH{8D2AI#a;UdIq$5F%kG-0qX1Q%J+a#S8|GgQG&gp zy%+xMUQnHvQi4kW0-up!!O9STO0e>aN*D@2l0bs9PHjX2I1Th{|U%~e}ruPu7dB8ke&ZfK=#g6k}@TDYD9wT z!K_U91=h1mDAgqZYIyU#Wm8`gR*-;pYflk?!Y?HXrzN4+_s@{PjxACJu<#i$qx~Kw zSOYMn1n&SZETGjjZ7n9CN2XPfq;?5tdvNjz@z%UrYXCz5BlyFH0>yhYj!LG0Ud$G^ z7CUn;XtbE1NTioc1b!)*0_wO~e(+@6Xk$eZbs{SGrDO^yv3vQ21t=0INnBOHUTy({ zati>;E#MXqD$@kqH{ppl;kz3u>W1C}F?n}kVCBP$r2_`C`{$Ec5lW!(`mjFfr8w?8vskH=88(Hw(0=zq$EkWI`g2$4J z@>vpAfj=AvWbd3==T!r;BusxSC0hdew6Rh`D~2BYB_7PmlE6Olt&lK^r3ZhBM-$Z& zywBZ7Bp?Sw5B?Gl=X%93@EHl#0IV+TC2`5e)1wlQ1W^fU0ZeRJ@IwMD2~2{B1f>9V zY+m?b0X+$x1g%6>0@SfZ;Kv0dy{4KaKpmUpHPszj1it!3?Um1fV~nyFwabwkfv@^h z!OHi5W0ilZfRd2(v5u8{K?wZt$2uShNuR4x!_ShC{<#{fZ;uARNXUY(mcZoBjFzW< zvMd|EN&*X?nX;Jn(LOl9WcYg>_29hlQ3+E%TS*@!$?$t)m?(TC$J0OD>YZK8hF?oi z!4C;gONi`;k>G{@wu%2EI!`NJ4OVa|C}R0fui#80Cx%EM)>*5(I0^ z>`bEzen$dwdGknc3!o$fmNv_NJag?0>4yN!s7;(Dj~SGTq-L7X%mT!fzL|# zrx%eS0ZkHxg~DgrL}Fv$qY|3^Xr%-;NfZ_WUoBvipGU%QB&m?#O)?5AqfIM6R)RH> z4@>ZZJ6nKKBq{-dua=;KrWBw)laNZmS4x-x?#weO4gOUnJQe&EC1h>4Ec{s#W(rsi g{tOAT1e^{34}DF~&*jv3e*gdg07*qoM6N<$f_Tl31ONa4 literal 0 HcmV?d00001 diff --git a/core/assets/icons/icons.properties b/core/assets/icons/icons.properties index 44972c897f..d3722ead30 100755 --- a/core/assets/icons/icons.properties +++ b/core/assets/icons/icons.properties @@ -467,3 +467,4 @@ 63239=manifold|unit-manifold-ui 63238=arkycite-floor|block-arkycite-floor-ui 63237=arkycite|liquid-arkycite-ui +63236=chemical-combustion-chamber|block-chemical-combustion-chamber-ui diff --git a/core/assets/logicids.dat b/core/assets/logicids.dat index f89741c46e83804f6c7f1fc76b91cabdc613b55b..44fd6af0494e2c88cf121455d7febbea4dfe0fdb 100644 GIT binary patch delta 45 zcmZ24b4G@V;rK?TmE1DY$r-7+naPPcy2<&uNu|XlnfZCT$r*{cNvTDfS8=y80RVM% B5U&6L delta 16 YcmX>jvtEXY;n+r|mE4<8aJMi405m!U?*IS* diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index ff8bcae5b8..d4b5e10099 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -1881,6 +1881,7 @@ public class Blocks{ consumes.liquid(Liquids.water, 0.1f); hasLiquids = true; size = 2; + iconOverride = new String[]{"", "-turbine0", "-turbine1"}; ambientSound = Sounds.smelter; ambientSoundVolume = 0.06f; @@ -1965,14 +1966,22 @@ public class Blocks{ liquidCapacity = 20f; }}; - //TODO arkycite combustion: ozone + arkycite - - if(false) - chemicalCombustionChamber = new ItemLiquidGenerator("chemical-combustion-chamber"){{ - requirements(Category.power, with(Items.graphite, 30, Items.tungsten, 40, Items.silicon, 30)); + chemicalCombustionChamber = new SingleTypeGenerator("chemical-combustion-chamber"){{ + requirements(Category.power, with(Items.graphite, 40, Items.tungsten, 40, Items.oxide, 40f, Items.silicon, 30)); powerProduction = 6f; consumes.liquids(LiquidStack.with(Liquids.ozone, 1f / 60f, Liquids.arkycite, 20f / 60f)); size = 3; + useItems = false; + drawer = new DrawMulti(new DrawRegion("-bottom"), new DrawPistons(){{ + sinMag = 3f; + sinScl = 5f; + }}, new DrawRegion("-mid"), new DrawLiquidTile(Liquids.arkycite, 37f / 4f), new DrawBlock(), new DrawGlowRegion(){{ + alpha = 1f; + glowScale = 5f; + color = Color.valueOf("c967b099"); + }}); + iconOverride = new String[]{"-bottom", ""}; + generateEffect = Fx.none; ambientSound = Sounds.smelter; ambientSoundVolume = 0.06f; diff --git a/core/src/mindustry/content/ErekirTechTree.java b/core/src/mindustry/content/ErekirTechTree.java index 3032622a26..015d14a56a 100644 --- a/core/src/mindustry/content/ErekirTechTree.java +++ b/core/src/mindustry/content/ErekirTechTree.java @@ -53,6 +53,10 @@ public class ErekirTechTree{ node(turbineCondenser, () -> { node(beamNode, () -> { + node(chemicalCombustionChamber, () -> { + + }); + node(beamTower, () -> { }); diff --git a/core/src/mindustry/world/blocks/power/BurnerGenerator.java b/core/src/mindustry/world/blocks/power/BurnerGenerator.java index 85e09e1dba..ca61959421 100644 --- a/core/src/mindustry/world/blocks/power/BurnerGenerator.java +++ b/core/src/mindustry/world/blocks/power/BurnerGenerator.java @@ -2,16 +2,22 @@ package mindustry.world.blocks.power; import arc.graphics.g2d.*; import mindustry.annotations.Annotations.*; -import mindustry.graphics.*; import mindustry.type.*; +import mindustry.world.draw.*; +//TODO deprecate this whole class? public class BurnerGenerator extends ItemLiquidGenerator{ + @Deprecated public @Load(value = "@-turbine#", length = 2) TextureRegion[] turbineRegions; + @Deprecated public @Load("@-cap") TextureRegion capRegion; + @Deprecated public float turbineSpeed = 2f; public BurnerGenerator(String name){ super(true, false, name); + + drawer = new DrawMulti(new DrawBlock(), new DrawWarmupRegion(), new DrawTurbines()); } @Override @@ -24,27 +30,7 @@ public class BurnerGenerator extends ItemLiquidGenerator{ return item.flammability; } - @Override - public TextureRegion[] icons(){ - return turbineRegions[0].found() ? new TextureRegion[]{region, turbineRegions[0], turbineRegions[1], capRegion} : super.icons(); - } - public class BurnerGeneratorBuild extends ItemLiquidGeneratorBuild{ - @Override - public void draw(){ - super.draw(); - - if(turbineRegions[0].found()){ - Draw.rect(turbineRegions[0], x, y, totalTime * turbineSpeed); - Draw.rect(turbineRegions[1], x, y, -totalTime * turbineSpeed); - - Draw.rect(capRegion, x, y); - } - - if(hasLiquids && liquidRegion.found()){ - Drawf.liquid(liquidRegion, x, y, liquids.currentAmount() / liquidCapacity, liquids.current().color); - } - } } } diff --git a/core/src/mindustry/world/blocks/power/ItemLiquidGenerator.java b/core/src/mindustry/world/blocks/power/ItemLiquidGenerator.java index a4405b3532..1b14dd78d8 100644 --- a/core/src/mindustry/world/blocks/power/ItemLiquidGenerator.java +++ b/core/src/mindustry/world/blocks/power/ItemLiquidGenerator.java @@ -11,6 +11,7 @@ import mindustry.entities.*; import mindustry.graphics.*; import mindustry.type.*; import mindustry.world.consumers.*; +import mindustry.world.draw.*; import mindustry.world.meta.*; import static mindustry.Vars.*; @@ -31,12 +32,18 @@ public class ItemLiquidGenerator extends PowerGenerator{ public Effect generateEffect = Fx.generatespark; public float generateEffectRnd = 3f; public Effect explodeEffect = Fx.generatespark; - public Color heatColor = Color.valueOf("ff9b59"); - public @Load("@-top") TextureRegion topRegion; - public @Load("@-liquid") TextureRegion liquidRegion; public boolean randomlyExplode = true; public boolean defaults = false; + /** @deprecated unused, use a custom drawer instead */ + public Color heatColor = Color.valueOf("ff9b59"); + /** @deprecated unused, use a custom drawer instead */ + @Deprecated + public @Load("@-top") TextureRegion topRegion; + /** @deprecated unused, use a custom drawer instead */ + @Deprecated + public @Load("@-liquid") TextureRegion liquidRegion; + public ItemLiquidGenerator(boolean hasItems, boolean hasLiquids, String name){ this(name); this.hasItems = hasItems; @@ -46,6 +53,8 @@ public class ItemLiquidGenerator extends PowerGenerator{ public ItemLiquidGenerator(String name){ super(name); + + drawer = new DrawMulti(new DrawBlock(), new DrawWarmupRegion()); } protected void setDefaults(){ @@ -159,19 +168,13 @@ public class ItemLiquidGenerator extends PowerGenerator{ } @Override - public void draw(){ - super.draw(); + public float warmup(){ + return heat; + } - if(hasItems){ - Draw.color(heatColor); - Draw.alpha(heat * 0.4f + Mathf.absin(Time.time, 8f, 0.6f) * heat); - Draw.rect(topRegion, x, y); - Draw.reset(); - } - - if(hasLiquids){ - Drawf.liquid(liquidRegion, x, y, liquids.currentAmount() / liquidCapacity, liquids.current().color); - } + @Override + public float totalProgress(){ + return totalTime; } @Override diff --git a/core/src/mindustry/world/blocks/power/PowerGenerator.java b/core/src/mindustry/world/blocks/power/PowerGenerator.java index fe86c5fd15..0926d0edc7 100644 --- a/core/src/mindustry/world/blocks/power/PowerGenerator.java +++ b/core/src/mindustry/world/blocks/power/PowerGenerator.java @@ -1,19 +1,24 @@ package mindustry.world.blocks.power; import arc.*; +import arc.graphics.g2d.*; import arc.math.*; import arc.struct.*; import arc.util.*; import arc.util.io.*; +import mindustry.entities.units.*; import mindustry.gen.*; import mindustry.graphics.*; import mindustry.ui.*; +import mindustry.world.draw.*; import mindustry.world.meta.*; public class PowerGenerator extends PowerDistributor{ /** The amount of power produced per tick in case of an efficiency of 1.0, which represents 100%. */ public float powerProduction; public Stat generationType = Stat.basePowerGeneration; + public DrawBlock drawer = new DrawBlock(); + public @Nullable String[] iconOverride; public PowerGenerator(String name){ super(name); @@ -22,6 +27,24 @@ public class PowerGenerator extends PowerDistributor{ flags = EnumSet.of(BlockFlag.generator); } + @Override + public TextureRegion[] icons(){ + if(iconOverride != null){ + var out = new TextureRegion[iconOverride.length]; + for(int i = 0; i < out.length; i++){ + out[i] = Core.atlas.find(name + iconOverride[i]); + } + return out; + } + return drawer.icons(this); + } + + @Override + public void load(){ + super.load(); + drawer.load(this); + } + @Override public void setStats(){ super.setStats(); @@ -41,6 +64,11 @@ public class PowerGenerator extends PowerDistributor{ } } + @Override + public void drawRequestRegion(BuildPlan plan, Eachable list){ + drawer.drawPlan(this, plan, list); + } + @Override public boolean outputsItems(){ return false; @@ -51,6 +79,17 @@ public class PowerGenerator extends PowerDistributor{ /** The efficiency of the producer. An efficiency of 1.0 means 100% */ public float productionEfficiency = 0.0f; + @Override + public void draw(){ + drawer.drawBase(this); + } + + @Override + public void drawLight(){ + super.drawLight(); + drawer.drawLights(this); + } + @Override public float ambientVolume(){ return Mathf.clamp(productionEfficiency); diff --git a/core/src/mindustry/world/draw/DrawLiquidRegion.java b/core/src/mindustry/world/draw/DrawLiquidRegion.java index c1c27fb02f..b8c1c11f2f 100644 --- a/core/src/mindustry/world/draw/DrawLiquidRegion.java +++ b/core/src/mindustry/world/draw/DrawLiquidRegion.java @@ -28,6 +28,7 @@ public class DrawLiquidRegion extends DrawBlock{ @Override public void drawBase(Building build){ + if(!build.block.hasLiquids) return; Liquid drawn = drawLiquid != null ? drawLiquid : build.liquids.current(); Drawf.liquid(liquid, build.x, build.y, diff --git a/core/src/mindustry/world/draw/DrawPistons.java b/core/src/mindustry/world/draw/DrawPistons.java new file mode 100644 index 0000000000..f559ab057d --- /dev/null +++ b/core/src/mindustry/world/draw/DrawPistons.java @@ -0,0 +1,36 @@ +package mindustry.world.draw; + +import arc.*; +import arc.graphics.g2d.*; +import arc.math.*; +import arc.math.geom.*; +import arc.util.*; +import mindustry.entities.units.*; +import mindustry.gen.*; +import mindustry.world.*; + +public class DrawPistons extends DrawBlock{ + public float sinMag = 4f, sinScl = 6f, sinOffset = 60f, sideOffset = 0f, lenOffset = -1f; + public TextureRegion region1, region2; + + @Override + public void drawPlan(Block block, BuildPlan plan, Eachable list){ + + } + + @Override + public void drawBase(Building build){ + for(int i = 0; i < 4; i++){ + float len = Mathf.absin(build.totalProgress() + sinOffset + sideOffset * sinScl * i, sinScl, sinMag) + lenOffset; + Draw.rect(i >= 2 ? region2 : region1, build.x + Geometry.d4[i].x * len, build.y + Geometry.d4[i].y * len, i * 90); + } + } + + @Override + public void load(Block block){ + super.load(block); + + region1 = Core.atlas.find(block.name + "-piston0"); + region2 = Core.atlas.find(block.name + "-piston1"); + } +} diff --git a/core/src/mindustry/world/draw/DrawTurbines.java b/core/src/mindustry/world/draw/DrawTurbines.java new file mode 100644 index 0000000000..2298fd585e --- /dev/null +++ b/core/src/mindustry/world/draw/DrawTurbines.java @@ -0,0 +1,43 @@ +package mindustry.world.draw; + +import arc.*; +import arc.graphics.g2d.*; +import arc.util.*; +import mindustry.entities.units.*; +import mindustry.gen.*; +import mindustry.world.*; + +public class DrawTurbines extends DrawBlock{ + public TextureRegion[] turbines = new TextureRegion[2]; + public TextureRegion cap; + public float turbineSpeed = 2f; + + @Override + public void drawPlan(Block block, BuildPlan plan, Eachable list){ + + } + + @Override + public void drawBase(Building build){ + if(!turbines[0].found()) return; + + float totalTime = build.totalProgress(); + Draw.rect(turbines[0], build.x, build.y, totalTime * turbineSpeed); + Draw.rect(turbines[1], build.x, build.y, -totalTime * turbineSpeed); + + if(cap.found()){ + Draw.rect(cap, build.x, build.y); + } + } + + @Override + public void load(Block block){ + super.load(block); + + cap = Core.atlas.find(block.name + "-cap"); + + for(int i = 0; i < 2; i++){ + turbines[i] = Core.atlas.find(block.name + "-turbine" + i); + } + } +} diff --git a/core/src/mindustry/world/draw/DrawWarmupRegion.java b/core/src/mindustry/world/draw/DrawWarmupRegion.java new file mode 100644 index 0000000000..540131a546 --- /dev/null +++ b/core/src/mindustry/world/draw/DrawWarmupRegion.java @@ -0,0 +1,36 @@ +package mindustry.world.draw; + +import arc.*; +import arc.graphics.*; +import arc.graphics.g2d.*; +import arc.math.*; +import arc.util.*; +import mindustry.entities.units.*; +import mindustry.gen.*; +import mindustry.world.*; + +public class DrawWarmupRegion extends DrawBlock{ + public float sinMag = 0.6f, sinScl = 8f; + public Color color = Color.valueOf("ff9b59"); + public TextureRegion region; + + @Override + public void drawPlan(Block block, BuildPlan plan, Eachable list){ + + } + + @Override + public void drawBase(Building build){ + Draw.color(color); + Draw.alpha(build.warmup() * (1f - sinMag) + Mathf.absin(Time.time, sinScl, sinMag) * build.warmup()); + Draw.rect(region, build.x, build.y); + Draw.reset(); + } + + @Override + public void load(Block block){ + super.load(block); + + region = Core.atlas.find(block.name + "-top"); + } +}