JSON payload stack support
This commit is contained in:
@@ -360,6 +360,15 @@ public class ContentParser{
|
|||||||
return (T)fromJson(ItemStack.class, "{item: " + split[0] + ", amount: " + split[1] + "}");
|
return (T)fromJson(ItemStack.class, "{item: " + split[0] + ", amount: " + split[1] + "}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//try to parse "payloaditem/amount" syntax
|
||||||
|
if(type == PayloadStack.class && jsonData.isString() && jsonData.asString().contains("/")){
|
||||||
|
String[] split = jsonData.asString().split("/");
|
||||||
|
int number = Strings.parseInt(split[1], 1);
|
||||||
|
UnlockableContent cont = content.unit(split[0]) == null ? content.block(split[0]) : content.unit(split[0]);
|
||||||
|
|
||||||
|
return (T)new PayloadStack(cont == null ? Blocks.router : cont, number);
|
||||||
|
}
|
||||||
|
|
||||||
//try to parse "liquid/amount" syntax
|
//try to parse "liquid/amount" syntax
|
||||||
if(jsonData.isString() && jsonData.asString().contains("/")){
|
if(jsonData.isString() && jsonData.asString().contains("/")){
|
||||||
String[] split = jsonData.asString().split("/");
|
String[] split = jsonData.asString().split("/");
|
||||||
|
|||||||
@@ -679,8 +679,7 @@ public class ResearchDialog extends BaseDialog{
|
|||||||
disabledFontColor = Color.gray;
|
disabledFontColor = Color.gray;
|
||||||
up = buttonOver;
|
up = buttonOver;
|
||||||
over = buttonDown;
|
over = buttonDown;
|
||||||
}}, () -> spend(node))
|
}}, () -> spend(node)).disabled(i -> !canSpend(node)).growX().height(44f).colspan(3);
|
||||||
.disabled(i -> !canSpend(node)).growX().height(44f).colspan(3);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import mindustry.gen.*;
|
|||||||
import mindustry.graphics.*;
|
import mindustry.graphics.*;
|
||||||
import mindustry.type.*;
|
import mindustry.type.*;
|
||||||
import mindustry.ui.*;
|
import mindustry.ui.*;
|
||||||
import mindustry.world.*;
|
|
||||||
import mindustry.world.blocks.payloads.*;
|
import mindustry.world.blocks.payloads.*;
|
||||||
import mindustry.world.consumers.*;
|
import mindustry.world.consumers.*;
|
||||||
import mindustry.world.meta.*;
|
import mindustry.world.meta.*;
|
||||||
@@ -60,12 +59,19 @@ public class PayloadAmmoTurret extends Turret{
|
|||||||
@Override
|
@Override
|
||||||
public void build(Building build, Table table){
|
public void build(Building build, Table table){
|
||||||
MultiReqImage image = new MultiReqImage();
|
MultiReqImage image = new MultiReqImage();
|
||||||
content.blocks().each(i -> filter.get(i) && i.unlockedNow(), content -> image.add(new ReqImage(new Image(content.uiIcon),
|
|
||||||
() -> build instanceof PayloadTurretBuild it && !it.payloads.isEmpty() && it.currentBlock() == content)));
|
for(var block : content.blocks()) displayContent(build, image, block);
|
||||||
|
for(var unit : content.units()) displayContent(build, image, unit);
|
||||||
|
|
||||||
table.add(image).size(8 * 4);
|
table.add(image).size(8 * 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void displayContent(Building build, MultiReqImage image, UnlockableContent content){
|
||||||
|
if(filter.get(content) && content.unlockedNow()){
|
||||||
|
image.add(new ReqImage(new Image(content.uiIcon), () -> build instanceof PayloadTurretBuild it && !it.payloads.isEmpty() && it.currentAmmo() == content));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float efficiency(Building build){
|
public float efficiency(Building build){
|
||||||
//valid when there's any ammo in the turret
|
//valid when there's any ammo in the turret
|
||||||
@@ -86,7 +92,7 @@ public class PayloadAmmoTurret extends Turret{
|
|||||||
public class PayloadTurretBuild extends TurretBuild{
|
public class PayloadTurretBuild extends TurretBuild{
|
||||||
public PayloadSeq payloads = new PayloadSeq();
|
public PayloadSeq payloads = new PayloadSeq();
|
||||||
|
|
||||||
public UnlockableContent currentBlock(){
|
public UnlockableContent currentAmmo(){
|
||||||
for(var content : ammoKeys){
|
for(var content : ammoKeys){
|
||||||
if(payloads.contains(content)){
|
if(payloads.contains(content)){
|
||||||
return content;
|
return content;
|
||||||
|
|||||||
Reference in New Issue
Block a user