From 45bc4dcb003efee9640f41f6b9856fb75986c02d Mon Sep 17 00:00:00 2001 From: MEEPofFaith <54301439+MEEPofFaith@users.noreply.github.com> Date: Tue, 5 Jul 2022 15:41:13 -0700 Subject: [PATCH] Underflow duct (#6957) * Underflow Gate I'm not sure why ClassMap decided to import OverflowDuct instead of using the full path when being generated. * Better top sprite Also fix base asymmetry Co-authored-by: Anuken --- .../distribution/ducts/overflow-duct.png | Bin 377 -> 392 bytes .../distribution/ducts/underflow-duct-top.png | Bin 0 -> 211 bytes .../distribution/ducts/underflow-duct.png | Bin 0 -> 392 bytes core/assets/bundles/bundle.properties | 3 ++- core/src/mindustry/content/Blocks.java | 13 ++++++++++-- .../src/mindustry/content/ErekirTechTree.java | 1 + core/src/mindustry/mod/ClassMap.java | 4 +++- .../blocks/distribution/OverflowDuct.java | 20 +++++++++++++++++- 8 files changed, 36 insertions(+), 5 deletions(-) create mode 100644 core/assets-raw/sprites/blocks/distribution/ducts/underflow-duct-top.png create mode 100644 core/assets-raw/sprites/blocks/distribution/ducts/underflow-duct.png diff --git a/core/assets-raw/sprites/blocks/distribution/ducts/overflow-duct.png b/core/assets-raw/sprites/blocks/distribution/ducts/overflow-duct.png index 8bbb599c9acbd19844a858067f568735178ea071..0f647a8ae42c9aa9bbae9944eefe00dc459cc94e 100644 GIT binary patch delta 352 zcmey#)WJN#u-?hj#W5tJ_3iYHd`$)dZR?M?Hy%AAe(~benFf;bjqV11$8KH?jBjaa z-N()67IbU(YsIBHf24Jv{@-zLsx#xl+kY?KO!i&8@;3Xeyx{aTIz_E_yZMry1#z62 z(_Fx2Q7q4r?&qlT?C8sw%Cnlvot6#1n{3biD|o}ea4AQs^d1k=Fe5t>^2j&ROv257L zx^Qye9>ERjYkk<9pQTA@#%sDGK?_PUh z_G6N0^x;z19F`no&!q|3kvrCL$*AHY{ZT%(EZPT=w9|q$7yNSJK|Q| zyZ+O3vV%`%!oBs+4+#IYe5z2xF2bHTdoqJa%a@WP3I@dt4g5_hlUHo1c%{$4z`)?? L>gTe~DWM4fq|2Z& delta 337 zcmeBR{>e1Ku-@3y#W5tJ_3d<9z9t8O*7RQYgKbB;Gcvt>SM<0);5c?F;&#+4SC5Pv zyAu*sej6KGx1?rPi0bIPPcBQ76cN~EKX0$~wQaL@-3^+TelH?ajBB^J?2$7|1!h>X zKjbZVrpR$_PSXazbJKTCw@F#$)A8^@fz4M2hMRf%Rg)tGPMOsI*H&#QIvdMTymx6p z^0S;3+`F>(q)eXj@P=g$OHx-Ci)3R+lw1SX)_1cq)IxsT4*RcUpw5!cm!RYLX367} zu(qkpnhJL|#n^F%GkjJ_dl^`?I*Gv}vClEb;15a0 zhr5)_nAXi)612fGCcMSWYiTh@cFF2Z0ddjuxDI8V4tBn?ZtMSKBeoVCeO9 zaSVxQO-@l@+;c1J<9vzIq&V50BeOiWI3>wCc0En8WSFn)v2{)kdqOdb<+T2$Km#r| zRt4?%=VokWS;}+5qg!z|Pl8govXMi%z+G8~PURKP7>Z;aL)j-h=2&Ij5aLkEK4F&f zidPIpo0PB0IOIh-h_VL+3G{*ulHsX1p7NsfEZdf1ukLr2413R*$Q*QgdX0gBfx*+& K&t;ucLK6U6%SK87 literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/blocks/distribution/ducts/underflow-duct.png b/core/assets-raw/sprites/blocks/distribution/ducts/underflow-duct.png new file mode 100644 index 0000000000000000000000000000000000000000..0f647a8ae42c9aa9bbae9944eefe00dc459cc94e GIT binary patch literal 392 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}jKx9jP7LeL$-HD>V07|y zaSVxQeLH<4Uz34A+xjE!jYp4&U%WVVrh%kM^HT5+k) zA8FmE|99M*>dd(C_TP&)lYJMjyv=?qFF1XTPEqUKZoZ^vK^$l1G#9X06w9-u`#GvS zJNh!F@~ozEr)9(MCfl?B3f?dO`AJS1x9_wWe2?ZbP4ji~eX*@< zl5bF3^7RdZ9GY4}DJ)5ul?+-}cCBrm8SpS)>TmCXIRbMm8#b~ooZL4#QnFd5gE4XX z(@&l|m}ZD8diPI?6}5HXDdtgnc*Z%Tb$xY|y<0bP&I-=E*It { + node(underflowDuct); node(reinforcedContainer, () -> { node(ductUnloader, () -> { diff --git a/core/src/mindustry/mod/ClassMap.java b/core/src/mindustry/mod/ClassMap.java index c95603abac..648a2d0ed0 100644 --- a/core/src/mindustry/mod/ClassMap.java +++ b/core/src/mindustry/mod/ClassMap.java @@ -1,6 +1,8 @@ package mindustry.mod; import arc.struct.*; +import mindustry.world.blocks.distribution.OverflowDuct.*; + /** Generated class. Maps simple class names to concrete classes. For use in JSON mods. */ @SuppressWarnings("deprecation") public class ClassMap{ @@ -226,7 +228,7 @@ public class ClassMap{ classes.put("DriverState", mindustry.world.blocks.distribution.MassDriver.DriverState.class); classes.put("MassDriverBuild", mindustry.world.blocks.distribution.MassDriver.MassDriverBuild.class); classes.put("OverflowDuct", mindustry.world.blocks.distribution.OverflowDuct.class); - classes.put("DuctRouterBuild", mindustry.world.blocks.distribution.OverflowDuct.DuctRouterBuild.class); + classes.put("DuctRouterBuild", OverflowDuctBuild.class); classes.put("OverflowGate", mindustry.world.blocks.distribution.OverflowGate.class); classes.put("OverflowGateBuild", mindustry.world.blocks.distribution.OverflowGate.OverflowGateBuild.class); classes.put("Router", mindustry.world.blocks.distribution.Router.class); diff --git a/core/src/mindustry/world/blocks/distribution/OverflowDuct.java b/core/src/mindustry/world/blocks/distribution/OverflowDuct.java index 9fa8829e8d..d7099268b2 100644 --- a/core/src/mindustry/world/blocks/distribution/OverflowDuct.java +++ b/core/src/mindustry/world/blocks/distribution/OverflowDuct.java @@ -13,6 +13,7 @@ import mindustry.world.meta.*; public class OverflowDuct extends Block{ public float speed = 5f; + public boolean invert = false; public @Load(value = "@-top") TextureRegion topRegion; @@ -57,7 +58,7 @@ public class OverflowDuct extends Block{ return false; } - public class DuctRouterBuild extends Building{ + public class OverflowDuctBuild extends Building{ public float progress; public @Nullable Item current; @@ -95,11 +96,27 @@ public class OverflowDuct extends Block{ public Building target(){ if(current == null) return null; + if(invert){ //Lots of extra code. Make separate UnderflowDuct class? + Building l = left(), r = right(); + boolean lc = l != null && l.team == team && l.acceptItem(this, current), + rc = r != null && r.team == team && r.acceptItem(this, current); + + if(lc && !rc){ + return l; + }else if(rc && !lc){ + return r; + }else if(lc && rc){ + return cdump == 0 ? l : r; + } + } + Building front = front(); if(front != null && front.team == team && front.acceptItem(this, current)){ return front; } + if(invert) return null; + for(int i = -1; i <= 1; i++){ int dir = Mathf.mod(rotation + (((i + cdump + 1) % 3) - 1), 4); if(dir == rotation) continue; @@ -108,6 +125,7 @@ public class OverflowDuct extends Block{ return other; } } + return null; }