From 8d05b878d761439bf8d0ad417bf26d74d513d8ba Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 16 Nov 2021 14:54:23 -0500 Subject: [PATCH] oxidation chamber implementation --- .../production/oxidation-chamber-bottom.png | Bin 0 -> 462 bytes .../production/oxidation-chamber-glass.png | Bin 0 -> 410 bytes .../production/oxidation-chamber-glow.png | Bin 0 -> 4650 bytes .../production/oxidation-chamber-heat.png | Bin 0 -> 7544 bytes .../production/oxidation-chamber-liquid.png | Bin 0 -> 630 bytes .../production/oxidation-chamber-top1.png | Bin 0 -> 650 bytes .../production/oxidation-chamber-top2.png | Bin 0 -> 651 bytes .../blocks/production/oxidation-chamber.png | Bin 662 -> 1729 bytes .../blocks/production/silicon-arc-furnace.png | Bin 2686 -> 1678 bytes core/assets/icons/icons.properties | 1 + core/assets/logicids.dat | Bin 3294 -> 3313 bytes core/src/mindustry/content/Blocks.java | 14 ++++++++++---- .../mindustry/entities/comp/BuildingComp.java | 9 +++++++-- core/src/mindustry/mod/ContentParser.java | 1 + core/src/mindustry/world/Block.java | 6 +++--- .../world/blocks/heat/HeatProducer.java | 8 ++++++-- .../mindustry/world/draw/DrawArcSmelter.java | 15 +++++++++------ core/src/mindustry/world/draw/DrawBlock.java | 2 +- .../{DrawHeat.java => DrawHeatInput.java} | 3 ++- .../mindustry/world/draw/DrawHeatOutput.java | 9 +++++---- .../world/draw/DrawLiquidRegion.java | 11 +++++------ 21 files changed, 50 insertions(+), 29 deletions(-) create mode 100644 core/assets-raw/sprites/blocks/production/oxidation-chamber-bottom.png create mode 100644 core/assets-raw/sprites/blocks/production/oxidation-chamber-glass.png create mode 100644 core/assets-raw/sprites/blocks/production/oxidation-chamber-glow.png create mode 100644 core/assets-raw/sprites/blocks/production/oxidation-chamber-heat.png create mode 100644 core/assets-raw/sprites/blocks/production/oxidation-chamber-liquid.png create mode 100644 core/assets-raw/sprites/blocks/production/oxidation-chamber-top1.png create mode 100644 core/assets-raw/sprites/blocks/production/oxidation-chamber-top2.png rename core/src/mindustry/world/draw/{DrawHeat.java => DrawHeatInput.java} (94%) diff --git a/core/assets-raw/sprites/blocks/production/oxidation-chamber-bottom.png b/core/assets-raw/sprites/blocks/production/oxidation-chamber-bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..4f4b6a2b8fa10ba52de5f54471a2bd0c9083c362 GIT binary patch literal 462 zcmeAS@N?(olHy`uVBq!ia0y~yU`POA4mJh`hDS5XEf^RW7>k44ofy`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/oxidation-chamber-glass.png b/core/assets-raw/sprites/blocks/production/oxidation-chamber-glass.png new file mode 100644 index 0000000000000000000000000000000000000000..129d100c57b6a772ecb6be160dfe48b472674e15 GIT binary patch literal 410 zcmeAS@N?(olHy`uVBq!ia0y~yU`POA4mJh`hDS5XEf^RW7>k44ofy`glX=O&z!>7` z;uumf=k1--MTZr57#w#0|9}3=rIJfL>(nKcC+w*{b8w=-F@A&FApHysA=}UMJrG{I z_1f>+``=4`F5&*M;-mZ~(TCY(4B^(=7qTviDn#?!2P@6I9v8pXLvxG#=EoJ`8UB?f z7gpJR+1U_i*k*d<)nS+SZ#p{+pD5k&);nAvD44u!_kzH_s^2e^B%0z}>{Hw4GM?vL zbL+=#G5On@cnzbc8E@ON=DZjK0|SG@@znJZ={_0m(i0!6vd=VKD4QA5cR20HyAN`I zyJYk=9k$-PxB1VU4N5h~HcdGxl3>KT;u)Vd=er5YAl*}pYs9o)XLYW~6>XEVd7agH zLSN;udP-P*zuexnhb}Ok`Sr(s@`Q&9x7Dhjwk-&i{^jvx8&|Md&ac0pQ(83-wtS1% ztWMaLeX9NvYtG|qM^mNm!Tc*(9?o4*&I+=G!Qs03{~HH5jrzL$KzvVEKbLh*2~7ZN C8Lh?u literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/production/oxidation-chamber-glow.png b/core/assets-raw/sprites/blocks/production/oxidation-chamber-glow.png new file mode 100644 index 0000000000000000000000000000000000000000..f1a3713cb82ed8c47b60678ef72bfd3a8042fc77 GIT binary patch literal 4650 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 literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/production/oxidation-chamber-heat.png b/core/assets-raw/sprites/blocks/production/oxidation-chamber-heat.png new file mode 100644 index 0000000000000000000000000000000000000000..1fbb3a69f36f37f7cfe020ac6742ecd085195d8a GIT binary patch literal 7544 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 literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/production/oxidation-chamber-liquid.png b/core/assets-raw/sprites/blocks/production/oxidation-chamber-liquid.png new file mode 100644 index 0000000000000000000000000000000000000000..6cad59a0bd66544a0d3d755acc7b31fd2b26a5f8 GIT binary patch literal 630 zcmeAS@N?(olHy`uVBq!ia0y~yU`POA4mJh`hDS5XEf^RW7>k44ofy`glX=O&z+~X* z;uumf=j|NFvStGwm$&=w{XbQ5F=MiOC*w)uW&hVV8((Ue$hyOn0S0C`g>zdR-j;j& z#QUoEr;lvyxp46b`|24RT25>}$scBLFz&(CC+zRkBD#0a{&V1F%lpXsFY|o1FIn-W z_Uwk0$LEs&L(;mE>)@plF}XSjI58DER;NycJ-cL)bcgVZZmco6i2Z{Ni6W_ z=;kb9p3+%hpcvZVom(rmG%s@Hvq^s(mPT(9DE6*faKUzOT$yj3L3DYh(Vh8>e~zx& z#mJDL8YkakCZQd*3Ib<~YM zz6u3q28IH;INv*o%ktvR)jk%~fBvcJmqpEjkBuK8;-!1oE z>6Yh^JjeS!8T>|V8Io;Mc%l6%mwcEf^ITtx??VivrM2usp8C|G%WbEH$sgMjVKu(&_4 Z=nq5Cri#LrXKKk44ofy`glX=O&z~tiT z;uumf=j~nVpu+|ttq&*juyQBdVA1tn;Cpz3gxB;)9_Po?ayNAHa4*=DnRLuB?9Zf9 z{cHcfo~(G+nG!ikl#_u$!QJ{b_leL@v8^r)YO@}BvrLHD{X>XR<*M#J7lxBxMB^uY zTdB`7o#ViTe*tee4xIQGaN+Oru&J)HyTlnBl0qY|+~Mdk5KrmYso;EuRWeEML_o$L ze+I$1ee3JHYQ7g#e>L`TbrJg2T3=fi|5rv=p{eYnGb{gAmZ$?xcjNyBOuy{Pz}>QI zuBM{E0UyIO(@6dqnqePRqYk7bciEeK%G5t*z%?r&@8j+7E$_S}7<){X{V1L$$(hiy zwM$>{zR&4Ax#t6~<7h4LFD+O29?6KK>XJX7$*S$Z*9&G*5 z>&yON?~hBzn1Aqd9FSm?xLv~Fpa1@yyotGN!xQ@!oq5c^oGff_*>!l%e9s+~{4SmA z8|z6umStOH6+6YcStXe)l07d8bbo5QG3^n9^k$ia>_y2r=SmyizU2GR)W*Eg`9zgo zMxWu`GZ(T~z2T11IQC;c^K7LZ*JMj~EB0wcIId9T*}JUjqwK|XYQc8}mWjkK;_h0e z)m`<7z@U(CA7&@pu&``dCj$cmgQu&X%Q~lo FCIAWk4>SM( literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/production/oxidation-chamber-top2.png b/core/assets-raw/sprites/blocks/production/oxidation-chamber-top2.png new file mode 100644 index 0000000000000000000000000000000000000000..c946c052c8696cd9cfae2bee83f092c8f9e945d6 GIT binary patch literal 651 zcmeAS@N?(olHy`uVBq!ia0y~yU`POA4mJh`hDS5XEf^RW7>k44ofy`glX=O&z~t)b z;uumf=j~lvzas_$Z4dd6NLnzdin=dY+F2yw<;A!8R-2jo0;fd}IXajF1f`nx+??^J z($@Kp-CwVZHLs6IT6eNAFa#_ze$A{A8XUgXg+XoCBX5=ou@N<$44Ynw$164Dv~}rw zKHtgD(#~<bSx*{k#S4Vi>Ey5+Sia#ReM!e0IVeB95nmSuy} zn=QubEKCs^uHlovHnawb#wW3yF;6T5n;*vWdt_+RA=gJ<0e9SCc z9WniT|H*8@brX)hYwLc;%B!pROkm!tF5UyHe$3Tt;Xd7b;_2&`4_DlfUq4^0y=cM8 z)n%WR6IT3~mt)27{^)cwxdZhM497SQ+*rnJvA?>Ye(}zi3@ZN>MGEB&M4G<#&ItLj zZ$a>vx@QUT6W%y2So)U3lSM}?h2sIc_oTLnDdtDEiLl?8@suH2ST?zM9dnL}wN zjEAh##k~tum(58#CKsFvr$-F=7|B>l0&zySo^81&c zr?>C7um9_Jv)?{G@pWIR|JIyuU%uUK-~XNIq0Yb6NA@%9VCU$0pZ7oXQ9PrCF-zDV zzyDJo?Pn+mN|V3F42mYIKbCv=>2Eo1;3Ai9C3Ls z6izw+xVsLr)r^{fny4_JH8^`#{SIBGE{ zY}6^>Vo76&W9(3)oF2ovbYHZ#W6gZ+vieN_6*rmIfKe z6orc8VzXC13a>q_q`XhW-?lAGq2iz5M{NcTfn7)186)&l1UN2Un`)cC>Qnc-X#&x_ zawW|Zm;zWCMdKM898PrI=Ti_;XKoaXXMNzfLg0SZd{u^3ZfeT=*bj6sy|TzDqBC+I zM>yx<4tue~M}nePG9472()!??kHkkwj%oix4OcYy^o6}y^Mi{;q9I&h)BXNG)khaR zN>|trefe#Yf&;@kw^tjsryX@yFko76$XH;7*~6H7&sQw&5MRs0@IY0}@dcZJV}rX! z!A1r*jthlbwDz$#W;#lqW=P0NVSFR7K-_39!ye69qV;VXR=xLNm@UhtFl*6NhCRRH zR2iQ128uSU*mqWr0S>!AtY$KBs@Qt_!tv%Cg$#QBhc1e2?Fu-W&XA%Iv2o^)RX+q9 zy8o|k{kWvPP^)FtkFFnb4chlJnsiv+*Re7%C+^v=Wv6XtbNB*_GDn)W_nrxX3TxiE zXWf2hdzD*~l}YJe-in548`pF0on_{H#63CiZEvoq7>nBy zrg6E|AtT!{^ijCu38opzu8+!{Exz!ZthqadOYzT~i@%gUN^-2;vq!A*#(WLe=twap zrG4A~EvO84w)oQjWzkxlU5*_(pUys8>#)I$yZ!&ntSxij3eaqm2tQ;1blYgwvMCWtl#Hg*6nN)PMTKLbzEbRJ;0I}`r$vHLY39_lE;iJ0(%zi zW>~Oq7emGGO4mOU4UCC(3syD+?A;f_+#$DO&GX3_8}ojjG;-UL(U^YpmOeiNvtrdE z*K@Nq7_<#{E4Ua3i0(i2KVrYuKK6xw(zPWy5`XVzWY9mhsxGvK+vz3$b|V3S#7)t+ zV_jIAmN%-~6)|jQX~=mwW3pRncErXXQBFpNo2?X%UkGQIvfyI7Q{M%5HglX^cpQ1(`u!$-@SX~_s#ws1_lNOPgg&ebxsLQ0Q64y@&Et; literal 662 zcmeAS@N?(olHy`uVBq!ia0y~yU@!n-4mJh`hH$2z?FU<&Yb zaSX|5ygFlJ-faVcHhXS4EAdz+i4%)-v_82>8c90tdLn4_g|UfAx9d!-wdh;!l(Uzl zE-LA=GO0MrF9^Q9aG7JU`$VP8&R^!iQ@;G&^Z4b9qx1Ez*WY~gZDmTH)))ELi_5h7 z6k^w$7i+b&5EmAIy_r=)FyPePmL~RY#uL|D`1ozvil%V#Z}{`|!|f{PzklqxLQQK+ zCp|c5%v5TdYjyJhVJdN!AB3_|Rx#uq) zzkfG|zlr_4$fU4StZctEmt8vit!JV3`X_rkmrmckC^@cwrJ0%Tm(LCBrld0q$C!&T z^H1YgVt3<)k{~yKQ={|TQ$E6)4-%i`h0NqwX=c`Y&u@7P`@){Kx*aw9#8+N&yB^2# z>l~Zj&K`LtITL2X4_@snKI@52V2jh-wp~)|^~6it*(ZhBE?LbpHKMi6q+r|51(vtKZOPfhVvNoi@hZGsiQ z@7PY=diEF>f62Push^i|amqdT_;LB?wA3W63Xct)%Ujw#nCSCnI>l_X!98tj14ILgs9Ul1=C4cVkfzzQ3>ToS0mT$R*z= zeEb0(e`_j>thg&~xFwvbvkTiTGHccR{;T)oW=Pv)uq}J1)%^A2x5+=g|BCs-? Vfz-{49SjT%44$rjF6*2UngFDWB?|xm 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 4696b92ab107b9fae13baa5c550d80fdc1cf9245..d4481b2f65327497a880ef38f81d2ca34d0f401f 100644 GIT binary patch delta 1662 zcmew-(#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~DWM4fl)(R9 delta 2678 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 PU|{fc^>bP0l+XkKGu9AW diff --git a/core/assets/icons/icons.properties b/core/assets/icons/icons.properties index c4b96bcd6c..f306ac249f 100755 --- a/core/assets/icons/icons.properties +++ b/core/assets/icons/icons.properties @@ -444,3 +444,4 @@ 63262=electrolyzer|block-electrolyzer-ui 63261=ozone|liquid-ozone-ui 63260=reinforced-liquid-junction|block-reinforced-liquid-junction-ui +63259=oxidation-chamber|block-oxidation-chamber-ui diff --git a/core/assets/logicids.dat b/core/assets/logicids.dat index 337afe31799ea352aad133a1137965f29415b1be..80c73da03701fb018abccc74fc7d14ddeedd61ee 100644 GIT binary patch delta 33 ocmca7`B9RIVf#j=4lV(~{EEz!#FEVXJl*7s#N4FK?OfqZ0Lw-TwEzGB delta 16 Xcmew;c~6pwVcSNg4zA5}xk8u#HY^3N diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index d0c9b976cc..ddd3696c5b 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -935,7 +935,7 @@ public class Blocks implements ContentList{ craftTime = 30f; size = 2; hasPower = hasItems = hasLiquids = true; - rotatePlan = false; + rotateDraw = false; consumes.liquid(Liquids.oil, 0.1f); consumes.power(0.7f); @@ -987,8 +987,6 @@ public class Blocks implements ContentList{ }}; //TODO sprite - //TODO 'oxidation chamber' - if(false) oxidationChamber = new HeatProducer("oxidation-chamber"){{ requirements(Category.crafting, with(Items.tungsten, 60, Items.graphite, 30)); size = 3; @@ -999,11 +997,19 @@ public class Blocks implements ContentList{ consumes.item(Items.beryllium); consumes.power(1f); + rotateDraw = false; + + //TODO rotor? + //TODO vent + iconOverride = new String[]{"-bottom", "", "-top1", "-glass"}; + drawer = new DrawMulti(new DrawRegion("-bottom"), new DrawLiquidRegion(), new DrawBlock(), new DrawHeatOutput(), new DrawRegion("-glass")); + craftTime = 60f * 3f; liquidCapacity = 30f; heatOutput = 8f; }}; + //TODO check sprite correctness heatReactor = new HeatProducer("heat-reactor"){{ //TODO quadvent //TODO coolant? @@ -1021,7 +1027,7 @@ public class Blocks implements ContentList{ size = 3; itemCapacity = 20; hasPower = hasItems = true; - drawer = new DrawMulti(new DrawCrucible(), new DrawHeat()); + drawer = new DrawMulti(new DrawCrucible(), new DrawHeatInput()); ambientSound = Sounds.smelter; ambientSoundVolume = 0.07f; diff --git a/core/src/mindustry/entities/comp/BuildingComp.java b/core/src/mindustry/entities/comp/BuildingComp.java index 81e5064f18..3eb4c2573d 100644 --- a/core/src/mindustry/entities/comp/BuildingComp.java +++ b/core/src/mindustry/entities/comp/BuildingComp.java @@ -337,6 +337,11 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, return rotation * 90; } + /** @return preferred rotation of main texture region to be drawn */ + public float drawrot(){ + return block.rotate && block.rotateDraw ? rotation * 90 : 0f; + } + public Floor floor(){ return tile.floor(); } @@ -930,9 +935,9 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, public void draw(){ if(block.variants == 0){ - Draw.rect(block.region, x, y, block.rotate ? rotdeg() : 0); + Draw.rect(block.region, x, y, drawrot()); }else{ - Draw.rect(block.variantRegions[Mathf.randomSeed(tile.pos(), 0, Math.max(0, block.variantRegions.length - 1))], x, y, block.rotate ? rotdeg() : 0); + Draw.rect(block.variantRegions[Mathf.randomSeed(tile.pos(), 0, Math.max(0, block.variantRegions.length - 1))], x, y, drawrot()); } drawTeamTop(); diff --git a/core/src/mindustry/mod/ContentParser.java b/core/src/mindustry/mod/ContentParser.java index f5840f7df6..6e9f49d035 100644 --- a/core/src/mindustry/mod/ContentParser.java +++ b/core/src/mindustry/mod/ContentParser.java @@ -64,6 +64,7 @@ public class ContentParser{ }); put(Sortf.class, (type, data) -> field(UnitSorts.class, data)); put(Interp.class, (type, data) -> field(Interp.class, data)); + put(Blending.class, (type, data) -> field(Blending.class, data)); put(CacheLayer.class, (type, data) -> field(CacheLayer.class, data)); put(Attribute.class, (type, data) -> Attribute.get(data.asString())); put(Schematic.class, (type, data) -> { diff --git a/core/src/mindustry/world/Block.java b/core/src/mindustry/world/Block.java index 2a2c137d29..e77f139333 100644 --- a/core/src/mindustry/world/Block.java +++ b/core/src/mindustry/world/Block.java @@ -90,8 +90,8 @@ public class Block extends UnlockableContent{ public boolean solidifes; /** whether this is rotatable */ public boolean rotate; - /** if set to plan, the plan region won't rotate when drawing */ - public boolean rotatePlan = true; + /** if rotate is true and this is false, the region won't rotate when drawing */ + public boolean rotateDraw = true; /** number of different variant regions to use */ public int variants = 0; /** whether to draw a rotation arrow - this does not apply to lines of blocks */ @@ -579,7 +579,7 @@ public class Block extends UnlockableContent{ public void drawRequestRegion(BuildPlan plan, Eachable list){ TextureRegion reg = getRequestRegion(plan, list); - Draw.rect(reg, plan.drawx(), plan.drawy(), !rotate || !rotatePlan ? 0 : plan.rotation * 90); + Draw.rect(reg, plan.drawx(), plan.drawy(), !rotate || !rotateDraw ? 0 : plan.rotation * 90); if(plan.worldContext && player != null && teamRegion != null && teamRegion.found()){ if(teamRegions[player.team().id] == teamRegion) Draw.color(player.team().color); diff --git a/core/src/mindustry/world/blocks/heat/HeatProducer.java b/core/src/mindustry/world/blocks/heat/HeatProducer.java index c547923be8..9ccb8497e3 100644 --- a/core/src/mindustry/world/blocks/heat/HeatProducer.java +++ b/core/src/mindustry/world/blocks/heat/HeatProducer.java @@ -14,9 +14,13 @@ public class HeatProducer extends GenericCrafter{ public HeatProducer(String name){ super(name); - drawer = new DrawHeatOutput(); - update = solid = rotate = true; + drawer = new DrawMulti(new DrawHeatOutput(){{ + drawRegion = true; + }}); + rotateDraw = false; + rotate = true; canOverdrive = false; + drawArrow = true; } @Override diff --git a/core/src/mindustry/world/draw/DrawArcSmelter.java b/core/src/mindustry/world/draw/DrawArcSmelter.java index 1291d35722..d093d6e3b4 100644 --- a/core/src/mindustry/world/draw/DrawArcSmelter.java +++ b/core/src/mindustry/world/draw/DrawArcSmelter.java @@ -16,23 +16,26 @@ public class DrawArcSmelter extends DrawBlock{ public float alpha = 0.68f; 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 Blending blending = Blending.additive; @Override public void draw(GenericCrafterBuild build){ - Draw.rect(bottom, build.x, build.y); + if(drawBottom) Draw.rect(bottom, build.x, build.y); if(build.warmup > 0f && flameColor.a > 0.001f){ Lines.stroke(circleStroke * build.warmup); float si = Mathf.absin(flameRadiusScl, flameRadiusMag); float a = alpha * build.warmup; - Draw.blend(Blending.additive); + Draw.blend(blending); Draw.color(midColor, a); - Fill.circle(build.x, build.y, flameRad + si); + if(drawCenter) Fill.circle(build.x, build.y, flameRad + si); Draw.color(flameColor, a); - Lines.circle(build.x, build.y, (flameRad + circleSpace + si) * build.warmup); + if(drawCenter) Lines.circle(build.x, build.y, (flameRad + circleSpace + si) * build.warmup); Lines.stroke(particleStroke * build.warmup); @@ -49,8 +52,8 @@ public class DrawArcSmelter extends DrawBlock{ Draw.reset(); } - Draw.rect(build.block.region, build.x, build.y); - if(top.found()) Draw.rect(top, build.x, build.y); + if(drawRegion) Draw.rect(build.block.region, build.x, build.y); + if(drawTop && top.found()) Draw.rect(top, build.x, build.y); } @Override diff --git a/core/src/mindustry/world/draw/DrawBlock.java b/core/src/mindustry/world/draw/DrawBlock.java index e769c1585f..f1f32c5560 100644 --- a/core/src/mindustry/world/draw/DrawBlock.java +++ b/core/src/mindustry/world/draw/DrawBlock.java @@ -15,7 +15,7 @@ public class DrawBlock{ /** Draws the block. */ public void draw(GenericCrafterBuild build){ - Draw.rect(build.block.region, build.x, build.y, build.block.rotate ? build.rotdeg() : 0); + Draw.rect(build.block.region, build.x, build.y, build.drawrot()); } /** Draws any extra light for the block. */ diff --git a/core/src/mindustry/world/draw/DrawHeat.java b/core/src/mindustry/world/draw/DrawHeatInput.java similarity index 94% rename from core/src/mindustry/world/draw/DrawHeat.java rename to core/src/mindustry/world/draw/DrawHeatInput.java index a67c10f4d3..a0361bdd8f 100644 --- a/core/src/mindustry/world/draw/DrawHeat.java +++ b/core/src/mindustry/world/draw/DrawHeatInput.java @@ -9,7 +9,8 @@ import mindustry.world.*; import mindustry.world.blocks.production.GenericCrafter.*; import mindustry.world.blocks.production.HeatCrafter.*; -public class DrawHeat extends DrawBlock{ +/** Not standalone. */ +public class DrawHeatInput extends DrawBlock{ public Color heatColor = new Color(1f, 0.22f, 0.22f, 0.8f); public float heatPulse = 0.3f, heatPulseScl = 10f; diff --git a/core/src/mindustry/world/draw/DrawHeatOutput.java b/core/src/mindustry/world/draw/DrawHeatOutput.java index 1a8bf20e6d..36783e09ed 100644 --- a/core/src/mindustry/world/draw/DrawHeatOutput.java +++ b/core/src/mindustry/world/draw/DrawHeatOutput.java @@ -17,10 +17,11 @@ public class DrawHeatOutput extends DrawBlock{ public Color heatColor = new Color(1f, 0.22f, 0.22f, 0.8f); public float heatPulse = 0.3f, heatPulseScl = 10f, glowMult = 1.2f; + public boolean drawRegion = false; @Override public void draw(GenericCrafterBuild build){ - Draw.rect(build.block.region, build.x, build.y); + if(drawRegion) Draw.rect(build.block.region, build.x, build.y); Draw.rect(build.rotation > 1 ? top2 : top1, build.x, build.y, build.rotdeg()); @@ -28,9 +29,9 @@ public class DrawHeatOutput extends DrawBlock{ Draw.z(Layer.blockAdditive); Draw.blend(Blending.additive); Draw.color(heatColor, heater.heatFrac() * (heatColor.a * (1f - heatPulse + Mathf.absin(heatPulseScl, heatPulse)))); - Draw.rect(heat, build.x, build.y, build.rotdeg()); + if(heat.found()) Draw.rect(heat, build.x, build.y, build.rotdeg()); Draw.color(Draw.getColor().mul(glowMult)); - Draw.rect(glow, build.x, build.y); + if(glow.found()) Draw.rect(glow, build.x, build.y); Draw.blend(); Draw.color(); } @@ -38,7 +39,7 @@ public class DrawHeatOutput extends DrawBlock{ @Override public void drawPlan(GenericCrafter block, BuildPlan plan, Eachable list){ - Draw.rect(block.region, plan.drawx(), plan.drawy()); + if(drawRegion) Draw.rect(block.region, plan.drawx(), plan.drawy()); Draw.rect(plan.rotation > 1 ? top2 : top1, plan.drawx(), plan.drawy(), plan.rotation * 90); } diff --git a/core/src/mindustry/world/draw/DrawLiquidRegion.java b/core/src/mindustry/world/draw/DrawLiquidRegion.java index ac2e1ce14f..fe2c00787f 100644 --- a/core/src/mindustry/world/draw/DrawLiquidRegion.java +++ b/core/src/mindustry/world/draw/DrawLiquidRegion.java @@ -29,12 +29,11 @@ public class DrawLiquidRegion extends DrawBlock{ @Override public void draw(GenericCrafterBuild build){ - if(drawLiquid != null){ - Drawf.liquid(liquid, build.x, build.y, - build.liquids.get(drawLiquid) / build.block.liquidCapacity, - drawLiquid.color - ); - } + Liquid drawn = drawLiquid != null ? drawLiquid : build.liquids.current(); + Drawf.liquid(liquid, build.x, build.y, + build.liquids.get(drawn) / build.block.liquidCapacity, + drawn.color + ); } @Override