WIP launch pad rework
This commit is contained in:
70
core/src/mindustry/world/blocks/campaign/LandingPad.java
Normal file
70
core/src/mindustry/world/blocks/campaign/LandingPad.java
Normal file
@@ -0,0 +1,70 @@
|
||||
package mindustry.world.blocks.campaign;
|
||||
|
||||
import arc.util.*;
|
||||
import arc.util.io.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.io.*;
|
||||
import mindustry.type.*;
|
||||
import mindustry.world.*;
|
||||
|
||||
public class LandingPad extends Block{
|
||||
|
||||
public LandingPad(String name){
|
||||
super(name);
|
||||
|
||||
hasItems = true;
|
||||
solid = true;
|
||||
update = true;
|
||||
configurable = true;
|
||||
acceptsItems = false;
|
||||
|
||||
config(Item.class, (LandingPadBuild build, Item item) -> build.config = item);
|
||||
configClear((LandingPadBuild build) -> build.config = null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean outputsItems(){
|
||||
return true;
|
||||
}
|
||||
|
||||
public class LandingPadBuild extends Building{
|
||||
public @Nullable Item config;
|
||||
|
||||
@Override
|
||||
public void updateTile(){
|
||||
if(items.total() > 0){
|
||||
dumpAccumulate(config == null || items.get(config) != items.total() ? null : config);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canDump(Building to, Item item){
|
||||
//hack: canDump is only ever called right before item offload, so count the item as "produced" before that.
|
||||
//TODO: is this necessary?
|
||||
produced(item);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean acceptItem(Building source, Item item){
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable Object config(){
|
||||
return config;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(Reads read, byte revision){
|
||||
super.read(read, revision);
|
||||
config = TypeIO.readItem(read);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(Writes write){
|
||||
super.write(write);
|
||||
TypeIO.writeItem(write, config);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -27,13 +27,14 @@ import mindustry.world.meta.*;
|
||||
import static mindustry.Vars.*;
|
||||
|
||||
public class LaunchPad extends Block{
|
||||
/** Time inbetween launches. */
|
||||
/** Time between launches. */
|
||||
public float launchTime = 1f;
|
||||
public Sound launchSound = Sounds.none;
|
||||
|
||||
public @Load("@-light") TextureRegion lightRegion;
|
||||
public @Load(value = "@-pod", fallback = "launchpod") TextureRegion podRegion;
|
||||
public Color lightColor = Color.valueOf("eab678");
|
||||
public boolean acceptMultipleItems = false;
|
||||
|
||||
public LaunchPad(String name){
|
||||
super(name);
|
||||
@@ -116,7 +117,7 @@ public class LaunchPad extends Block{
|
||||
|
||||
@Override
|
||||
public boolean acceptItem(Building source, Item item){
|
||||
return items.total() < itemCapacity;
|
||||
return items.total() < itemCapacity && (acceptMultipleItems || items.total() == 0 || items.first() == item);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -159,7 +160,8 @@ public class LaunchPad extends Block{
|
||||
|
||||
@Override
|
||||
public void buildConfiguration(Table table){
|
||||
if(!state.isCampaign() || net.client()){
|
||||
//TODO: this UI should be on landing pads
|
||||
if(!state.isCampaign() || net.client() || true){
|
||||
deselect();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ import static mindustry.Vars.*;
|
||||
//TODO replace with ConsumeLiquids?
|
||||
public class ConsumeLiquid extends ConsumeLiquidBase{
|
||||
public final Liquid liquid;
|
||||
public boolean trigger;
|
||||
|
||||
public ConsumeLiquid(Liquid liquid, float amount){
|
||||
super(amount);
|
||||
@@ -22,6 +23,11 @@ public class ConsumeLiquid extends ConsumeLiquidBase{
|
||||
this(null, 0f);
|
||||
}
|
||||
|
||||
public ConsumeLiquid trigger(boolean trigger){
|
||||
this.trigger = trigger;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void apply(Block block){
|
||||
super.apply(block);
|
||||
@@ -38,6 +44,13 @@ public class ConsumeLiquid extends ConsumeLiquidBase{
|
||||
build.liquids.remove(liquid, amount * build.edelta() * multiplier.get(build));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void trigger(Building build){
|
||||
if(trigger){
|
||||
build.liquids.remove(liquid, amount);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public float efficiency(Building build){
|
||||
float ed = build.edelta() * build.efficiencyScale();
|
||||
|
||||
Reference in New Issue
Block a user