diff --git a/blocks/src/mmc/type/Recipe.java b/blocks/src/mmc/type/Recipe.java index 74f5f63..48c7314 100644 --- a/blocks/src/mmc/type/Recipe.java +++ b/blocks/src/mmc/type/Recipe.java @@ -7,21 +7,20 @@ import static mindustry.Vars.state; public class Recipe{ - public static Recipe empty = with(null, -1); + public static Recipe empty = with((ItemStack) null, -1); public ItemStack outputItem; public LiquidStack outputLiquid; public int outputLiquidDirection = -1; public ItemStack[] consumeItems; public LiquidStack[] consumeLiquids; - public float produceTime; public Recipe(){ consumeItems = ItemStack.empty; consumeLiquids = LiquidStack.empty; - } + /** Item + Liquid -> Item */ public static Recipe with(ItemStack outputItem, ItemStack[] consumeItems, LiquidStack[] consumeLiquids, float produceTime){ Recipe recipe = new Recipe(); recipe.output(outputItem, null); @@ -30,22 +29,61 @@ public static Recipe with(ItemStack outputItem, ItemStack[] consumeItems, Liquid recipe.check(); return recipe; } - + /** Liquid -> Item */ public static Recipe with(ItemStack outputItem, LiquidStack[] consumeLiquids, float produceTime){ return with(outputItem, ItemStack.empty, consumeLiquids, produceTime); } - + /** Item -> Item */ + public static Recipe with(ItemStack outputItem, ItemStack[] consumeItems, float produceTime){ + return with(outputItem, consumeItems, LiquidStack.empty, produceTime); + } + /** Nothing -> Item */ public static Recipe with(ItemStack outputItem, float produceTime){ return with(outputItem, LiquidStack.empty, produceTime); } - - public static Recipe with(ItemStack outputItem, ItemStack[] consumeItems, float produceTime){ - return with(outputItem, consumeItems, LiquidStack.empty, produceTime); + /** Item + Liquid -> Liquid */ + public static Recipe with(LiquidStack outputLiquid, ItemStack[] consumeItems, LiquidStack[] consumeLiquids, float produceTime){ + Recipe recipe = new Recipe(); + recipe.output(null, outputLiquid); + recipe.consume(consumeItems, consumeLiquids); + recipe.produceTime = produceTime; + recipe.check(); + return recipe; } - - public static Recipe with(){ - return new Recipe(); + /** Liquid -> Liquid */ + public static Recipe with(LiquidStack outputLiquid, LiquidStack[] consumeLiquids, float produceTime){ + return with(outputLiquid, ItemStack.empty, consumeLiquids, produceTime); + } + /** Item -> Liquid */ + public static Recipe with(LiquidStack outputLiquid, ItemStack[] consumeItems, float produceTime){ + return with(outputLiquid, consumeItems, LiquidStack.empty, produceTime); + } + /** Nothing -> Liquid */ + public static Recipe with(LiquidStack outputLiquid, float produceTime){ + return with(outputLiquid, LiquidStack.empty, produceTime); + } + /** Item + Liquid -> Item + Liquid */ + public static Recipe with(ItemStack outputItem, LiquidStack outputLiquid, ItemStack[] consumeItems, LiquidStack[] consumeLiquids, float produceTime){ + Recipe recipe = new Recipe(); + recipe.output(outputItem, outputLiquid); + recipe.consume(consumeItems, consumeLiquids); + recipe.produceTime = produceTime; + recipe.check(); + return recipe; + } + /** Liquid -> Item + Liquid */ + public static Recipe with(ItemStack outputItem, LiquidStack outputLiquid, LiquidStack[] consumeLiquids, float produceTime){ + return with(outputItem, outputLiquid, ItemStack.empty, consumeLiquids, produceTime); } + /** Item -> Item + Liquid */ + public static Recipe with(ItemStack outputItem, LiquidStack outputLiquid, ItemStack[] consumeItems, float produceTime){ + return with(outputItem, outputLiquid, consumeItems, LiquidStack.empty, produceTime); + } + /** Nothing -> Item + Liquid */ + public static Recipe with(ItemStack outputItem, LiquidStack outputLiquid, float produceTime){ + return with(outputItem, outputLiquid, ItemStack.empty, LiquidStack.empty, produceTime); + } + public UnlockableContent mainContent(){ return outputItem == null ? outputLiquid == null ? null : outputLiquid.liquid : outputItem.item; @@ -76,20 +114,20 @@ public Recipe outputLiquidDirection(int outputLiquidDirection){ } private void check(){ -// checkItems(); -// checkLiquids(); + //checkItems(); + //checkLiquids(); } public boolean unlockedNow(){ - for(ItemStack stack : consumeItems){ + for (ItemStack stack : consumeItems){ Item item = stack.item; - if(state.rules.hiddenBuildItems.contains(item) || item.isHidden() || !item.unlockedNow()){ + if (state.rules.hiddenBuildItems.contains(item) || item.isHidden() || !item.unlockedNow()){ return false; } } - for(LiquidStack stack : consumeLiquids){ + for (LiquidStack stack : consumeLiquids){ Liquid liquid = stack.liquid; - if(liquid.isHidden() || !liquid.unlockedNow()){ + if (liquid.isHidden() || !liquid.unlockedNow()){ return false; } } diff --git a/blocks/src/mmc/world/blocks/production/MultiCrafter.java b/blocks/src/mmc/world/blocks/production/MultiCrafter.java index 882d909..bd94fc7 100644 --- a/blocks/src/mmc/world/blocks/production/MultiCrafter.java +++ b/blocks/src/mmc/world/blocks/production/MultiCrafter.java @@ -63,6 +63,8 @@ public class MultiCrafter extends ModBlock{ public float extraStorageItem = 1; public int[] itemsCapacities = {}; public float[] liquidsCapacities = {}; + /** Display % on liquid bar. */ + public boolean percent = true; public MultiCrafter(String name){ super(name); @@ -268,10 +270,12 @@ public void setBars(){ })); } return new MultiBar(() -> { - String text = Core.bundle.get("bar.liquids"); - if(build.liquids == null) - return text; - return text + " " + Mathf.round((build.countNowLiquid() / build.countRequiredLiquid() * 100f), 0.1f) + "%"; + String text = build.liquids().current().localizedName; + if(percent){ + if(build.liquids == null) + return text; + return text + " " + Mathf.round((build.countNowLiquid() / build.countRequiredLiquid() * 100f), 0.1f) + "%"; + }else return text; }, barParts); }); } @@ -298,11 +302,11 @@ public void setBars(){ } } } - + //this duplicates bar... //nothing was added, so it's safe to add a dynamic liquid bar (probably?) - if(!added){ - addLiquidBar(build -> build.liquids.current()); - } + //if(!added){ + // addLiquidBar(build -> build.liquids.current()); + //} } } diff --git a/blocks/src/mmc/world/meta/RecipeListValue.java b/blocks/src/mmc/world/meta/RecipeListValue.java index 557dcd6..8b58b37 100644 --- a/blocks/src/mmc/world/meta/RecipeListValue.java +++ b/blocks/src/mmc/world/meta/RecipeListValue.java @@ -1,69 +1,54 @@ package mmc.world.meta; -import arc.Core; -import arc.graphics.g2d.TextureRegion; -import arc.scene.ui.layout.Table; -import arc.util.Strings; -import mindustry.ctype.UnlockableContent; -import mindustry.gen.Tex; -import mindustry.type.ItemStack; -import mindustry.ui.ItemImage; -import mindustry.world.meta.StatUnit; -import mindustry.world.meta.StatValue; -import mindustry.world.meta.StatValues; -import mmc.type.Recipe; -import mmc.world.meta.values.LiquidListValue; - -public class RecipeListValue implements StatValue { +import arc.*; +import arc.graphics.*; +import arc.scene.style.*; +import arc.scene.ui.Button.*; +import arc.scene.ui.layout.*; +import mindustry.graphics.*; +import mindustry.type.*; +import mindustry.ui.*; +import mindustry.world.meta.*; +import mmc.type.*; + +public class RecipeListValue implements StatValue{ private final Recipe[] recipes; - - public RecipeListValue(Recipe... recipes) { + private final Drawable style = Core.scene.getStyle(ButtonStyle.class).up; + public RecipeListValue(Recipe... recipes){ this.recipes = recipes; } @Override - public void display(Table table) { + public void display(Table table){ table.row(); - for (Recipe recipe : recipes) { - if (recipe.outputItem != null) { - table.add(new ItemImage(new ItemStack(recipe.outputItem.item,recipe.outputItem.amount))).size(24.0F).padRight(4.0F).right().top(); -// table.image(icon(recipe.outputItem.item)).size(24.0F).padRight(4.0F).right().top(); - table.add(" "+recipe.outputItem.item.localizedName).padRight(10.0F).left().top(); - } - if (recipe.outputLiquid != null) { - StatValues.liquid(recipe.outputLiquid.liquid,recipe.outputLiquid.amount,true).display(table); - -// table.image(icon(recipe.outputLiquid.liquid)).size(24.0F).padRight(4.0F).right().top(); -// table.add(recipe.outputLiquid.liquid.localizedName).padRight(10.0F).left().top(); - } - - (table.table((bt) -> { - bt.left().defaults().padRight(3.0F).left(); - if (recipe.consumeItems.length > 0) { - StatValues.items(true, recipe.consumeItems).display(bt.table().get()); - if (recipe.consumeLiquids.length > 0) bt.row(); + for(Recipe recipe : recipes){ + table.table(style, tab -> { + if(recipe.consumeItems.length > 0 || recipe.consumeLiquids.length > 0) tab.add(Stat.input.localized()).color(Pal.accent).expandX().left().row(); + if(recipe.consumeItems.length > 0){ + tab.table(row -> { + for(ItemStack itemIn : recipe.consumeItems){ + row.add(new ItemDisplay(itemIn.item, itemIn.amount, true)).left(); + if(recipe.consumeItems.length > 1) row.row(); + } + }).left().row(); } - - if (recipe.consumeLiquids.length > 0) { -// StatValues() - new LiquidListValue(true, recipe.consumeLiquids).display(bt.table().get()); - bt.row(); + if(recipe.consumeLiquids.length > 0){ + tab.table(row -> { + for(LiquidStack liquidIn : recipe.consumeLiquids){ + row.add(new LiquidDisplay(liquidIn.liquid, liquidIn.amount, false)).left(); + if(recipe.consumeLiquids.length > 1) row.row(); + } + }).left().row(); } - bt.add(Strings.format("[lightgray]@: [white]", Core.bundle.get("stat.productiontime"), recipe.produceTime)); - StatValues.number(recipe.produceTime/ 60.0F, StatUnit.seconds).display(bt); - - }).padTop(-9.0F).left().get()).background(Tex.underline); - table.row(); + if(recipe.outputItem != null || recipe.outputLiquid != null) tab.add(Stat.output.localized()).color(Pal.accent).expandX().left().row(); + if(recipe.outputItem != null) tab.table(row -> row.add(new ItemDisplay(recipe.outputItem.item, recipe.outputItem.amount, true))).left().row(); + if(recipe.outputLiquid != null) tab.table(row -> row.add(new LiquidDisplay(recipe.outputLiquid.liquid, recipe.outputLiquid.amount, false))).left().row(); + tab.table(row -> { + row.add(Stat.productionTime.localized()).padRight(4f).color(Color.lightGray); + StatValues.number(recipe.produceTime / 60f, StatUnit.seconds).display(row); + }).left().row(); + }).color(Color.lightGray).left().growX(); + table.add().size(18f).row(); } - - } - - void sep(Table table, String text) { - table.row(); - table.add(text); - } - - TextureRegion icon(T t) { - return t.uiIcon; } }