diff --git a/core/src/io/anuke/mindustry/game/GlobalData.java b/core/src/io/anuke/mindustry/game/GlobalData.java index 8b911abfda..87e52ab512 100644 --- a/core/src/io/anuke/mindustry/game/GlobalData.java +++ b/core/src/io/anuke/mindustry/game/GlobalData.java @@ -32,7 +32,7 @@ public class GlobalData{ if(value < wave){ Core.settings.put(zone.name + "-wave", wave); modified = true; - if(wave > zone.conditionWave){ + if(wave == zone.conditionWave + 1){ Events.fire(new ZoneCompleteEvent(zone)); } } diff --git a/core/src/io/anuke/mindustry/input/MobileInput.java b/core/src/io/anuke/mindustry/input/MobileInput.java index 5a65b557ae..b6f7467520 100644 --- a/core/src/io/anuke/mindustry/input/MobileInput.java +++ b/core/src/io/anuke/mindustry/input/MobileInput.java @@ -18,7 +18,6 @@ import io.anuke.arc.math.geom.Rectangle; import io.anuke.arc.math.geom.Vector2; import io.anuke.arc.scene.ui.layout.Table; import io.anuke.arc.util.Align; -import io.anuke.arc.util.Log; import io.anuke.arc.util.Time; import io.anuke.mindustry.content.Blocks; import io.anuke.mindustry.content.Fx; @@ -340,7 +339,6 @@ public class MobileInput extends InputHandler implements GestureListener{ //draw placing if(mode == placing && block != null){ - Log.info(Core.input.mouseY()); NormalizeDrawResult dresult = PlaceUtils.normalizeDrawArea(block, lineStartX, lineStartY, tileX, tileY, true, maxLength, lineScale); Lines.rect(dresult.x, dresult.y, dresult.x2 - dresult.x, dresult.y2 - dresult.y); diff --git a/core/src/io/anuke/mindustry/ui/Bar.java b/core/src/io/anuke/mindustry/ui/Bar.java index 0a4b0eab18..a29ce6d4cb 100644 --- a/core/src/io/anuke/mindustry/ui/Bar.java +++ b/core/src/io/anuke/mindustry/ui/Bar.java @@ -32,7 +32,7 @@ public class Bar extends Element{ public Bar(Supplier name, Supplier color, FloatProvider fraction){ this.fraction = fraction; - lastValue = value = fraction.get(); + lastValue = value = Mathf.clamp(fraction.get()); update(() -> { this.name = name.get(); this.blinkColor.set(color.get()); @@ -47,13 +47,14 @@ public class Bar extends Element{ @Override public void draw(){ - if(!Mathf.isEqual(lastValue, fraction.get())){ + float computed = Mathf.clamp(fraction.get()); + if(!Mathf.isEqual(lastValue, computed)){ blink = 1f; - lastValue = fraction.get(); + lastValue = computed; } blink = Mathf.lerpDelta(blink, 0f, 0.2f); - value = Mathf.lerpDelta(value, fraction.get(), 0.15f); + value = Mathf.lerpDelta(value, computed, 0.15f); Draw.colorl(0.1f); Draw.drawable("bar", x, y, width, height); diff --git a/core/src/io/anuke/mindustry/ui/dialogs/TechTreeDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/TechTreeDialog.java index e85d1e1093..de6d3d0a34 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/TechTreeDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/TechTreeDialog.java @@ -211,8 +211,8 @@ public class TechTreeDialog extends FloatingDialog{ list.left(); list.addImage(req.item.getContentIcon()).size(8 * 3).padRight(3); list.add(req.item.localizedName()).color(Color.LIGHT_GRAY); - list.add(" " + Math.min(data.getItem(req.item), req.amount) + " / " + req.amount) - .color(data.has(req.item, req.amount) ? Color.LIGHT_GRAY : Color.SCARLET); + list.label(() -> " " + Math.min(data.getItem(req.item), req.amount) + " / " + req.amount) + .update(l -> l.setColor(data.has(req.item, req.amount) ? Color.LIGHT_GRAY : Color.SCARLET)); }).fillX().left(); t.row(); } diff --git a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java index 3691589184..0b1580d5b9 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java @@ -226,7 +226,8 @@ public class HudFragment extends Fragment{ world.isZone() && world.getZone().metCondition() && !Net.client() && - state.wave % world.getZone().launchPeriod == 0); + state.wave % world.getZone().launchPeriod == 0 && + state.wavetime < state.rules.waveSpacing - 70); button.update(() -> { if(world.getZone() == null){ diff --git a/core/src/io/anuke/mindustry/world/Block.java b/core/src/io/anuke/mindustry/world/Block.java index a9016972ee..080cb57c69 100644 --- a/core/src/io/anuke/mindustry/world/Block.java +++ b/core/src/io/anuke/mindustry/world/Block.java @@ -6,6 +6,7 @@ import io.anuke.arc.Graphics.Cursor.SystemCursor; import io.anuke.arc.collection.Array; import io.anuke.arc.collection.EnumSet; import io.anuke.arc.function.BooleanProvider; +import io.anuke.arc.function.Supplier; import io.anuke.arc.graphics.Color; import io.anuke.arc.graphics.g2d.Draw; import io.anuke.arc.graphics.g2d.Lines; @@ -16,22 +17,20 @@ import io.anuke.arc.util.Log; import io.anuke.arc.util.Strings; import io.anuke.arc.util.Time; import io.anuke.mindustry.entities.Damage; -import io.anuke.mindustry.entities.type.Player; -import io.anuke.mindustry.entities.type.TileEntity; -import io.anuke.mindustry.entities.type.Unit; import io.anuke.mindustry.entities.bullet.Bullet; import io.anuke.mindustry.entities.effect.Puddle; import io.anuke.mindustry.entities.effect.RubbleDecal; +import io.anuke.mindustry.entities.type.Player; +import io.anuke.mindustry.entities.type.TileEntity; +import io.anuke.mindustry.entities.type.Unit; import io.anuke.mindustry.game.UnlockableContent; import io.anuke.mindustry.graphics.CacheLayer; import io.anuke.mindustry.graphics.Layer; import io.anuke.mindustry.graphics.Pal; -import io.anuke.mindustry.type.Category; -import io.anuke.mindustry.type.ContentType; -import io.anuke.mindustry.type.Item; -import io.anuke.mindustry.type.ItemStack; +import io.anuke.mindustry.type.*; import io.anuke.mindustry.ui.Bar; import io.anuke.mindustry.ui.ContentDisplay; +import io.anuke.mindustry.world.consumers.ConsumeLiquid; import io.anuke.mindustry.world.consumers.ConsumePower; import io.anuke.mindustry.world.meta.BlockFlag; import io.anuke.mindustry.world.meta.BlockGroup; @@ -487,7 +486,14 @@ public class Block extends BlockStorage{ bars.row(); if(entity.liquids != null){ - bars.add(new Bar(() -> entity.liquids.get(entity.liquids.current()) <= 0.001f ? Core.bundle.get("blocks.liquid") : entity.liquids.current().localizedName(), () -> entity.liquids.current().color, () -> entity.liquids.total() / liquidCapacity)).growX(); + Supplier current; + if(consumes.has(ConsumeLiquid.class)){ + Liquid liquid = consumes.liquid(); + current = () -> liquid; + }else{ + current = () -> entity.liquids.current(); + } + bars.add(new Bar(() -> entity.liquids.get(current.get()) <= 0.001f ? Core.bundle.get("blocks.liquid") : current.get().localizedName(), () -> current.get().color, () -> entity.liquids.get(current.get()) / liquidCapacity)).growX(); bars.row(); } diff --git a/core/src/io/anuke/mindustry/world/blocks/power/PowerGraph.java b/core/src/io/anuke/mindustry/world/blocks/power/PowerGraph.java index 8f268f75dd..132dfb5b1a 100644 --- a/core/src/io/anuke/mindustry/world/blocks/power/PowerGraph.java +++ b/core/src/io/anuke/mindustry/world/blocks/power/PowerGraph.java @@ -237,12 +237,14 @@ public class PowerGraph{ } } + //currently ignores all other values and consumes power anyway. private boolean otherConsumersAreValid(Tile tile, Consume consumePower){ + /* for(Consume cons : tile.block().consumes.all()){ if(cons != consumePower && !cons.isOptional() && !cons.valid(tile.block(), tile.entity())){ return false; } - } + }*/ return true; }