From ed1d02d2c25e0ea5c442107626b992e6e1ccc07d Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 22 Jul 2021 21:07:36 -0400 Subject: [PATCH] Payload loader/unloader progress --- .../sprites/blocks/liquid/rotary-pump.png | Bin 712 -> 1193 bytes .../sprites/blocks/payload/block-loader.png | Bin 1602 -> 0 bytes .../sprites/blocks/payload/block-unloader.png | Bin 895 -> 0 bytes .../sprites/blocks/payload/factory-in-3.png | Bin 1407 -> 655 bytes .../sprites/blocks/payload/factory-out-3.png | Bin 651 -> 609 bytes .../blocks/payload/large-constructor-top.png | Bin 0 -> 2555 bytes .../blocks/payload/large-constructor.png | Bin 1260 -> 4197 bytes .../blocks/payload/payload-loader-top.png | Bin 0 -> 1032 bytes .../sprites/blocks/payload/payload-loader.png | Bin 0 -> 1412 bytes .../blocks/payload/payload-unloader-top.png | Bin 0 -> 1033 bytes .../blocks/payload/payload-unloader.png | Bin 0 -> 1417 bytes .../production/cryofluid-mixer-bottom.png | Bin 1295 -> 1290 bytes core/assets/icons/icons.properties | 2 + core/assets/logicids.dat | Bin 2884 -> 2888 bytes core/src/mindustry/content/Blocks.java | 16 ++++---- .../world/blocks/liquid/ArmoredConduit.java | 2 +- .../world/blocks/liquid/Conduit.java | 2 +- .../world/blocks/payloads/BlockLoader.java | 36 ++++++++++-------- .../world/blocks/payloads/BlockUnloader.java | 30 +++++++++++++-- gradle.properties | 2 +- tools/build.gradle | 2 +- 21 files changed, 63 insertions(+), 29 deletions(-) delete mode 100644 core/assets-raw/sprites/blocks/payload/block-loader.png delete mode 100644 core/assets-raw/sprites/blocks/payload/block-unloader.png create mode 100644 core/assets-raw/sprites/blocks/payload/large-constructor-top.png create mode 100644 core/assets-raw/sprites/blocks/payload/payload-loader-top.png create mode 100644 core/assets-raw/sprites/blocks/payload/payload-loader.png create mode 100644 core/assets-raw/sprites/blocks/payload/payload-unloader-top.png create mode 100644 core/assets-raw/sprites/blocks/payload/payload-unloader.png diff --git a/core/assets-raw/sprites/blocks/liquid/rotary-pump.png b/core/assets-raw/sprites/blocks/liquid/rotary-pump.png index 29a234b331c6fb7bf012c94a7ee57e344e1775aa..ad88b067530fc5db069a004de3efe2b8b5130757 100644 GIT binary patch delta 1174 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 i+XUt@57 diff --git a/core/assets-raw/sprites/blocks/payload/block-unloader.png b/core/assets-raw/sprites/blocks/payload/block-unloader.png deleted file mode 100644 index 2ee0b89d9bae55ce804c89c1df79800af95cf419..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 895 zcmeAS@N?(olHy`uVBq!ia0y~yU`POA4mJh`hDS5XEf^S>-8@|!Ln>~)y=z!>$AE`5 z;GULdP1BMyqK^uve-te0@yU`uP^xwRjGXA~i)+eVIe#$Nt&HFBX`RNywXR)DI=;RB z`Th6n{pPbieg3Gq#US=|&@HA9&);`5Xfe(Z@Z&CEW7+ngo@s_;qu~#8#x$1%-hZ(T zGX-We@8>+wRFKsmcj(jhd*9ceK73t&_R|;7FCMq9vb`stxj8I}^Is1`Tua)@BT|1N z8ErV;W~k14aGoc@bpiVag$1wrT^8(TjTF4_)m?Fk`JrgX505JQn>qdkwtUHZu~)(6 zKl{R0?#d;MRqQVmYkvQGTz|9p((Ci?Qx-pe;L5>%!|6ku4ReFIBI^S&rdN+78EiN* z8M0Zv95rT$5Da3R_Gs@94;GidR~S|>xF{&RUdFP5!zFcY2m=q}$`##A3qIAI2{^xj zA#(4c7glX-H;Ne-%iGH^6efoD7KB7IvA*yv3%3hN6+N$zC~<&w;jfd^EPp&?@J^J7 zOW?KRJ_NLR6yl)d=@*2b;%^D5)6 z{n*Jk?a-fsDTR6Weq3a(5I@efz~F}@2a`Yp1B(KK>7iF`^EOJaV&8a(-H_K+gwHj@ zU|oTM-{Fg%hcC{WpgCv4#VIKdrz}x>%B}u%tIpDd$S$!oQT;QQE*){4u9j7}Zrbwf z%3X06Bv>5QYrIt5`!nv+0XIKii2RL#0otGN)c-8K3Yf%5_s1(7} za7I~jX7#5@&$M;=C72#&FkCok)6V`u=?vF|B5o&zGaM5xaV!={WA=F27A96=bpFjH zX8{L8r`eW2lohtzY(C$2;haECT1(lq2b+~R7DzZU9OaOgzAN2U%WqW1z`(%Z>FVdQ I&MBb@0H!XKJOBUy diff --git a/core/assets-raw/sprites/blocks/payload/factory-in-3.png b/core/assets-raw/sprites/blocks/payload/factory-in-3.png index 79448147399c1f3956fc8ebe0faec2d6b67058e3..9ea0ed0f19111354b1c316180b7d0a775af5ca67 100644 GIT binary patch delta 609 zcmey*)z3OXWul2hy*>lOt9S+mtLY33;srILyBHZ5n6x}y978JRyuEYU_ppON!^4wZ zK@U8X3zqP^aB4DMWOvVKQU1cj?$I)TxAn~Sl>hfRm6{j*>`boqbzxv|=sUjrarw96 z8=IA!T6~^P5KR)>6=9>!--~CJcbiKN^`1T)elZ*H6$8mm3|E95`bj9>H+dgD}G}vMm)0Ut7 z)g~eH1kZiHuP!+@Ic@o?U;5PlFez!vU;i_RKyC-5N)RHu?4SulFqolM&qddY`dg_3yQT zcco`-{VR6%Uwy-N+t~N(AG+vBGENdyKqDfH8N>o=O74oguvFhIKPGr^+N*m3N;d-a zPYEA%`@U#TnzhbuDf~aDsl@LK)|NLsv@@_H?<^Dp&~aYuh^=>Rtc=aDzDfIB&@Hb09I0x zZL1XF8=&BvUzDm~s%N5Spk&9TprBw=l#*r@|j!SBBa#3bMNoIbY0?6FNr2Ntn zTO}osMG7zgac4^! z^)Y$tF?qjhv^XTgSja!EKyX@tcz|n&cG>N($>BRM&(!aJxg~bpru(zMX>2s{_pfMV z;Aj9N8RrL|r%&I1Jj5+jsbHb}1P776%2?KbOb?3)29-OF3?32siMN~bypyeWEuHv# zpJs!XlapS>xqG4voIM)fwYVBuVt!1C6=mSuDdfYXpy=Ne$)NJYqkyxarGhh$ae{z$ zq6dS@5zifee*Vq2khWXHyZAO++jSlhcW$aRzkhwIIrHUw z{MVm{kNfXdKDqtz2hM4!3NZz3xHZ|SVQ#3G3d@p&t?I1|)~ly@aCjWd^5D!w$gR@yi9vEZ#;Omc~Z=@HK14zK&yZCUW9 zV&%7)zh^P2%viftP229#0&q#yfKvw3|hgZ`X16>)z!PCzZY zpnd07S=GiX^90{BzUrKMZQ~+;(Fu&7%M$1P5!*0r#_eD3`^8x+9$awR^mt_(OT??i z8^8b1I>#L58}NJIeWU(g!tW#>UbgbDRw@g7@Kt~M4%Vv&cl4_>Fn;ujl~g>?s%oq`x|qA*N9K`Q@sP2Tcv042Pd*Ph>O?W(i?5 z{qn1Bl@;6R|JydP@4n7Aua4=ixMdv6;ExW)&07x^fkG_2Lx#xh-C$yOQjy*Yktdzy46 zDlMIvaBp`O!|nf$D!Hd*1Ox>IR~|e4`t9G~FSA#iI{o^stOFzCox|*`G3SzhENJkK zY~$zJ(X;h~BjfZBIyC_YUgos&b6HH?`@xZM`9&c+jRzu8huK-{eU_`&1RMydI?T@M z^Vs9Zf(A_)UU?CNGaf(c@BhJm4}daXXJc*Nii^U#{(RWK_Q(Wv8Ja z!^*O_Awfi-hp8#h!GNot!;SHvhQf@X-;Aeur`+G4H+z14gTe~DWM4f0haZr delta 613 zcmaFJ(#<--u-?_v#WAE}&fB@ZeuoVN-0TJ18&$;{Rll#WaO!W^A?3ZpJJL04?VpMy zb>qqVw!dA`yKnie%r{jk3=9kn)sMea?z5?gKeD&zmrcA1CnF!vLvM~7b65Zh$*k4`o97DuRounVx!yi zJ^Qcmw?rRv+ImHC0kgNzvp9DL^<_?RlbRd)rX*hH@#lDPMxg5LorVV96}<6I4b~h5 zY>ej=4oI?CG&9tv3q0Uqnp62{U&GcZ=O69ge@;_=?eaY@R<=%1n}+C-7XUEl)aFm3=zWsK<8xywcf6Mg`;?rG3Y(w(XI#5PbOWm#()55*Blv3%GS(Z z^|-KvS?0!*I1cw|tPRe;nGS56%J|^HHHLzcLI#UH)(kT7@(fZIEDd66j0-yb88VVZ z8KicyHiWe?E|{6lkdZFUAZ5kA;JP8t1qLAo1_qg*>~g#T8>+qc?PFkIVDNPHb6Mw< G&;$TuApyMr diff --git a/core/assets-raw/sprites/blocks/payload/large-constructor-top.png b/core/assets-raw/sprites/blocks/payload/large-constructor-top.png new file mode 100644 index 0000000000000000000000000000000000000000..eabff724be56ff04abe930199ba2c2e3de652617 GIT binary patch literal 2555 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 literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/payload/large-constructor.png b/core/assets-raw/sprites/blocks/payload/large-constructor.png index a69f4cf290befd77c281711c10cc21c5c496c132..f82c56b17d2d1439df097ece8e9eedb1d7446a62 100644 GIT binary patch literal 4197 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 A2><{9 literal 1260 zcmeAS@N?(olHy`uVBq!ia0y~yU zJUE_o_2ALSaQ1LVfj5mDwse2q#WO>4v)p+(yWwDNzX6b35NRp#$XxRuvxN%zND@C_mwFeIK~M+qQ(Grkx@3k)m_kokg-tTQ@m* z);wAKMdPEnnvrUqkL@e|y+3~b{?b0_fzENehB?JI-ixss7_|S*V@zdXTY9LONyAT; zpKF1JuT4W}&f@jw^*8!5eE3oE?bf@`U;R?+FYWlCP{hL5%U)1#v+_;wBr}^11{r4l z2d}c$Zp)uv^3YM?!HkMq$1hB^v*BRa(y+W%XWfqnjRF^h;--pp?5ki{t@xVr#iP*5 z+Pa5_m-jDhFA?OF!-uJ6N_qcL^`KaIx)+gQK zU3b3keCBcG5cAXE8&?H2yq*~&A2(joywm=;S^eg@=f%zs8k2Z)UhffcP5!;`gTqS^zlj$% z8K}rf>=s|AzC?$om%WYAF-+{(0p{lZ&9gqP>`Z>x_)+l1WW$dN#RoQiR7iH? zK-A`hzy%?>6t)arej}zW9qcn1qK-E6Fz7yJ)VV%8_e$}ODI5FPw+d$P8nWAD%sCV$ zP<)WtomWQMP~9eDrpqy>GrasfXAfCEY7{&W^HJd;b7;8ahA%3S+UEo%epPMsissGz zXIpMlz_9F4_P=_riVF-rz2T`^6#>jLT>4L)<{NJ6YHj}csPRzhnK>U57Q8;N^3g$t zhTvn(M;d~UH@7qtA7Ey6xUOR-ZsW1RsnoAx!4HFnf4&&3wC1_L;_3m*M~y-cVm>-B z7M!aP;It^W>0r>Q$d7E>)2LnXe>2O?>@!W}k{2)aHGQ|c=WWe3&pOWAnk%llYI>Q- zo_AZ~j;%4j-Sm87*nyq4p`5+K8y@_8E}L+0@>8Y_4^DpO-|&F-*|Trwp7{SOJ{j-5 Xyk77k44ofy`glX=O&zB+( zH7kUeO;E^aa=7xqOQ1W$Uvk;!!e@{3(rvu{Sk1vuFTZIYU8AK+xU zQnL4Le1Mak<;@rYh5#qNoii<18Kz8d@)T2MxKXk7<==*>Q&m6M9rXA7@j83;;?Ey6 z6z5+0(72gPK*Q0$_XDFhg9E2jRx7^+3&RwFMQJ}8+!-7=^|IReSy&jRBpA8;aCl(H zz_2YYzly)-uKJ$)ziLz83487H&QV&GmYJn`=hvqvf4*++ogEwAB>8VWyZq$7t818E z6>JeY^Px3Pbw}F1u%z}IpamI@7T23jQOnBg_irL-iRlK zGW?0>+^V;Fb(_K5H|MH&;xBlusPqrs!!q;7H08-*huKS#SJygQdPwY>d8O!w+Gm;n z35_@67ft`rdha;@gD>70*RF=Wto_p>;KZSbn<(*n-~Z!G@}C-y^N05wJAXVxw&d@O ztTido(+%E#46hBcyJG2@@pH}s$>_J|;&ZMQx?MkO6=S?#opa?wZc`NzeaC&N&lCRp zzjQZmUY{7;`*ekeL(W-#&y3V>%nvv6+~qBru&mbXThW!EA8Ox%Qv4L+%};n|-V)D> ze(9{TMQWddP|VeA?;TUNP2KlyrxfR`Hb313FWFwco@br$_*%g0Bn6#?(?7IEn4gGR z`+K#?d$U5%7rHeERTCe66KtsZtuC^CeR-nS3)7l|Qxrh%arv)cTJ!Kp#m3(sT3@D= zr?u-(@#470{-llni~VO`r~6Awjvrj(Ta(ms>(2Kx0@bfn@{>g$uWHl3GHt?^iP1f) z<@N;xH&tmLmbk83vv3;A)wFqr>!N=+@p4{#o0A-K{X=UIr*d1oUuVmk|Lg{T>ZiQ1 zn4#M6FkU6xX%j=+dv$lGt-W_nXs#5x!X&Y8o(QKFBagl8+LjdzZS(ux4#g`kN=sgm TUVn*!fq}u()z4*}Q$iB}`zPI5 literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/payload/payload-loader.png b/core/assets-raw/sprites/blocks/payload/payload-loader.png new file mode 100644 index 0000000000000000000000000000000000000000..19762a9ef46e49d5e71e36ca20ef2fa6b60cd640 GIT binary patch literal 1412 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 X%5#=qvtt<;7#KWV{an^LB{Ts56eZMX literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/payload/payload-unloader.png b/core/assets-raw/sprites/blocks/payload/payload-unloader.png new file mode 100644 index 0000000000000000000000000000000000000000..2511a0db65fb117fb5188631e06109a6e755ef18 GIT binary patch literal 1417 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 YS3Y@8NGT+kfq{X+)78&qol`;+02c>F^#A|> delta 1262 zcmeC;>gSqZSbx&f#WAE}&eiCRc_M}awdE?V0t+-Qxe9s-F4R8sm!YInK-6{7l|K$z z4}?ES3YuOK6ba#&INw4^aG{8x)zg3yCYNfFg9l&Fl{|mrUTWplyX(rYy}w&wv+a3R zyMFxH>t@$3iumbm+cfWfjIG`kVX40#e~3)p{P|ei1m^{rpBOIGvp48hP|{L%1_(r@)KDNL9vc9ourM4 zCQ{cPHQqOq>6R%xnX3BfTKx@HiMEFOKd&6|yu9(sjmfv{r!rg-xta1UgY~L-?*Bzh z7Sr_QQ)Y*aLd$8+LlFmd7M}|_q4(m=o@a4yV(k)7`y_QS-jO*|KatWb_mV zrwE^ZB_pWuh%bp}LQlJ!_Zp>S4?#yIevKrC)H_!4`)i9?9-R2X!|>+KyQ}Mb&z-wD zW5Oi$D>e#gExXUNp3wf3`C#5t8^vkO0pIISDkg+(;{0SNeQn{f&cnwT)^hkx>c4rZ zOQF*3{m+9bcJpO7@vhJb*u_6Z^?h>}XQIspog037+t%4E*uE!zQ9Z*f<@j6MPFt-{ zZ@l-(PQ`!1hnKID-$xfSF zlDhMMV;9C1nTDmSa+t3vn>z?NDBW@u4C0UVWHe#ft}C|JVMQs#UvS zjdrm2HN9J9^EN0zvEBHN9qzf@;0)xoO{G9B$oJ zV!be_JR_(j<`dr>4pYXUvarT9mkpErZ(i)1#~l#N8OqHP)9K(l)p~dJvtHrXU#u*x z)$hx8M?Q*DSQ_D3FRT*$&@4@-ebL4)qcDcE(~4&+wL}*OO?2b%Y?0=d%ai{hK21#g zL-DuRyBiNCuwH(d`u0~zRp-Hkr}?{Y$A5Tx+;-~O3x72omtXeQ(S7CroxNF#&7Ed;IDHqT8n{JMsOT zBeZV?!!;|LT%o7J*CtI5`WzzYW9Y!We{tRNLo*Htey>l>mhAaDa|Qd8YY%^3;1SGL z-LbXLutkgQ$(4s&8FOWoS-4Wv@7ClJco^x2%~DRWZ0Xo&-d))wB8GHYs@O|8A$PJ-@AP4;fkjrJ5LI~xF8%QsL&b^tz@F-z&Fv% cic0z1J35Nthc0_DL35N(zQciwywr);-VoGWe10R^Txrbv969CFW3(^1p diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 72a4e1c30c..3da7f3d41c 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -96,7 +96,7 @@ public class Blocks implements ContentList{ repairPoint, repairTurret, resupplyPoint, //payloads - payloadConveyor, payloadRouter, payloadPropulsionTower, deconstructor, constructor, largeConstructor, blockLoader, blockUnloader, + payloadConveyor, payloadRouter, payloadPropulsionTower, deconstructor, constructor, largeConstructor, payloadLoader, payloadUnloader, //logic message, switchBlock, microProcessor, logicProcessor, hyperProcessor, largeLogicDisplay, logicDisplay, memoryCell, memoryBank, @@ -110,7 +110,7 @@ public class Blocks implements ContentList{ /** @deprecated use the blocks with proper names, */ @Deprecated - public static Block blockForge; + public static Block blockForge, blockLoader, blockUnloader; @Override public void load(){ @@ -2255,22 +2255,24 @@ public class Blocks implements ContentList{ size = 5; }}; - blockLoader = new BlockLoader("block-loader"){{ - requirements(Category.units, BuildVisibility.debugOnly, with(Items.thorium, 100)); + payloadLoader = new BlockLoader("payload-loader"){{ + requirements(Category.units, with(Items.thorium, 100)); hasPower = true; consumes.power(2f); size = 3; }}; - blockUnloader = new BlockUnloader("block-unloader"){{ - requirements(Category.units, BuildVisibility.debugOnly, with(Items.thorium, 100)); + payloadUnloader = new BlockUnloader("payload-unloader"){{ + requirements(Category.units, with(Items.thorium, 100)); hasPower = true; consumes.power(2f); size = 3; }}; //TODO deprecated - blockForge = deconstructor; + blockForge = constructor; + blockLoader = payloadLoader; + blockUnloader = payloadUnloader; //endregion //region sandbox diff --git a/core/src/mindustry/world/blocks/liquid/ArmoredConduit.java b/core/src/mindustry/world/blocks/liquid/ArmoredConduit.java index e404b36b44..fc2b329ce1 100644 --- a/core/src/mindustry/world/blocks/liquid/ArmoredConduit.java +++ b/core/src/mindustry/world/blocks/liquid/ArmoredConduit.java @@ -34,7 +34,7 @@ public class ArmoredConduit extends Conduit{ @Override public boolean acceptLiquid(Building source, Liquid liquid){ - return super.acceptLiquid(source, liquid) && (source.block instanceof Conduit || + return super.acceptLiquid(source, liquid) && (tile == null || source.block instanceof Conduit || source.tile.absoluteRelativeTo(tile.x, tile.y) == rotation); } } diff --git a/core/src/mindustry/world/blocks/liquid/Conduit.java b/core/src/mindustry/world/blocks/liquid/Conduit.java index 393af2e8e5..c632680714 100644 --- a/core/src/mindustry/world/blocks/liquid/Conduit.java +++ b/core/src/mindustry/world/blocks/liquid/Conduit.java @@ -130,7 +130,7 @@ public class Conduit extends LiquidBlock implements Autotiler{ public boolean acceptLiquid(Building source, Liquid liquid){ noSleep(); return (liquids.current() == liquid || liquids.currentAmount() < 0.2f) - && ((source.relativeTo(tile.x, tile.y) + 2) % 4 != rotation); + && (tile == null || (source.relativeTo(tile.x, tile.y) + 2) % 4 != rotation); } @Override diff --git a/core/src/mindustry/world/blocks/payloads/BlockLoader.java b/core/src/mindustry/world/blocks/payloads/BlockLoader.java index 001f93712a..96b192a2fe 100644 --- a/core/src/mindustry/world/blocks/payloads/BlockLoader.java +++ b/core/src/mindustry/world/blocks/payloads/BlockLoader.java @@ -15,16 +15,17 @@ public class BlockLoader extends PayloadBlock{ public final int timerLoad = timers++; public float loadTime = 2f; - public int itemsLoaded = 5; - public float liquidsLoaded = 5f; + public int itemsLoaded = 8; + public float liquidsLoaded = 40f; public int maxBlockSize = 2; public BlockLoader(String name){ super(name); hasItems = true; - itemCapacity = 25; - //liquidCapacity = 25; + hasLiquids = true; + itemCapacity = 100; + liquidCapacity = 100f; update = true; outputsPayload = true; size = 3; @@ -61,9 +62,9 @@ public class BlockLoader extends PayloadBlock{ @Override public boolean acceptPayload(Building source, Payload payload){ return super.acceptPayload(source, payload) && - (payload instanceof BuildPayload build) && - ((build.build.block.hasItems && build.block().unloadable && build.block().itemCapacity >= 10 && build.block().size <= maxBlockSize)/* || - ((BlockPayload)payload).entity.block().hasLiquids && ((BlockPayload)payload).block().liquidCapacity >= 10f)*/); + payload instanceof BuildPayload build && + ((build.build.block.hasItems && build.block().unloadable && build.block().itemCapacity >= 10 && build.block().size <= maxBlockSize) || + build.build.block().hasLiquids && build.block().liquidCapacity >= 10f); } @Override @@ -71,6 +72,11 @@ public class BlockLoader extends PayloadBlock{ return items.total() < itemCapacity; } + @Override + public boolean acceptLiquid(Building source, Liquid liquid){ + return liquids.current() == liquid || liquids.currentAmount() < 0.2f; + } + @Override public void draw(){ Draw.rect(region, x, y); @@ -120,17 +126,17 @@ public class BlockLoader extends PayloadBlock{ } } - //load up liquids (disabled) - /* + //load up liquids if(payload.block().hasLiquids && liquids.total() >= 0.001f){ Liquid liq = liquids.current(); float total = liquids.currentAmount(); - float flow = Math.min(Math.min(liquidsLoaded * delta(), payload.block().liquidCapacity - payload.entity.liquids.get(liq) - 0.0001f), total); - if(payload.entity.acceptLiquid(payload.entity, liq, flow)){ - payload.entity.liquids.add(liq, flow); + float flow = Math.min(Math.min(liquidsLoaded * edelta(), payload.block().liquidCapacity - payload.build.liquids.get(liq)), total); + //TODO potential crash here + if(payload.build.acceptLiquid(payload.build, liq)){ + payload.build.liquids.add(liq, flow); liquids.remove(liq, flow); } - }*/ + } } } @@ -139,8 +145,8 @@ public class BlockLoader extends PayloadBlock{ } public boolean shouldExport(){ - return payload != null && - ((payload.block().hasLiquids && payload.build.liquids.total() >= payload.block().liquidCapacity - 0.001f) || + return payload != null && ( + (payload.block().hasLiquids && payload.build.liquids.total() >= payload.block().liquidCapacity - 0.001f) || (payload.block().hasItems && payload.build.items.total() >= payload.block().itemCapacity)); } } diff --git a/core/src/mindustry/world/blocks/payloads/BlockUnloader.java b/core/src/mindustry/world/blocks/payloads/BlockUnloader.java index 8f4a644fce..c86ce1e780 100644 --- a/core/src/mindustry/world/blocks/payloads/BlockUnloader.java +++ b/core/src/mindustry/world/blocks/payloads/BlockUnloader.java @@ -6,6 +6,7 @@ import mindustry.type.*; import static mindustry.Vars.*; public class BlockUnloader extends BlockLoader{ + public int offloadSpeed = 4; public BlockUnloader(String name){ super(name); @@ -28,13 +29,18 @@ public class BlockUnloader extends BlockLoader{ return false; } + @Override + public boolean acceptLiquid(Building source, Liquid liquid){ + return false; + } + @Override public void updateTile(){ if(shouldExport()){ moveOutPayload(); }else if(moveInPayload()){ - //load up items + //unload items if(payload.block().hasItems && !full()){ if(efficiency() > 0.01f && timer(timerLoad, loadTime / efficiency())){ //load up items a set amount of times @@ -50,9 +56,24 @@ public class BlockUnloader extends BlockLoader{ } } } + + //unload liquids + //TODO tile is null may crash + if(payload.block().hasLiquids && payload.build.liquids.currentAmount() >= 0.01f && + (liquids.current() == payload.build.liquids.current() || liquids.currentAmount() <= 0.2f)){ + var liq = payload.build.liquids.current(); + float remaining = liquidCapacity - liquids.currentAmount(); + float flow = Math.min(Math.min(liquidsLoaded * delta(), remaining), payload.build.liquids.currentAmount()); + + liquids.add(liq, flow); + payload.build.liquids.remove(liq, flow); + } } - dump(); + dumpLiquid(liquids.current()); + for(int i = 0; i < offloadSpeed; i++){ + dumpAccumulate(); + } } public boolean full(){ @@ -61,7 +82,10 @@ public class BlockUnloader extends BlockLoader{ @Override public boolean shouldExport(){ - return payload != null && (payload.block().hasItems && payload.build.items.empty()); + return payload != null && ( + (!payload.block().hasItems || payload.build.items.empty()) && + (!payload.block().hasLiquids || payload.build.liquids.currentAmount() <= 0.001f) + ); } } } diff --git a/gradle.properties b/gradle.properties index a5a0e68fcb..ba90b53b7a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,4 +10,4 @@ kapt.include.compile.classpath=false kotlin.stdlib.default.dependency=false #needed for android compilation android.useAndroidX=true -archash=a81197126a9190337ab9065734b5134d5f08ac05 +archash=47822d851954fd2707d51731042056450f07ca8c diff --git a/tools/build.gradle b/tools/build.gradle index d3307d5707..12f11c3126 100644 --- a/tools/build.gradle +++ b/tools/build.gradle @@ -35,7 +35,7 @@ def transformColors = { List> list -> //TODO implementing this in gradle is a bad idea //d4816b -transformColors([["a387ea", "8a73c6", "5c5e9f"], ["6e7080", "989aa4", "b0bac0"], ["bc5452", "ea8878", "feb380"], +transformColors([["bf92f9", "8a73c6", "665c9f"], ["6e7080", "989aa4", "b0bac0"], ["bc5452", "ea8878", "feb380"], ["de9458", "f8c266", "ffe18f"], ["feb380", "ea8878", "bc5452"], ["d4816b", "eab678", "ffd37f"], ["ffffff", "dcc6c6", "9d7f7f"], ["df7646", "b23a4d", "752249"], ["3c3837", "515151", "646567"], ["5757c1", "6f80e8", "88a4ff"], ["8f665b", "b28768", "c9a58f"]])