From f3db370954a2d300e100af2f016666d4a888a527 Mon Sep 17 00:00:00 2001 From: RePoweRED <64440429+lordReddx@users.noreply.github.com> Date: Fri, 8 Sep 2023 17:59:06 +0300 Subject: [PATCH 1/4] added more recipe variants for multicrafter|better display of recipes --- blocks/src/mma/type/Recipe.java | 65 +++++++++++++++---- .../src/mma/world/meta/RecipeListValue.java | 13 +--- 2 files changed, 57 insertions(+), 21 deletions(-) diff --git a/blocks/src/mma/type/Recipe.java b/blocks/src/mma/type/Recipe.java index 8309a04..b72af2c 100644 --- a/blocks/src/mma/type/Recipe.java +++ b/blocks/src/mma/type/Recipe.java @@ -7,7 +7,7 @@ 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; @@ -22,7 +22,12 @@ public Recipe(){ } - public static Recipe with(ItemStack outputItem, ItemStack[] consumeItems, LiquidStack[] consumeLiquids, float produceTime){ + /** Empty */ + public static Recipe with(){ + return new Recipe(); + } + /** Item + Liquid -> Item */ + public static Recipe with(ItemStack outputItem, ItemStack[] consumeItems, LiquidStack[] consumeLiquids, float produceTime) { Recipe recipe = new Recipe(); recipe.output(outputItem, null); recipe.consume(consumeItems, consumeLiquids); @@ -30,22 +35,60 @@ public static Recipe with(ItemStack outputItem, ItemStack[] consumeItems, Liquid recipe.check(); return recipe; } - - public static Recipe with(ItemStack outputItem, LiquidStack[] consumeLiquids, float produceTime){ + /** 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; + 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; diff --git a/blocks/src/mma/world/meta/RecipeListValue.java b/blocks/src/mma/world/meta/RecipeListValue.java index 871964b..c2dbef8 100644 --- a/blocks/src/mma/world/meta/RecipeListValue.java +++ b/blocks/src/mma/world/meta/RecipeListValue.java @@ -6,8 +6,7 @@ import arc.util.Strings; import mindustry.ctype.UnlockableContent; import mindustry.gen.Tex; -import mindustry.type.ItemStack; -import mindustry.ui.ItemImage; +import mindustry.ui.ItemDisplay; import mindustry.world.meta.StatUnit; import mindustry.world.meta.StatValue; import mindustry.world.meta.StatValues; @@ -26,15 +25,11 @@ 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(); + table.add(new ItemDisplay(recipe.outputItem.item, recipe.outputItem.amount)).padRight(5).left(); } if (recipe.outputLiquid != null) { + table.row(); 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) -> { @@ -45,13 +40,11 @@ public void display(Table table) { } if (recipe.consumeLiquids.length > 0) { -// StatValues() new LiquidListValue(true, recipe.consumeLiquids).display(bt.table().get()); bt.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(); } From ca3a618232efd758105895e62b8fd8554e25fa97 Mon Sep 17 00:00:00 2001 From: RePoweRED <64440429+lordReddx@users.noreply.github.com> Date: Fri, 8 Sep 2023 18:46:37 +0300 Subject: [PATCH 2/4] liquid bar display fix --- .../mma/world/blocks/production/MultiCrafter.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/blocks/src/mma/world/blocks/production/MultiCrafter.java b/blocks/src/mma/world/blocks/production/MultiCrafter.java index bbc8c05..cd6b4fa 100644 --- a/blocks/src/mma/world/blocks/production/MultiCrafter.java +++ b/blocks/src/mma/world/blocks/production/MultiCrafter.java @@ -64,6 +64,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); @@ -269,10 +271,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); }); } From b257814878f5143df19447fa2c0d43f6f2147ceb Mon Sep 17 00:00:00 2001 From: RePoweRED <64440429+lordReddx@users.noreply.github.com> Date: Tue, 26 Sep 2023 01:59:54 +0300 Subject: [PATCH 3/4] much better display of in/out stats for multicrafter --- blocks/src/mma/type/Recipe.java | 34 +++++----- .../src/mma/world/meta/RecipeListValue.java | 65 +++++++++---------- 2 files changed, 47 insertions(+), 52 deletions(-) diff --git a/blocks/src/mma/type/Recipe.java b/blocks/src/mma/type/Recipe.java index b72af2c..17cbcf8 100644 --- a/blocks/src/mma/type/Recipe.java +++ b/blocks/src/mma/type/Recipe.java @@ -6,7 +6,7 @@ import static mindustry.Vars.state; -public class Recipe{ +public class Recipe { public static Recipe empty = with((ItemStack) null, -1); public ItemStack outputItem; public LiquidStack outputLiquid; @@ -16,14 +16,13 @@ public class Recipe{ public float produceTime; - public Recipe(){ + public Recipe() { consumeItems = ItemStack.empty; consumeLiquids = LiquidStack.empty; - } /** Empty */ - public static Recipe with(){ + public static Recipe with() { return new Recipe(); } /** Item + Liquid -> Item */ @@ -44,7 +43,7 @@ public static Recipe with(ItemStack outputItem, ItemStack[] consumeItems, float return with(outputItem, consumeItems, LiquidStack.empty, produceTime); } /** Nothing -> Item */ - public static Recipe with(ItemStack outputItem, float produceTime){ + public static Recipe with(ItemStack outputItem, float produceTime) { return with(outputItem, LiquidStack.empty, produceTime); } /** Item + Liquid -> Liquid */ @@ -53,7 +52,7 @@ public static Recipe with(LiquidStack outputLiquid, ItemStack[] consumeItems, Li recipe.output(null, outputLiquid); recipe.consume(consumeItems, consumeLiquids); recipe.produceTime = produceTime; - //recipe.check(); + recipe.check(); return recipe; } /** Liquid -> Liquid */ @@ -74,6 +73,7 @@ public static Recipe with(ItemStack outputItem, LiquidStack outputLiquid, ItemSt recipe.output(outputItem, outputLiquid); recipe.consume(consumeItems, consumeLiquids); recipe.produceTime = produceTime; + recipe.check(); return recipe; } /** Liquid -> Item + Liquid */ @@ -90,49 +90,49 @@ public static Recipe with(ItemStack outputItem, LiquidStack outputLiquid, float } - public UnlockableContent mainContent(){ + public UnlockableContent mainContent() { return outputItem == null ? outputLiquid == null ? null : outputLiquid.liquid : outputItem.item; } - public Recipe produceTime(float produceTime){ + public Recipe produceTime(float produceTime) { this.produceTime = produceTime; return this; } @SuppressWarnings("UnusedReturnValue") - public Recipe consume(@Nullable ItemStack[] items, @Nullable LiquidStack[] liquids){ + public Recipe consume(@Nullable ItemStack[] items, @Nullable LiquidStack[] liquids) { if(items != null) consumeItems = items; if(liquids != null) consumeLiquids = liquids; return this; } @SuppressWarnings("UnusedReturnValue") - public Recipe output(@Nullable ItemStack item, @Nullable LiquidStack liquid){ + public Recipe output(@Nullable ItemStack item, @Nullable LiquidStack liquid) { if(item != null) outputItem = item; if(liquid != null) outputLiquid = liquid; return this; } - public Recipe outputLiquidDirection(int outputLiquidDirection){ + public Recipe outputLiquidDirection(int outputLiquidDirection) { this.outputLiquidDirection = outputLiquidDirection; return this; } - private void check(){ + private void check() { // checkItems(); // checkLiquids(); } - public boolean unlockedNow(){ - for(ItemStack stack : consumeItems){ + public boolean unlockedNow() { + 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/mma/world/meta/RecipeListValue.java b/blocks/src/mma/world/meta/RecipeListValue.java index c2dbef8..426e922 100644 --- a/blocks/src/mma/world/meta/RecipeListValue.java +++ b/blocks/src/mma/world/meta/RecipeListValue.java @@ -1,21 +1,22 @@ package mma.world.meta; import arc.Core; -import arc.graphics.g2d.TextureRegion; +import arc.graphics.Color; +import arc.scene.ui.Button.ButtonStyle; import arc.scene.ui.layout.Table; -import arc.util.Strings; -import mindustry.ctype.UnlockableContent; -import mindustry.gen.Tex; +import mindustry.type.ItemStack; +import mindustry.type.LiquidStack; import mindustry.ui.ItemDisplay; +import mindustry.ui.LiquidDisplay; +import mindustry.world.meta.Stat; import mindustry.world.meta.StatUnit; import mindustry.world.meta.StatValue; import mindustry.world.meta.StatValues; import mma.type.Recipe; -import mma.world.meta.values.LiquidListValue; public class RecipeListValue implements StatValue { private final Recipe[] recipes; - + private final ButtonStyle infoStyle = Core.scene.getStyle(ButtonStyle.class); public RecipeListValue(Recipe... recipes) { this.recipes = recipes; } @@ -24,39 +25,33 @@ public RecipeListValue(Recipe... recipes) { public void display(Table table) { table.row(); for (Recipe recipe : recipes) { - if (recipe.outputItem != null) { - table.add(new ItemDisplay(recipe.outputItem.item, recipe.outputItem.amount)).padRight(5).left(); - } - if (recipe.outputLiquid != null) { - table.row(); - StatValues.liquid(recipe.outputLiquid.liquid,recipe.outputLiquid.amount,true).display(table); - } - - (table.table((bt) -> { - bt.left().defaults().padRight(3.0F).left(); + table.table(infoStyle.up, tab -> { + if (recipe.consumeItems.length > 0 || recipe.consumeLiquids.length > 0) tab.add("[accent]" + Stat.input.localized()).expandX().left().row(); if (recipe.consumeItems.length > 0) { - StatValues.items(true, recipe.consumeItems).display(bt.table().get()); - if (recipe.consumeLiquids.length > 0) bt.row(); + 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) { - new LiquidListValue(true, recipe.consumeLiquids).display(bt.table().get()); - bt.row(); + 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("[accent]" + Stat.output.localized()).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("[lightgray]" + Stat.productionTime.localized() + ":[]").padRight(4f); + 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; } } From 886bc24fed883309ec1bb540cbc0f79389161f21 Mon Sep 17 00:00:00 2001 From: RePoweRED <64440429+lordReddx@users.noreply.github.com> Date: Wed, 15 Nov 2023 00:30:21 +0300 Subject: [PATCH 4/4] better stats display for multicrafter|removed duplicated liquid bar|added more recipe variants --- blocks/src/mmc/type/Recipe.java | 59 ++++++----- .../world/blocks/production/MultiCrafter.java | 12 +-- .../src/mmc/world/meta/RecipeListValue.java | 97 ++++++++----------- 3 files changed, 74 insertions(+), 94 deletions(-) diff --git a/blocks/src/mmc/type/Recipe.java b/blocks/src/mmc/type/Recipe.java index c8072c2..48c7314 100644 --- a/blocks/src/mmc/type/Recipe.java +++ b/blocks/src/mmc/type/Recipe.java @@ -6,27 +6,22 @@ import static mindustry.Vars.state; -public class Recipe { +public class Recipe{ 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() { + public Recipe(){ consumeItems = ItemStack.empty; consumeLiquids = LiquidStack.empty; } - /** Empty */ - public static Recipe with() { - return new Recipe(); - } /** Item + Liquid -> Item */ - public static Recipe with(ItemStack outputItem, ItemStack[] consumeItems, LiquidStack[] consumeLiquids, float produceTime) { + public static Recipe with(ItemStack outputItem, ItemStack[] consumeItems, LiquidStack[] consumeLiquids, float produceTime){ Recipe recipe = new Recipe(); recipe.output(outputItem, null); recipe.consume(consumeItems, consumeLiquids); @@ -35,19 +30,19 @@ public static Recipe with(ItemStack outputItem, ItemStack[] consumeItems, Liquid return recipe; } /** Liquid -> Item */ - public static Recipe with(ItemStack outputItem, LiquidStack[] consumeLiquids, float produceTime) { + 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) { + 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) { + public static Recipe with(ItemStack outputItem, float produceTime){ return with(outputItem, LiquidStack.empty, produceTime); } /** Item + Liquid -> Liquid */ - public static Recipe with(LiquidStack outputLiquid, ItemStack[] consumeItems, LiquidStack[] consumeLiquids, float produceTime) { + public static Recipe with(LiquidStack outputLiquid, ItemStack[] consumeItems, LiquidStack[] consumeLiquids, float produceTime){ Recipe recipe = new Recipe(); recipe.output(null, outputLiquid); recipe.consume(consumeItems, consumeLiquids); @@ -56,19 +51,19 @@ public static Recipe with(LiquidStack outputLiquid, ItemStack[] consumeItems, Li return recipe; } /** Liquid -> Liquid */ - public static Recipe with(LiquidStack outputLiquid, LiquidStack[] consumeLiquids, float produceTime) { + 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) { + 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) { + 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) { + 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); @@ -77,62 +72,62 @@ public static Recipe with(ItemStack outputItem, LiquidStack outputLiquid, ItemSt return recipe; } /** Liquid -> Item + Liquid */ - public static Recipe with(ItemStack outputItem, LiquidStack outputLiquid, LiquidStack[] consumeLiquids, float produceTime) { + 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) { + 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) { + public static Recipe with(ItemStack outputItem, LiquidStack outputLiquid, float produceTime){ return with(outputItem, outputLiquid, ItemStack.empty, LiquidStack.empty, produceTime); } - public UnlockableContent mainContent() { + public UnlockableContent mainContent(){ return outputItem == null ? outputLiquid == null ? null : outputLiquid.liquid : outputItem.item; } - public Recipe produceTime(float produceTime) { + public Recipe produceTime(float produceTime){ this.produceTime = produceTime; return this; } @SuppressWarnings("UnusedReturnValue") - public Recipe consume(@Nullable ItemStack[] items, @Nullable LiquidStack[] liquids) { + public Recipe consume(@Nullable ItemStack[] items, @Nullable LiquidStack[] liquids){ if(items != null) consumeItems = items; if(liquids != null) consumeLiquids = liquids; return this; } @SuppressWarnings("UnusedReturnValue") - public Recipe output(@Nullable ItemStack item, @Nullable LiquidStack liquid) { + public Recipe output(@Nullable ItemStack item, @Nullable LiquidStack liquid){ if(item != null) outputItem = item; if(liquid != null) outputLiquid = liquid; return this; } - public Recipe outputLiquidDirection(int outputLiquidDirection) { + public Recipe outputLiquidDirection(int outputLiquidDirection){ this.outputLiquidDirection = outputLiquidDirection; return this; } - private void check() { -// checkItems(); -// checkLiquids(); + private void check(){ + //checkItems(); + //checkLiquids(); } - public boolean unlockedNow() { - for (ItemStack stack : consumeItems) { + public boolean unlockedNow(){ + 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 f7a9028..bd94fc7 100644 --- a/blocks/src/mmc/world/blocks/production/MultiCrafter.java +++ b/blocks/src/mmc/world/blocks/production/MultiCrafter.java @@ -271,11 +271,11 @@ public void setBars(){ } return new MultiBar(() -> { String text = build.liquids().current().localizedName; - if (percent) { + if(percent){ if(build.liquids == null) return text; return text + " " + Mathf.round((build.countNowLiquid() / build.countRequiredLiquid() * 100f), 0.1f) + "%"; - } else return text; + }else return text; }, barParts); }); } @@ -302,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; } }