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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -305,6 +305,7 @@ no = No
info.title = Info
error.title = [crimson]An error has occured
error.crashtitle = An error has occured
blocks.outputspeed = Drill Speed: {0}/s
blocks.unknown = [LIGHT_GRAY]???
blocks.blockinfo = Block Info
blocks.powerbalance = Power: {0}

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;