Unit control improvements / Larger max map size
This commit is contained in:
@@ -23,6 +23,7 @@ public class BaseTurret extends Block{
|
||||
/** How much reload is lowered by for each unit of liquid of heat capacity. */
|
||||
public float coolantMultiplier = 5f;
|
||||
/** If not null, this consumer will be used for coolant. */
|
||||
//TODO make automatic for mods?
|
||||
public @Nullable ConsumeLiquidBase coolant;
|
||||
|
||||
public BaseTurret(String name){
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package mindustry.world.blocks.defense.turrets;
|
||||
|
||||
import arc.math.*;
|
||||
import mindustry.world.consumers.*;
|
||||
import mindustry.world.meta.*;
|
||||
|
||||
import static mindustry.Vars.*;
|
||||
@@ -33,8 +34,9 @@ public class ReloadTurret extends BaseTurret{
|
||||
|
||||
protected void updateCooling(){
|
||||
if(reload < reloadTime && coolant != null && coolant.valid(this)){
|
||||
float capacity = coolant instanceof ConsumeLiquidFilter filter ? filter.getConsumed(this).heatCapacity : 1f;
|
||||
coolant.update(this);
|
||||
reload += coolant.amount * edelta() * (filterConsLiquid == null ? 1f : filterConsLiquid.heatCapacity) * coolantMultiplier;
|
||||
reload += coolant.amount * edelta() * capacity * coolantMultiplier;
|
||||
|
||||
if(Mathf.chance(0.06 * coolant.amount)){
|
||||
coolEffect.at(x + Mathf.range(size * tilesize / 2f), y + Mathf.range(size * tilesize / 2f));
|
||||
|
||||
@@ -2,6 +2,7 @@ package mindustry.world.consumers;
|
||||
|
||||
import arc.func.*;
|
||||
import arc.scene.ui.layout.*;
|
||||
import arc.util.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.type.*;
|
||||
import mindustry.ui.*;
|
||||
@@ -28,7 +29,7 @@ public class ConsumeItemFilter extends Consume{
|
||||
public void build(Building build, Table table){
|
||||
MultiReqImage image = new MultiReqImage();
|
||||
content.items().each(i -> filter.get(i) && i.unlockedNow(), item -> image.add(new ReqImage(new ItemImage(item.uiIcon, 1),
|
||||
() -> build.items != null && build.items.has(item))));
|
||||
() -> build.items.has(item))));
|
||||
|
||||
table.add(image).size(8 * 4);
|
||||
}
|
||||
@@ -39,27 +40,27 @@ public class ConsumeItemFilter extends Consume{
|
||||
|
||||
@Override
|
||||
public void trigger(Building build){
|
||||
Item item = getConsumed(build);
|
||||
if(item != null){
|
||||
build.items.remove(item, 1);
|
||||
}
|
||||
}
|
||||
|
||||
public @Nullable Item getConsumed(Building build){
|
||||
for(int i = 0; i < content.items().size; i++){
|
||||
Item item = content.item(i);
|
||||
if(build.items != null && build.items.has(item) && this.filter.get(item)){
|
||||
build.items.remove(item, 1);
|
||||
build.filterConsItem = item;
|
||||
break;
|
||||
if(build.items.has(item) && this.filter.get(item)){
|
||||
return item;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean valid(Building build){
|
||||
if(build.consumeTriggerValid()) return true;
|
||||
|
||||
for(int i = 0; i < content.items().size; i++){
|
||||
Item item = content.item(i);
|
||||
if(this.filter.get(item) && build.items.has(item)){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return getConsumed(build) != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -42,19 +42,19 @@ public class ConsumeLiquidFilter extends ConsumeLiquidBase{
|
||||
|
||||
@Override
|
||||
public void update(Building build){
|
||||
Liquid liq = match(build);
|
||||
Liquid liq = getConsumed(build);
|
||||
build.liquids.remove(liq, use(build));
|
||||
build.filterConsLiquid = liq;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean valid(Building build){
|
||||
var liq = match(build);
|
||||
var liq = getConsumed(build);
|
||||
return liq != null && build.liquids.get(liq) >= use(build);
|
||||
}
|
||||
|
||||
@Nullable Liquid match(Building build){
|
||||
if(filter.get(build.liquids.current())){
|
||||
public @Nullable Liquid getConsumed(Building build){
|
||||
float u = use(build);
|
||||
if(filter.get(build.liquids.current()) && build.liquids.currentAmount() >= u){
|
||||
return build.liquids.current();
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@ public class ConsumeLiquidFilter extends ConsumeLiquidBase{
|
||||
|
||||
for(int i = 0; i < liqs.size; i++){
|
||||
var liq = liqs.get(i);
|
||||
if(filter.get(liq) && build.liquids.get(liq) > 0){
|
||||
if(filter.get(liq) && build.liquids.get(liq) >= u){
|
||||
return liq;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user