Further unfinished map tweaks

This commit is contained in:
Anuken
2019-05-06 18:32:18 -04:00
parent 3035d569cc
commit 88de54ec90
8 changed files with 33 additions and 27 deletions

View File

@ -12,8 +12,7 @@ import io.anuke.arc.math.Mathf;
import io.anuke.arc.math.geom.Rectangle;
import io.anuke.arc.math.geom.Vector2;
import io.anuke.arc.util.*;
import io.anuke.arc.util.io.ByteBufferOutput;
import io.anuke.arc.util.io.ReusableByteOutStream;
import io.anuke.arc.util.io.*;
import io.anuke.mindustry.content.Blocks;
import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.entities.Entities;
@ -212,7 +211,7 @@ public class NetServer implements ApplicationListener{
public void sendWorldData(Player player, int clientID){
ByteArrayOutputStream stream = new ByteArrayOutputStream();
DeflaterOutputStream def = new DeflaterOutputStream(stream);
DeflaterOutputStream def = new FastDeflaterOutputStream(stream);
NetworkIO.writeWorld(player, def);
WorldStream data = new WorldStream();
data.stream = new ByteArrayInputStream(stream.toByteArray());

View File

@ -3,11 +3,13 @@ package io.anuke.mindustry.editor;
import io.anuke.arc.collection.ObjectMap;
import io.anuke.arc.collection.StringMap;
import io.anuke.arc.files.FileHandle;
import io.anuke.arc.graphics.Pixmap;
import io.anuke.arc.math.Mathf;
import io.anuke.arc.util.Structs;
import io.anuke.mindustry.content.Blocks;
import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.gen.TileOp;
import io.anuke.mindustry.io.LegacyMapIO;
import io.anuke.mindustry.io.MapIO;
import io.anuke.mindustry.maps.Map;
import io.anuke.mindustry.world.Block;
@ -15,8 +17,6 @@ import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.BlockPart;
import io.anuke.mindustry.world.blocks.Floor;
import java.io.IOException;
import static io.anuke.mindustry.Vars.world;
public class MapEditor{
@ -47,7 +47,7 @@ public class MapEditor{
loading = false;
}
public void beginEdit(Map map) throws IOException{
public void beginEdit(Map map){
reset();
loading = true;
@ -61,6 +61,14 @@ public class MapEditor{
loading = false;
}
public void beginEdit(Pixmap pixmap){
reset();
createTiles(pixmap.getWidth(), pixmap.getHeight());
load(() -> LegacyMapIO.readPixmap(pixmap, tiles()));
renderer.resize(width(), height());
}
//adds missing blockparts
public void checkLinkedTiles(){
Tile[][] tiles = world.getTiles();
@ -109,7 +117,7 @@ public class MapEditor{
clearOp();
brushSize = 1;
drawBlock = Blocks.stone;
tags = new ObjectMap<>();
tags = new StringMap();
}
public Tile[][] tiles(){

View File

@ -19,6 +19,7 @@ import io.anuke.arc.util.*;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.core.Platform;
import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.io.LegacyMapIO;
import io.anuke.mindustry.io.MapIO;
import io.anuke.mindustry.maps.Map;
import io.anuke.mindustry.ui.dialogs.FloatingDialog;
@ -103,9 +104,8 @@ public class MapEditorDialog extends Dialog implements Disposable{
ui.loadAnd(() -> {
try{
Pixmap pixmap = new Pixmap(file);
Tile[][] tiles = editor.createTiles(pixmap.getWidth(), pixmap.getHeight());
editor.load(() -> MapIO.readLegacyPixmap(pixmap, tiles));
editor.beginEdit(tiles);
editor.beginEdit(pixmap);
pixmap.dispose();
}catch(Exception e){
ui.showError(Core.bundle.format("editor.errorload", Strings.parseException(e, false)));
Log.err(e);
@ -281,9 +281,8 @@ public class MapEditorDialog extends Dialog implements Disposable{
public void beginEditMap(FileHandle file){
ui.loadAnd(() -> {
try{
Map map = MapIO.readMap(file, true);
shownWithMap = true;
editor.beginEdit(map);
editor.beginEdit(MapIO.createMap(file, true));
show();
}catch(Exception e){
Log.err(e);

View File

@ -143,7 +143,7 @@ public class LegacyMapIO{
}
/** Reads a pixmap in the 3.5 pixmap format. */
public static void readLegacyPixmap(Pixmap pixmap, Tile[][] tiles){
public static void readPixmap(Pixmap pixmap, Tile[][] tiles){
for(int x = 0; x < pixmap.getWidth(); x++){
for(int y = 0; y < pixmap.getHeight(); y++){
int color = pixmap.getPixel(x, pixmap.getHeight() - 1 - y);

View File

@ -20,6 +20,7 @@ import java.util.zip.InflaterInputStream;
import static io.anuke.mindustry.Vars.bufferSize;
/** Reads and writes map files. */
//TODO does this class even need to exist??? move to Maps
public class MapIO{
private static final int[] pngHeader = {0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A};
@ -47,6 +48,13 @@ public class MapIO{
}
}
public static void writeMap(FileHandle file, Map map) throws IOException{
SaveIO.write(file);
try(DataOutputStream out = new DataOutputStream(file.write(false, bufferSize))){
}
}
public static void loadMap(Map map){
SaveIO.load(map.file);
}

View File

@ -4,12 +4,12 @@ import io.anuke.arc.collection.Array;
import io.anuke.arc.collection.IntMap;
import io.anuke.arc.files.FileHandle;
import io.anuke.arc.util.io.CounterInputStream;
import io.anuke.arc.util.io.FastDeflaterOutputStream;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.io.versions.Save1;
import java.io.*;
import java.util.Arrays;
import java.util.zip.DeflaterOutputStream;
import java.util.zip.InflaterInputStream;
import static io.anuke.mindustry.Vars.*;
@ -101,14 +101,7 @@ public class SaveIO{
}
public static void write(FileHandle file){
write(new DeflaterOutputStream(file.write(false, bufferSize)){
byte[] tmp = {0};
public void write(int var1) throws IOException{
tmp[0] = (byte)(var1 & 255);
this.write(tmp, 0, 1);
}
});
write(new FastDeflaterOutputStream(file.write(false, bufferSize)));
}
public static void write(OutputStream os){

View File

@ -30,14 +30,14 @@ public abstract class SaveVersion extends SaveFileReader{
return new SaveMeta(map.getInt("version"), map.getLong("saved"), map.getLong("playtime"), map.getInt("build"), map.get("mapname"), map.getInt("wave"), Serialization.readRulesStringJson(map.get("rules", "{}")));
}
public void write(DataOutputStream stream) throws IOException{
public final void write(DataOutputStream stream) throws IOException{
region("meta", stream, this::writeMeta);
region("content", stream, this::writeContentHeader);
region("map", stream, this::writeMap);
region("entities", stream, this::writeEntities);
}
public void read(DataInputStream stream, CounterInputStream counter) throws IOException{
public final void read(DataInputStream stream, CounterInputStream counter) throws IOException{
region("meta", stream, counter, this::readMeta);
region("content", stream, counter, this::readContentHeader);
region("map", stream, counter, this::readMap);

View File

@ -10,7 +10,6 @@ import io.anuke.arc.util.Log;
import io.anuke.arc.util.serialization.Json;
import io.anuke.mindustry.game.SpawnGroup;
import io.anuke.mindustry.io.MapIO;
import io.anuke.mindustry.world.Tile;
import java.io.IOException;
import java.io.StringWriter;
@ -106,10 +105,10 @@ public class Maps implements Disposable{
//create map, write it, etc etc etc
Map map = new Map(file, world.width(), world.height(), tags, true);
MapIO.writeMap(file, map, data);
MapIO.writeMap(file, map);
if(!headless){
map.texture = new Texture(MapIO.generatePreview(data));
map.texture = new Texture(MapIO.generatePreview(world.getTiles()));
}
maps.add(map);
maps.sort();