Implemented #1129 / Bugfixes

This commit is contained in:
Anuken
2020-03-24 12:02:26 -04:00
14 changed files with 72 additions and 16 deletions

View File

@@ -37,7 +37,7 @@ public class LiquidTurret extends Turret{
consumes.add(new ConsumeLiquidFilter(i -> ammoTypes.containsKey(i), 1f){
@Override
public boolean valid(Tilec entity){
return !((TurretEntity)entity).ammo.isEmpty();
return entity.liquids().total() > 0.001f;
}
@Override

View File

@@ -254,7 +254,6 @@ public abstract class Turret extends Block{
if(alternate){
float i = (shotCounter % shots) - shots/2f + (((shots+1)%2) / 2f);
Log.info(i);
tr.trns(rotation - 90, spread * i + Mathf.range(xRand), size * tilesize / 2);
bullet(type, rotation + Mathf.range(inaccuracy));

View File

@@ -16,6 +16,10 @@ public class Consumers{
public final Bits itemFilters = new Bits(Vars.content.items().size);
public final Bits liquidfilters = new Bits(Vars.content.liquids().size);
public boolean any(){
return results != null && results.length > 0;
}
public void init(){
results = Structs.filter(Consume.class, map, m -> m != null);
optionalResults = Structs.filter(Consume.class, map, m -> m != null && m.isOptional());

View File

@@ -0,0 +1,16 @@
package mindustry.world.meta;
import arc.graphics.*;
import mindustry.graphics.*;
public enum BlockStatus{
active(Color.valueOf("5ce677")),
noOutput(Color.orange),
noInput(Pal.remove);
public final Color color;
BlockStatus(Color color){
this.color = color;
}
}

View File

@@ -2,7 +2,8 @@ package mindustry.world.modules;
import arc.util.io.*;
import mindustry.gen.*;
import mindustry.world.consumers.Consume;
import mindustry.world.consumers.*;
import mindustry.world.meta.*;
public class ConsumeModule extends BlockModule{
private boolean valid, optionalValid;
@@ -12,6 +13,18 @@ public class ConsumeModule extends BlockModule{
this.entity = entity;
}
public BlockStatus status(){
if(!entity.shouldConsume()){
return BlockStatus.noOutput;
}
if(!valid || !entity.productionValid()){
return BlockStatus.noInput;
}
return BlockStatus.active;
}
public void update(){
//everything is valid here
if(entity.tile().isEnemyCheat()){