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] + "}");
|
||||
}
|
||||
|
||||
//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
|
||||
if(jsonData.isString() && jsonData.asString().contains("/")){
|
||||
String[] split = jsonData.asString().split("/");
|
||||
|
||||
@@ -679,8 +679,7 @@ public class ResearchDialog extends BaseDialog{
|
||||
disabledFontColor = Color.gray;
|
||||
up = buttonOver;
|
||||
over = buttonDown;
|
||||
}}, () -> spend(node))
|
||||
.disabled(i -> !canSpend(node)).growX().height(44f).colspan(3);
|
||||
}}, () -> spend(node)).disabled(i -> !canSpend(node)).growX().height(44f).colspan(3);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -10,7 +10,6 @@ import mindustry.gen.*;
|
||||
import mindustry.graphics.*;
|
||||
import mindustry.type.*;
|
||||
import mindustry.ui.*;
|
||||
import mindustry.world.*;
|
||||
import mindustry.world.blocks.payloads.*;
|
||||
import mindustry.world.consumers.*;
|
||||
import mindustry.world.meta.*;
|
||||
@@ -60,12 +59,19 @@ public class PayloadAmmoTurret extends Turret{
|
||||
@Override
|
||||
public void build(Building build, Table table){
|
||||
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);
|
||||
}
|
||||
|
||||
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
|
||||
public float efficiency(Building build){
|
||||
//valid when there's any ammo in the turret
|
||||
@@ -86,7 +92,7 @@ public class PayloadAmmoTurret extends Turret{
|
||||
public class PayloadTurretBuild extends TurretBuild{
|
||||
public PayloadSeq payloads = new PayloadSeq();
|
||||
|
||||
public UnlockableContent currentBlock(){
|
||||
public UnlockableContent currentAmmo(){
|
||||
for(var content : ammoKeys){
|
||||
if(payloads.contains(content)){
|
||||
return content;
|
||||
|
||||
Reference in New Issue
Block a user