Barely functional logic

This commit is contained in:
Anuken
2020-08-07 18:30:03 -04:00
parent 090e0f35dc
commit 51af6eeec9
8 changed files with 143 additions and 37 deletions

View File

@@ -1,7 +1,9 @@
package mindustry.world.blocks.logic;
import arc.util.io.*;
import mindustry.*;
import mindustry.gen.*;
import mindustry.logic.*;
import mindustry.world.*;
public class LogicProcessor extends Block{
@@ -10,19 +12,46 @@ public class LogicProcessor extends Block{
super(name);
update = true;
configurable = true;
config(String.class, (LogicEntity entity, String code) -> {
if(code != null){
entity.code = code;
entity.executor.load(entity, LAssembler.fromJson(code));
}
});
}
public class LogicEntity extends Building{
/** logic "source code" as list of json statements */
String code = "[]";
LExecutor executor = new LExecutor();
@Override
public void updateTile(){
if(executor.initialized()){
executor.runAll();
}
}
@Override
public boolean configTapped(){
Vars.ui.logic.show();
Vars.ui.logic.show(code, this::configure);
return false;
}
@Override
public void write(Writes write){
super.write(write);
write.str(code);
}
@Override
public void read(Reads read, byte revision){
super.read(read, revision);
code = read.str();
executor.load(this, LAssembler.fromJson(code));
}
}
}