From f5959c88298686dff56601762e110109f6dd2a36 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 22 Nov 2018 19:09:51 -0500 Subject: [PATCH] Optional display section --- core/assets/bundles/bundle.properties | 4 ++- .../anuke/mindustry/world/blocks/Floor.java | 2 +- .../blocks/power/ItemLiquidGenerator.java | 2 -- .../world/blocks/power/TurbineGenerator.java | 1 - .../mindustry/world/consumers/Consume.java | 4 +-- .../world/consumers/ConsumeItem.java | 2 +- .../world/consumers/ConsumeItemFilter.java | 2 +- .../world/consumers/ConsumeItems.java | 2 +- .../world/consumers/ConsumeLiquid.java | 8 +++-- .../world/consumers/ConsumeLiquidFilter.java | 6 ++-- .../anuke/mindustry/world/meta/BlockStat.java | 4 ++- .../mindustry/world/meta/BlockStats.java | 34 +++++-------------- .../mindustry/world/meta/StatCategory.java | 7 ++-- 13 files changed, 34 insertions(+), 44 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index b1604578b9..d89b093948 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -321,7 +321,8 @@ text.blocks.coolant = Coolant text.blocks.coolantuse = Coolant Use text.blocks.inputliquidfuel = Fuel Liquid text.blocks.liquidfueluse = Liquid Fuel Use -text.blocks.explosive = Highly explosive\! +text.blocks.boostitem = Boost Item +text.blocks.boostliquid = Boost Liquid text.blocks.health = Health text.blocks.inaccuracy = Inaccuracy text.blocks.shots = Shots @@ -346,6 +347,7 @@ text.category.liquids = Liquids text.category.items = Items text.category.crafting = Crafting text.category.shooting = Shooting +text.category.optional = Optional Enhancements setting.autotarget.name = Auto-Target setting.fpscap.name = Max FPS setting.fpscap.none = None diff --git a/core/src/io/anuke/mindustry/world/blocks/Floor.java b/core/src/io/anuke/mindustry/world/blocks/Floor.java index fd4d581f2d..8c27abc074 100644 --- a/core/src/io/anuke/mindustry/world/blocks/Floor.java +++ b/core/src/io/anuke/mindustry/world/blocks/Floor.java @@ -181,7 +181,7 @@ public class Floor extends Block{ Floor floor = other.floor(); - if((floor.id <= this.id && !(tile.getElevation() != -1 && other.getElevation() > tile.getElevation())) || (!blends.test(floor) && !tileBlends.test(tile, other)) || (floor.cacheLayer.ordinal() > this.cacheLayer.ordinal() && !sameLayer) || + if(floor.edgeRegions == null || (floor.id <= this.id && !(tile.getElevation() != -1 && other.getElevation() > tile.getElevation())) || (!blends.test(floor) && !tileBlends.test(tile, other)) || (floor.cacheLayer.ordinal() > this.cacheLayer.ordinal() && !sameLayer) || (sameLayer && floor.cacheLayer == this.cacheLayer)) continue; TextureRegion region = floor.edgeRegions[i]; diff --git a/core/src/io/anuke/mindustry/world/blocks/power/ItemLiquidGenerator.java b/core/src/io/anuke/mindustry/world/blocks/power/ItemLiquidGenerator.java index fa1a44c5cf..9aac369832 100644 --- a/core/src/io/anuke/mindustry/world/blocks/power/ItemLiquidGenerator.java +++ b/core/src/io/anuke/mindustry/world/blocks/power/ItemLiquidGenerator.java @@ -5,7 +5,6 @@ import io.anuke.mindustry.type.Item; import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.consumers.ConsumeLiquidFilter; -import io.anuke.mindustry.world.meta.BlockStat; import io.anuke.ucore.core.Effects; import io.anuke.ucore.graphics.Draw; import io.anuke.ucore.util.Mathf; @@ -30,7 +29,6 @@ public abstract class ItemLiquidGenerator extends ItemGenerator{ @Override public void init(){ super.init(); - stats.remove(BlockStat.liquidFuelUse); } @Override diff --git a/core/src/io/anuke/mindustry/world/blocks/power/TurbineGenerator.java b/core/src/io/anuke/mindustry/world/blocks/power/TurbineGenerator.java index 7416986d6e..05f8daad7d 100644 --- a/core/src/io/anuke/mindustry/world/blocks/power/TurbineGenerator.java +++ b/core/src/io/anuke/mindustry/world/blocks/power/TurbineGenerator.java @@ -4,7 +4,6 @@ import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.consumers.ConsumeLiquid; -//TODO public class TurbineGenerator extends BurnerGenerator{ public TurbineGenerator(String name){ diff --git a/core/src/io/anuke/mindustry/world/consumers/Consume.java b/core/src/io/anuke/mindustry/world/consumers/Consume.java index 8408389933..f4ec4cb01f 100644 --- a/core/src/io/anuke/mindustry/world/consumers/Consume.java +++ b/core/src/io/anuke/mindustry/world/consumers/Consume.java @@ -11,8 +11,8 @@ import io.anuke.ucore.scene.ui.layout.Table; import static io.anuke.mindustry.Vars.mobile; public abstract class Consume{ - private boolean optional; - private boolean update = true; + protected boolean optional; + protected boolean update = true; public Consume optional(boolean optional){ this.optional = optional; diff --git a/core/src/io/anuke/mindustry/world/consumers/ConsumeItem.java b/core/src/io/anuke/mindustry/world/consumers/ConsumeItem.java index 863cbc8dc7..9476e43eff 100644 --- a/core/src/io/anuke/mindustry/world/consumers/ConsumeItem.java +++ b/core/src/io/anuke/mindustry/world/consumers/ConsumeItem.java @@ -53,6 +53,6 @@ public class ConsumeItem extends Consume{ @Override public void display(BlockStats stats){ - stats.add(BlockStat.inputItem, item); + stats.add(optional ? BlockStat.boostItem : BlockStat.inputItem, item); } } diff --git a/core/src/io/anuke/mindustry/world/consumers/ConsumeItemFilter.java b/core/src/io/anuke/mindustry/world/consumers/ConsumeItemFilter.java index 69e1077db1..c7c24114a4 100644 --- a/core/src/io/anuke/mindustry/world/consumers/ConsumeItemFilter.java +++ b/core/src/io/anuke/mindustry/world/consumers/ConsumeItemFilter.java @@ -58,6 +58,6 @@ public class ConsumeItemFilter extends Consume{ @Override public void display(BlockStats stats){ - stats.add(BlockStat.inputItems, new ItemFilterValue(filter)); + stats.add(optional ? BlockStat.boostItem : BlockStat.inputItem, new ItemFilterValue(filter)); } } diff --git a/core/src/io/anuke/mindustry/world/consumers/ConsumeItems.java b/core/src/io/anuke/mindustry/world/consumers/ConsumeItems.java index f5a2a8e4b0..b46c984c2d 100644 --- a/core/src/io/anuke/mindustry/world/consumers/ConsumeItems.java +++ b/core/src/io/anuke/mindustry/world/consumers/ConsumeItems.java @@ -44,6 +44,6 @@ public class ConsumeItems extends Consume{ @Override public void display(BlockStats stats){ - stats.add(BlockStat.inputItems, new ItemListValue(items)); + stats.add(optional ? BlockStat.boostItem : BlockStat.inputItems, new ItemListValue(items)); } } diff --git a/core/src/io/anuke/mindustry/world/consumers/ConsumeLiquid.java b/core/src/io/anuke/mindustry/world/consumers/ConsumeLiquid.java index 0934cf73e5..eacbdb2de8 100644 --- a/core/src/io/anuke/mindustry/world/consumers/ConsumeLiquid.java +++ b/core/src/io/anuke/mindustry/world/consumers/ConsumeLiquid.java @@ -47,8 +47,12 @@ public class ConsumeLiquid extends Consume{ @Override public void display(BlockStats stats){ - stats.add(BlockStat.liquidUse, use * 60f, StatUnit.liquidSecond); - stats.add(BlockStat.inputLiquid, liquid); + if(!optional){ + stats.add(BlockStat.liquidUse, use * 60f, StatUnit.liquidSecond); + stats.add(BlockStat.inputLiquid, liquid); + }else{ + stats.add(BlockStat.boostLiquid, liquid); + } } float use(Block block, TileEntity entity){ diff --git a/core/src/io/anuke/mindustry/world/consumers/ConsumeLiquidFilter.java b/core/src/io/anuke/mindustry/world/consumers/ConsumeLiquidFilter.java index 19a5395522..80be0c49aa 100644 --- a/core/src/io/anuke/mindustry/world/consumers/ConsumeLiquidFilter.java +++ b/core/src/io/anuke/mindustry/world/consumers/ConsumeLiquidFilter.java @@ -62,10 +62,12 @@ public class ConsumeLiquidFilter extends Consume{ @Override public void display(BlockStats stats){ - if(isFuel){ + if(optional){ + stats.add(BlockStat.boostLiquid, new LiquidFilterValue(filter)); + }else if(isFuel){ stats.add(BlockStat.inputLiquidFuel, new LiquidFilterValue(filter)); stats.add(BlockStat.liquidFuelUse, 60f * use, StatUnit.liquidSecond); - }else{ + }else { stats.add(BlockStat.inputLiquid, new LiquidFilterValue(filter)); stats.add(BlockStat.liquidUse, 60f * use, StatUnit.liquidSecond); } diff --git a/core/src/io/anuke/mindustry/world/meta/BlockStat.java b/core/src/io/anuke/mindustry/world/meta/BlockStat.java index 5bfd481570..834e8f3ce2 100644 --- a/core/src/io/anuke/mindustry/world/meta/BlockStat.java +++ b/core/src/io/anuke/mindustry/world/meta/BlockStat.java @@ -45,8 +45,10 @@ public enum BlockStat{ shots(StatCategory.shooting), reload(StatCategory.shooting), powerShot(StatCategory.shooting), - targetsAir(StatCategory.shooting),; + targetsAir(StatCategory.shooting), + boostItem(StatCategory.optional), + boostLiquid(StatCategory.optional),; public final StatCategory category; diff --git a/core/src/io/anuke/mindustry/world/meta/BlockStats.java b/core/src/io/anuke/mindustry/world/meta/BlockStats.java index 2e6b3507aa..105222cf7a 100644 --- a/core/src/io/anuke/mindustry/world/meta/BlockStats.java +++ b/core/src/io/anuke/mindustry/world/meta/BlockStats.java @@ -12,9 +12,7 @@ import io.anuke.ucore.util.Log; import java.util.Locale; -/** - * Hold and organizes a list of block stats. - */ +/**Hold and organizes a list of block stats.*/ public class BlockStats{ private static final boolean errorWhenMissing = false; @@ -26,52 +24,37 @@ public class BlockStats{ this.block = block; } - /** - * Adds a single float value with this stat, formatted to 2 decimal places. - */ + /**Adds a single float value with this stat, formatted to 2 decimal places.*/ public void add(BlockStat stat, float value, StatUnit unit){ add(stat, new NumberValue(value, unit)); } - /** - * Adds a single y/n boolean value. - */ + /**Adds a single y/n boolean value.*/ public void add(BlockStat stat, boolean value){ add(stat, new BooleanValue(value)); } - /** - * Adds an item value. - */ + /**Adds an item value.*/ public void add(BlockStat stat, Item item){ add(stat, new ItemValue(new ItemStack(item, 1))); } - /** - * Adds a liquid value. - */ + /**Adds a liquid value.*/ public void add(BlockStat stat, Liquid liquid){ add(stat, new LiquidValue(liquid)); } - - /** - * Adds an item value. - */ + /**Adds an item value.*/ public void add(BlockStat stat, ItemStack item){ add(stat, new ItemValue(item)); } - /** - * Adds a single string value with this stat. - */ + /**Adds a single string value with this stat.*/ public void add(BlockStat stat, String format, Object... args){ add(stat, new StringValue(format, args)); } - /** - * Adds a stat value. - */ + /**Adds a stat value.*/ public void add(BlockStat stat, StatValue value){ if(!Bundles.has("text.blocks." + stat.name().toLowerCase(Locale.ROOT))){ if(!errorWhenMissing){ @@ -102,6 +85,7 @@ public class BlockStats{ dirty = true; } + /**Removes a stat, if it exists.*/ public void remove(BlockStat stat){ if(!map.containsKey(stat.category) || !map.get(stat.category).containsKey(stat)){ throw new RuntimeException("No stat entry found: \"" + stat + "\" in block '" + block.name + "'!"); diff --git a/core/src/io/anuke/mindustry/world/meta/StatCategory.java b/core/src/io/anuke/mindustry/world/meta/StatCategory.java index ce1ef5b6f2..0080d5daf5 100644 --- a/core/src/io/anuke/mindustry/world/meta/StatCategory.java +++ b/core/src/io/anuke/mindustry/world/meta/StatCategory.java @@ -1,13 +1,12 @@ package io.anuke.mindustry.world.meta; -/** - * A specific category for a stat. - */ +/**A specific category for a stat.*/ public enum StatCategory{ general, power, liquids, items, crafting, - shooting + shooting, + optional, }