This commit is contained in:
Anuken 2020-08-12 21:24:00 -04:00
parent fb511a4eef
commit 1249eb3b00
6 changed files with 52 additions and 10 deletions

View File

@ -213,9 +213,9 @@ public class MapView extends Element implements GestureListener{
y = (y - getHeight() / 2 + sclheight / 2 - offsety * zoom) / sclheight * editor.height();
if(editor.drawBlock.size % 2 == 0 && tool != EditorTool.eraser){
return Tmp.g1.set((int)(x - 0.5f), (int)(y - 0.5f));
return Tmp.p1.set((int)(x - 0.5f), (int)(y - 0.5f));
}else{
return Tmp.g1.set((int)x, (int)y);
return Tmp.p1.set((int)x, (int)y);
}
}

View File

@ -53,7 +53,7 @@ public class BuildPlan{
}
public static Object pointConfig(Object config, Cons<Point2> cons){
public static Object pointConfig(Block block, Object config, Cons<Point2> cons){
if(config instanceof Point2){
config = ((Point2)config).cpy();
cons.get((Point2)config);
@ -65,6 +65,8 @@ public class BuildPlan{
cons.get(result[i++]);
}
config = result;
}else if(block != null){
config = block.pointConfig(config, cons);
}
return config;
}
@ -72,7 +74,7 @@ public class BuildPlan{
/** If this requests's config is a Point2 or an array of Point2s, this returns a copy of them for transformation.
* Otherwise does nothing. */
public void pointConfig(Cons<Point2> cons){
this.config = pointConfig(this.config, cons);
this.config = pointConfig(block, this.config, cons);
}
public BuildPlan copy(){

View File

@ -583,7 +583,7 @@ public class Schematics implements Loadable{
int ox = schem.width/2, oy = schem.height/2;
schem.tiles.each(req -> {
req.config = BuildPlan.pointConfig(req.config, p -> {
req.config = BuildPlan.pointConfig(req.block, req.config, p -> {
int cx = p.x, cy = p.y;
int lx = cx;

View File

@ -405,6 +405,10 @@ public class Block extends UnlockableContent{
}
public Object pointConfig(Object config, Cons<Point2> transformer){
return config;
}
/** Configure when a null value is passed.*/
public <E extends Building> void configClear(Cons<E> cons){
configurations.put(void.class, (tile, value) -> cons.get((E)tile));

View File

@ -1,7 +1,9 @@
package mindustry.world.blocks.logic;
import arc.func.*;
import arc.math.geom.*;
import arc.scene.ui.layout.*;
import arc.struct.Bits;
import arc.struct.*;
import arc.util.*;
import arc.util.io.*;
@ -77,9 +79,11 @@ public class LogicBlock extends Block{
}
static byte[] compress(String code, Seq<LogicLink> links){
try{
byte[] bytes = code.getBytes(charset);
return compress(code.getBytes(charset), links);
}
static byte[] compress(byte[] bytes, Seq<LogicLink> links){
try{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream stream = new DataOutputStream(new DeflaterOutputStream(baos));
@ -109,6 +113,39 @@ public class LogicBlock extends Block{
}
}
@Override
public Object pointConfig(Object config, Cons<Point2> transformer){
if(config instanceof byte[]){
byte[] data = (byte[])config;
try(DataInputStream stream = new DataInputStream(new InflaterInputStream(new ByteArrayInputStream(data)))){
//discard version for now
stream.read();
int bytelen = stream.readInt();
byte[] bytes = new byte[bytelen];
stream.read(bytes);
int total = stream.readInt();
Seq<LogicLink> links = new Seq<>();
for(int i = 0; i < total; i++){
String name = stream.readUTF();
short x = stream.readShort(), y = stream.readShort();
transformer.get(Tmp.p1.set(x, y));
links.add(new LogicLink(Tmp.p1.x, Tmp.p1.y, name, true));
}
return compress(bytes, links);
}catch(IOException e){
Log.err(e);
}
}
return config;
}
public static class LogicLink{
public boolean active = true, valid;
public int x, y;
@ -139,7 +176,6 @@ public class LogicBlock extends Block{
DataInputStream stream = new DataInputStream(new InflaterInputStream(new ByteArrayInputStream(data)));
try{
//discard version, there's only one
int version = stream.read();
int bytelen = stream.readInt();
@ -301,7 +337,7 @@ public class LogicBlock extends Block{
}
public Seq<LogicLink> relativeConnections(){
Seq<LogicLink> copy = new Seq<>(links);
Seq<LogicLink> copy = new Seq<>(links.size);
for(LogicLink l : links){
LogicLink c = l.copy();
c.x -= tileX();

View File

@ -1,3 +1,3 @@
org.gradle.daemon=true
org.gradle.jvmargs=-Xms256m -Xmx1024m
archash=363906fbb7e0ca5cb07660a8a818912d61691546
archash=55e3f18ceeafc718d401b62d0129855f665920e4