From 275f6eb32f38d08d8f871de7f1fb5fdc66595cfd Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 18 Nov 2021 14:47:33 -0500 Subject: [PATCH] Overflow duct --- .../distribution/ducts/overflow-duct-top.png | Bin 0 -> 164 bytes .../distribution/ducts/overflow-duct.png | Bin 0 -> 377 bytes core/assets-raw/sprites/units/emanate.png | Bin 4216 -> 4251 bytes core/assets/icons/icons.properties | 2 + core/assets/logicids.dat | Bin 3338 -> 3372 bytes core/src/mindustry/content/Blocks.java | 25 +++- .../entities/comp/BlockUnitComp.java | 7 + .../world/blocks/distribution/DuctRouter.java | 6 +- .../blocks/distribution/OverflowDuct.java | 137 ++++++++++++++++++ gradle.properties | 2 +- 10 files changed, 174 insertions(+), 5 deletions(-) create mode 100644 core/assets-raw/sprites/blocks/distribution/ducts/overflow-duct-top.png create mode 100644 core/assets-raw/sprites/blocks/distribution/ducts/overflow-duct.png create mode 100644 core/src/mindustry/world/blocks/distribution/OverflowDuct.java diff --git a/core/assets-raw/sprites/blocks/distribution/ducts/overflow-duct-top.png b/core/assets-raw/sprites/blocks/distribution/ducts/overflow-duct-top.png new file mode 100644 index 0000000000000000000000000000000000000000..7a6637d7a93903ffd2001607dca25f462f48aee9 GIT binary patch literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}ah@)YArY-_ zuPE{zP!MprxbXR!Jd2>Px$Gf6~2R9J=Wmpu-GKoEszjYq+T#EWQYOHHVZN8kv?%2?Z4>P1Ls*t=k1B>OWn zJA`Fvcoi%x?_+jm859t@Kc2li*0!3u-BO-s-dI%@3cD8_#LT4-m^laG4RGcm2+o{> zuujgGx|cj;s!WLC;BY+k007x;FM5+$5Xv7#usK{;gf^vf z2y1k!vQS=Io(jTh%Tq(#uC@PTG6rHw1M_*m=wCAlL}-KJAY5}2fP#?jju-@H4gl~4 X049!wEH45c00000NkvXXu0mjfZ0nct literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/units/emanate.png b/core/assets-raw/sprites/units/emanate.png index 95fa1a83d8bc8615759c507ee804002e06b8b1be..f297430956d5ba8acfcd57f9160faec24e29f733 100644 GIT binary patch delta 4200 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 delta 4162 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 E0H1LY4FCWD delta 16 XcmZ1@)g{Hmuwx_BYOc-axnh|BFGB@* diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index a271ef0b55..3e8c4a8f96 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -77,7 +77,7 @@ public class Blocks implements ContentList{ overflowGate, underflowGate, massDriver, //transport - alternate - duct, ductRouter, ductBridge, ductUnloader, + duct, ductRouter, overflowDuct, ductBridge, ductUnloader, surgeConveyor, surgeRouter, //liquid @@ -94,7 +94,7 @@ public class Blocks implements ContentList{ //production mechanicalDrill, pneumaticDrill, laserDrill, blastDrill, waterExtractor, oilExtractor, cultivator, - cliffCrusher, plasmaBore, impactDrill, + cliffCrusher, plasmaBore, largePlasmaBore, impactDrill, //storage coreShard, coreFoundation, coreNucleus, vault, container, unloader, @@ -1430,6 +1430,11 @@ public class Blocks implements ContentList{ speed = 4f; }}; + overflowDuct = new OverflowDuct("overflow-duct"){{ + requirements(Category.distribution, with(Items.graphite, 10)); + speed = 4f; + }}; + ductBridge = new DuctBridge("duct-bridge"){{ requirements(Category.distribution, with(Items.graphite, 20)); speed = 4f; @@ -1908,13 +1913,27 @@ public class Blocks implements ContentList{ }}; plasmaBore = new BeamDrill("plasma-bore"){{ - requirements(Category.production, with(Items.graphite, 20, Items.beryllium, 10, Items.lead, 20)); + requirements(Category.production, with(Items.graphite, 20, Items.beryllium, 10)); consumes.power(0.2f); + drillTime = 200f; tier = 4; size = 2; range = 2; }}; + //TODO awful name + largePlasmaBore = new BeamDrill("large-plasma-bore"){{ + //TODO requirements + //TODO require hydrogen? optional for all drills? + requirements(Category.production, with(Items.graphite, 30, Items.beryllium, 20, Items.carbide, 30)); + consumes.power(0.6f); + drillTime = 170f; + tier = 5; + size = 3; + range = 6; + laserWidth = 0.7f; + }}; + //endregion //region storage diff --git a/core/src/mindustry/entities/comp/BlockUnitComp.java b/core/src/mindustry/entities/comp/BlockUnitComp.java index 39adf5c891..a01be90c4f 100644 --- a/core/src/mindustry/entities/comp/BlockUnitComp.java +++ b/core/src/mindustry/entities/comp/BlockUnitComp.java @@ -23,6 +23,13 @@ abstract class BlockUnitComp implements Unitc{ set(tile); } + @Override + public void add(){ + if(tile == null){ + throw new RuntimeException("Do not add BlockUnit entities to the game, they will simply crash. Internal use only."); + } + } + @Override public void update(){ if(tile != null){ diff --git a/core/src/mindustry/world/blocks/distribution/DuctRouter.java b/core/src/mindustry/world/blocks/distribution/DuctRouter.java index b04f75afbe..0e2b7be04f 100644 --- a/core/src/mindustry/world/blocks/distribution/DuctRouter.java +++ b/core/src/mindustry/world/blocks/distribution/DuctRouter.java @@ -27,7 +27,6 @@ public class DuctRouter extends Block{ update = true; solid = false; hasItems = true; - conveyorPlacement = true; unloadable = false; itemCapacity = 1; noUpdateDisabled = true; @@ -58,6 +57,11 @@ public class DuctRouter extends Block{ Draw.rect(topRegion, plan.drawx(), plan.drawy(), plan.rotation * 90); } + @Override + public boolean rotatedOutput(int x, int y){ + return false; + } + public class DuctRouterBuild extends Building{ public @Nullable Item sortItem; diff --git a/core/src/mindustry/world/blocks/distribution/OverflowDuct.java b/core/src/mindustry/world/blocks/distribution/OverflowDuct.java new file mode 100644 index 0000000000..b59dc5c7b9 --- /dev/null +++ b/core/src/mindustry/world/blocks/distribution/OverflowDuct.java @@ -0,0 +1,137 @@ +package mindustry.world.blocks.distribution; + +import arc.graphics.g2d.*; +import arc.math.*; +import arc.util.*; +import mindustry.annotations.Annotations.*; +import mindustry.entities.units.*; +import mindustry.gen.*; +import mindustry.type.*; +import mindustry.world.*; +import mindustry.world.meta.*; + +public class OverflowDuct extends Block{ + public float speed = 5f; + + public @Load(value = "@-top") TextureRegion topRegion; + + public OverflowDuct(String name){ + super(name); + + group = BlockGroup.transportation; + update = true; + solid = false; + hasItems = true; + conveyorPlacement = true; + unloadable = false; + itemCapacity = 1; + noUpdateDisabled = true; + rotate = true; + envEnabled = Env.space | Env.terrestrial | Env.underwater; + } + + @Override + public void setStats(){ + super.setStats(); + + stats.add(Stat.itemsMoved, 60f / speed, StatUnit.itemsSecond); + } + + @Override + public TextureRegion[] icons(){ + return new TextureRegion[]{region, topRegion}; + } + + @Override + public void drawRequestRegion(BuildPlan plan, Eachable list){ + Draw.rect(region, plan.drawx(), plan.drawy()); + Draw.rect(topRegion, plan.drawx(), plan.drawy(), plan.rotation * 90); + } + + @Override + public boolean rotatedOutput(int x, int y){ + return false; + } + + public class DuctRouterBuild extends Building{ + public float progress; + public @Nullable Item current; + + @Override + public void draw(){ + Draw.rect(region, x, y); + Draw.rect(topRegion, x, y, rotdeg()); + } + + @Override + public void updateTile(){ + progress += edelta() / speed * 2f; + + if(current != null){ + if(progress >= (1f - 1f/speed)){ + var target = target(); + if(target != null){ + target.handleItem(this, current); + cdump = (byte)(cdump == 0 ? 2 : 0); + items.remove(current, 1); + current = null; + progress %= (1f - 1f/speed); + } + } + }else{ + progress = 0; + } + + if(current == null && items.total() > 0){ + current = items.first(); + } + } + + @Nullable + public Building target(){ + if(current == null) return null; + + Building front = front(); + if(front != null && front.team == team && front.acceptItem(this, current)){ + return front; + } + + for(int i = -1; i <= 1; i++){ + int dir = Mathf.mod(rotation + (((i + cdump + 1) % 3) - 1), 4); + if(dir == rotation) continue; + Building other = nearby(dir); + if(other != null && other.team == team && other.acceptItem(this, current)){ + return other; + } + } + return null; + } + + @Override + public boolean acceptItem(Building source, Item item){ + return current == null && items.total() == 0 && + (Edges.getFacingEdge(source.tile(), tile).relativeTo(tile) == rotation); + } + + @Override + public int removeStack(Item item, int amount){ + int removed = super.removeStack(item, amount); + if(item == current) current = null; + return removed; + } + + @Override + public void handleStack(Item item, int amount, Teamc source){ + super.handleStack(item, amount, source); + current = item; + } + + @Override + public void handleItem(Building source, Item item){ + current = item; + progress = -1f; + items.add(item, 1); + noSleep(); + } + } +} diff --git a/gradle.properties b/gradle.properties index 47efdec8d7..8c9c4e6695 100644 --- a/gradle.properties +++ b/gradle.properties @@ -24,4 +24,4 @@ android.useAndroidX=true #used for slow jitpack builds; TODO see if this actually works org.gradle.internal.http.socketTimeout=100000 org.gradle.internal.http.connectionTimeout=100000 -archash=430f9146f3c9c34db1f9ad9a8784e71c322246f2 +archash=5952043ab3a6de8f254dd038ea7ac4cab1b8a852