From 77f0dfb9b13d69906b61b0dc79f89afadfb273a4 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 29 Jul 2018 17:41:27 -0400 Subject: [PATCH] Added system to query block outputs / Editor bugfixes --- core/assets/bundles/bundle.properties | 4 ++-- .../anuke/mindustry/editor/MapEditorDialog.java | 7 ++++++- core/src/io/anuke/mindustry/maps/Sector.java | 2 +- core/src/io/anuke/mindustry/world/BaseBlock.java | 2 ++ core/src/io/anuke/mindustry/world/Block.java | 3 +++ .../world/blocks/production/GenericCrafter.java | 7 +++++++ .../world/blocks/production/LiquidMixer.java | 7 +++++++ .../world/blocks/production/PowerCrafter.java | 6 ++++++ .../world/blocks/production/PowerSmelter.java | 7 +++++++ .../world/blocks/production/Smelter.java | 2 ++ .../io/anuke/mindustry/world/meta/Producers.java | 15 +++++++++++++++ 11 files changed, 58 insertions(+), 4 deletions(-) create mode 100644 core/src/io/anuke/mindustry/world/meta/Producers.java diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index e07a3f1102..6368c91af6 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -472,8 +472,8 @@ block.carbide-drill.name=Carbide Drill block.laser-drill.name=Laser Drill block.water-extractor.name=Water Extractor block.cultivator.name=Cultivator -block.dart-ship-factory.name=Dart Ship Factory -block.delta-mech-factory.name=Delta Mech Factory +block.dart-ship-factory.name=Dart Ship Reonstructor +block.delta-mech-factory.name=Delta Mech Reconstructor block.dronefactory.name=Drone Factory block.repairpoint.name=Repair Point block.resupplypoint.name=Resupply Point diff --git a/core/src/io/anuke/mindustry/editor/MapEditorDialog.java b/core/src/io/anuke/mindustry/editor/MapEditorDialog.java index 6550f5ee65..e7e2e8b53b 100644 --- a/core/src/io/anuke/mindustry/editor/MapEditorDialog.java +++ b/core/src/io/anuke/mindustry/editor/MapEditorDialog.java @@ -566,7 +566,8 @@ public class MapEditorDialog extends Dialog implements Disposable{ for(Block block : Block.all()){ TextureRegion[] regions = block.getCompactIcon(); - if((block.synthetic() && (Recipe.getByResult(block) == null || !control.database().isUnlocked(Recipe.getByResult(block)))) && !debug && block != StorageBlocks.core){ + if((block.synthetic() && (Recipe.getByResult(block) == null || !control.database().isUnlocked(Recipe.getByResult(block)))) + && !debug && block != StorageBlocks.core){ continue; } @@ -574,6 +575,10 @@ public class MapEditorDialog extends Dialog implements Disposable{ continue; } + if(Recipe.getByResult(block) != null && Recipe.getByResult(block).desktopOnly && mobile && !debug){ + continue; + } + if(regions.length == 0 || regions[0] == Draw.region("jjfgj")) continue; Stack stack = new Stack(); diff --git a/core/src/io/anuke/mindustry/maps/Sector.java b/core/src/io/anuke/mindustry/maps/Sector.java index 107b7e1aec..98920404a3 100644 --- a/core/src/io/anuke/mindustry/maps/Sector.java +++ b/core/src/io/anuke/mindustry/maps/Sector.java @@ -29,7 +29,7 @@ public class Sector{ public transient Array spawns = new Array<>(); /**Ores that appear in this sector.*/ public transient Array ores = new Array<>(); - /**Difficulty of the sector, measured by calculating distance from origin.*/ + /**Difficulty of the sector, measured by calculating distance from origin and applying scaling.*/ public transient int difficulty; public int getSeed(){ diff --git a/core/src/io/anuke/mindustry/world/BaseBlock.java b/core/src/io/anuke/mindustry/world/BaseBlock.java index 2c99241dfb..89a3f89424 100644 --- a/core/src/io/anuke/mindustry/world/BaseBlock.java +++ b/core/src/io/anuke/mindustry/world/BaseBlock.java @@ -10,6 +10,7 @@ import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.world.consumers.ConsumeItem; import io.anuke.mindustry.world.consumers.ConsumeLiquid; import io.anuke.mindustry.world.consumers.Consumers; +import io.anuke.mindustry.world.meta.Producers; import io.anuke.ucore.core.Effects; import io.anuke.ucore.core.Timers; import io.anuke.ucore.util.Mathf; @@ -31,6 +32,7 @@ public abstract class BaseBlock{ public float powerCapacity = 10f; public Consumers consumes = new Consumers(); + public Producers produces = new Producers(); public boolean shouldConsume(Tile tile){ return true; diff --git a/core/src/io/anuke/mindustry/world/Block.java b/core/src/io/anuke/mindustry/world/Block.java index 9f06a14ce9..7836cdddbd 100644 --- a/core/src/io/anuke/mindustry/world/Block.java +++ b/core/src/io/anuke/mindustry/world/Block.java @@ -36,6 +36,7 @@ public class Block extends BaseBlock implements Content{ private static int lastid; private static Array blocks = new Array<>(140); private static ObjectMap map = new ObjectMap<>(); + /** internal name */ public final String name; /** internal ID */ @@ -104,12 +105,14 @@ public class Block extends BaseBlock implements Content{ public Color minimapColor = Color.CLEAR; /** View range of this block type. Use a value < 0 to disable. */ public float viewRange = 10; + protected Array tempTiles = new Array<>(); protected Color tempColor = new Color(); protected TextureRegion[] blockIcon; protected TextureRegion[] icon; protected TextureRegion[] compactIcon; protected TextureRegion editorIcon; + public TextureRegion shadowRegion; public TextureRegion region; diff --git a/core/src/io/anuke/mindustry/world/blocks/production/GenericCrafter.java b/core/src/io/anuke/mindustry/world/blocks/production/GenericCrafter.java index d1a3c3c26f..f6c796174a 100644 --- a/core/src/io/anuke/mindustry/world/blocks/production/GenericCrafter.java +++ b/core/src/io/anuke/mindustry/world/blocks/production/GenericCrafter.java @@ -46,6 +46,13 @@ public class GenericCrafter extends Block{ tile -> (float) tile.entity.items.get(consumes.item()) / itemCapacity)); } + @Override + public void init(){ + super.init(); + + produces.set(output); + } + @Override public void setStats(){ super.setStats(); diff --git a/core/src/io/anuke/mindustry/world/blocks/production/LiquidMixer.java b/core/src/io/anuke/mindustry/world/blocks/production/LiquidMixer.java index 11733cf392..6f92f062b4 100644 --- a/core/src/io/anuke/mindustry/world/blocks/production/LiquidMixer.java +++ b/core/src/io/anuke/mindustry/world/blocks/production/LiquidMixer.java @@ -24,6 +24,13 @@ public class LiquidMixer extends LiquidBlock{ outputsLiquid = true; } + @Override + public void init(){ + super.init(); + + produces.set(outputLiquid); + } + @Override public void setStats(){ super.setStats(); diff --git a/core/src/io/anuke/mindustry/world/blocks/production/PowerCrafter.java b/core/src/io/anuke/mindustry/world/blocks/production/PowerCrafter.java index 07b08e1931..351e674938 100644 --- a/core/src/io/anuke/mindustry/world/blocks/production/PowerCrafter.java +++ b/core/src/io/anuke/mindustry/world/blocks/production/PowerCrafter.java @@ -39,6 +39,12 @@ public class PowerCrafter extends Block{ if(outputLiquid != null){ outputsLiquid = true; } + + if(outputLiquid != null){ + produces.set(outputLiquid); + }else if(outputItem != null){ + produces.set(outputItem); + } } @Override diff --git a/core/src/io/anuke/mindustry/world/blocks/production/PowerSmelter.java b/core/src/io/anuke/mindustry/world/blocks/production/PowerSmelter.java index 5175dbc04f..7fbf99a4c4 100644 --- a/core/src/io/anuke/mindustry/world/blocks/production/PowerSmelter.java +++ b/core/src/io/anuke/mindustry/world/blocks/production/PowerSmelter.java @@ -53,6 +53,13 @@ public class PowerSmelter extends PowerBlock{ itemCapacity = 20; } + @Override + public void init(){ + super.init(); + + produces.set(result); + } + @Override public void load(){ super.load(); diff --git a/core/src/io/anuke/mindustry/world/blocks/production/Smelter.java b/core/src/io/anuke/mindustry/world/blocks/production/Smelter.java index 482ab57103..d6a396f905 100644 --- a/core/src/io/anuke/mindustry/world/blocks/production/Smelter.java +++ b/core/src/io/anuke/mindustry/world/blocks/production/Smelter.java @@ -75,6 +75,8 @@ public class Smelter extends Block{ throw new IllegalArgumentException("'" + name + "' has input item '" + item.item.name + "', which is a flux, when useFlux is enabled. To prevent ambiguous item use, either remove this flux item from the inputs, or set useFlux to false."); } } + + produces.set(result); } @Override diff --git a/core/src/io/anuke/mindustry/world/meta/Producers.java b/core/src/io/anuke/mindustry/world/meta/Producers.java new file mode 100644 index 0000000000..53ff1c85a0 --- /dev/null +++ b/core/src/io/anuke/mindustry/world/meta/Producers.java @@ -0,0 +1,15 @@ +package io.anuke.mindustry.world.meta; + +import io.anuke.mindustry.game.Content; + +public class Producers{ + private Content output; + + public void set(Content content){ + this.output = content; + } + + public Content get(){ + return output; + } +}