Added drill output rate bar

This commit is contained in:
Anuken
2019-02-28 09:45:03 -05:00
parent 13c2eae1f4
commit 2aff73a958
4 changed files with 22 additions and 1 deletions

View File

@@ -913,6 +913,7 @@ public class Blocks implements ContentList{
drillTime = 480;
size = 2;
drawMineItem = true;
consumes.liquid(Liquids.water, 0.06f).optional(true);
}};
laserDrill = new Drill("laser-drill"){{
@@ -925,6 +926,7 @@ public class Blocks implements ContentList{
drillEffect = Fx.mineBig;
consumes.power(1.10f);
consumes.liquid(Liquids.water, 0.08f).optional(true);
}};
blastDrill = new Drill("blast-drill"){{
@@ -941,6 +943,7 @@ public class Blocks implements ContentList{
warmupSpeed = 0.01f;
consumes.power(3f);
consumes.liquid(Liquids.water, 0.1f).optional(true);
}};
waterExtractor = new SolidPump("water-extractor"){{

View File

@@ -3,6 +3,7 @@ package io.anuke.mindustry.world.blocks.production;
import io.anuke.arc.Core;
import io.anuke.arc.collection.Array;
import io.anuke.arc.collection.ObjectIntMap;
import io.anuke.arc.util.Strings;
import io.anuke.mindustry.entities.Effects;
import io.anuke.mindustry.entities.Effects.Effect;
import io.anuke.arc.graphics.Blending;
@@ -15,7 +16,9 @@ import io.anuke.mindustry.content.Fx;
import io.anuke.mindustry.content.Liquids;
import io.anuke.mindustry.entities.type.TileEntity;
import io.anuke.mindustry.graphics.Layer;
import io.anuke.mindustry.graphics.Pal;
import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.ui.Bar;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.consumers.ConsumeLiquid;
@@ -72,7 +75,18 @@ public class Drill extends Block{
liquidCapacity = 5f;
hasItems = true;
consumes.add(new ConsumeLiquid(Liquids.water, 0.05f)).optional(true);
consumes.liquid(Liquids.water, 0.05f).optional(true);
}
@Override
public void setBars(){
super.setBars();
bars.add("drillspeed", e -> {
DrillEntity entity = (DrillEntity)e;
return new Bar(() -> Core.bundle.format("blocks.outputspeed", Strings.toFixed(entity.lastDrillSpeed * 60, 2)), () -> Pal.ammo, () -> entity.warmup);
});
}
@Override
@@ -197,6 +211,7 @@ public class Drill extends Block{
speed *= entity.power.satisfaction; // Drill slower when not at full power
}
entity.lastDrillSpeed = (speed * entity.dominantItems * entity.warmup) / (drillTime + hardnessDrillMultiplier * Math.max(totalHardness, 1f) / entity.dominantItems);
entity.warmup = Mathf.lerpDelta(entity.warmup, speed, warmupSpeed);
entity.progress += entity.delta()
* entity.dominantItems * speed * entity.warmup;
@@ -204,6 +219,7 @@ public class Drill extends Block{
if(Mathf.chance(Time.delta() * updateEffectChance * entity.warmup))
Effects.effect(updateEffect, entity.x + Mathf.range(size * 2f), entity.y + Mathf.range(size * 2f));
}else{
entity.lastDrillSpeed = 0f;
entity.warmup = Mathf.lerpDelta(entity.warmup, 0f, warmupSpeed);
return;
}
@@ -257,6 +273,7 @@ public class Drill extends Block{
public int index;
public float warmup;
public float drillTime;
public float lastDrillSpeed;
public int dominantItems;
public Item dominantItem;