JSON payload stack support

This commit is contained in:
Anuken
2022-08-11 08:43:58 -04:00
parent 3f96799c2e
commit e4c6822cca
3 changed files with 20 additions and 6 deletions

View File

@@ -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("/");

View File

@@ -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);
} }
}); });

View File

@@ -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;