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 zcmV-m0iXW)0*C{UF@HiyL_t(oh3%KI4uUWchOfj&fyKlZ(b1KeFc}|#M=(yt+0{{B zgoK5@3l2t7+Pmu^r7Zj#E#?2X-jzcEq1*k@*<($ksoMwIZc}HhEOLe2iw^Ie`0uJ;M4LY$tx$6o369p-l6iVnQg}+=ejs zTM9L1O+roRwsw+DQifyKun`C;DiUM_Vrh8*D%85IgPBm_ZyNoLz?=}AIe@VRp_7i2 zSs8;Ihyh`j0m0+<&eOOKLW6+J)DE&m6?-fQVWmS#J+UaH>L`8AV3Ole@= yujjxM{W;|zdH zNNCu*U|}TtGc!AcWodX7EG+M1c4iqA5V}8}y*t*nn!4Rmo@d@zRTc`n7ahdRr4X1o z2jLBH<{=2qoPw}U&X>BEJY=d&h~eOHJoNwo*={d-lUNYSG=KjqC4_R#T?li%rBGw$ zY^V#mYrJHWl;PMpYy@J8iUb*fR9YT@3bpQYmn*(c%DG>VobXbQwa)ip}A=A~pi9 znWR#%Ib2tSHcF*)2y1k!vQS=Io(jTh%Tq(#uC@PTG6rHw1M_*m=wCAlL}-KJAY5}2 jfP#?jju-@H4gl~4049!wEH45c00000NkvXXu0mjfag35F diff --git a/core/assets-raw/sprites/blocks/distribution/ducts/underflow-duct-top.png b/core/assets-raw/sprites/blocks/distribution/ducts/underflow-duct-top.png new file mode 100644 index 0000000000000000000000000000000000000000..b986bc356d415825296b919a1947a0a601db4287 GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}y`Cb zjIAt7c}{qAEAHk=PzqNzawr$LE9=myyy6){k*s4V`-I0FtE?MB97@?I%u-(QilJze z@>Lm!yhsO8_JAOPUa&zjJQc@NUX-3?+fwY+{mznM?->)BgKkf+0UgHR>FVdQ&MBb@ E09(sON&o-= 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 zcmV;30eAk1P)Px$LPmj8q{2MLh|G3_jLjj@N{n6QDO{1yX2ik5^XRIu8h24t|V&+l^%$$R81~_vc1ZPe` zB<98GTzSnYBZ)bH`+_~q{&4I70McwHe%KWKBB4z4pJGBN+uVjQ_ge}zW=%p(=(cu} zO;Uzq*RT-?DJl|V1Y&7<04mhFt%I3R;cpuKjli4`oH>B81)-CUlUW&q9Ebs7m*w(F zxB{3LAxn>vT@^h*408-3;mku+g|B;BKSqlKY^Vv{*623)k`-ISbwz9hY%@uvU~9Op z2yIH|5Z36HMXsE-JQl>DE&m6?-fQVWmS#J+UaH>L`8AV3Ole@=ujjxM{W;|zd { + 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; }