From 6d50a747e37b3dc56b01a2eefd91516a3336bf1c Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 16 Jan 2019 20:37:43 -0500 Subject: [PATCH] Basic map shading --- core/assets/bundles/bundle.properties | 2 +- core/assets/maps/groundZero.mmap | Bin 0 -> 330325 bytes core/assets/maps/sandbox.mmap | Bin 330441 -> 0 bytes .../io/anuke/mindustry/content/Blocks.java | 7 --- .../src/io/anuke/mindustry/content/Zones.java | 6 +-- core/src/io/anuke/mindustry/core/World.java | 43 ++++++++++++++++++ .../io/anuke/mindustry/editor/MapEditor.java | 3 -- core/src/io/anuke/mindustry/maps/Maps.java | 9 +--- .../mindustry/maps/generators/Generator.java | 4 ++ .../maps/generators/MapGenerator.java | 8 +++- core/src/io/anuke/mindustry/type/Zone.java | 5 ++ .../io/anuke/mindustry/world/blocks/Rock.java | 2 + 12 files changed, 66 insertions(+), 23 deletions(-) create mode 100644 core/assets/maps/groundZero.mmap delete mode 100644 core/assets/maps/sandbox.mmap diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 2daa533eff..900fd0f44d 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -238,7 +238,7 @@ error.mapnotfound = Map file not found! error.io = Network I/O error. error.any = Unknown network error. -zone.wasteland.name = Wasteland +zone.groundZero.name = Ground Zero settings.language = Language settings.reset = Reset to Defaults diff --git a/core/assets/maps/groundZero.mmap b/core/assets/maps/groundZero.mmap new file mode 100644 index 0000000000000000000000000000000000000000..aa4cb1a03802f5fdaf23f9535d91fdb8dc5f3e77 GIT binary patch literal 330325 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 diff --git a/core/src/io/anuke/mindustry/content/Blocks.java b/core/src/io/anuke/mindustry/content/Blocks.java index d3520108ef..0db67048f0 100644 --- a/core/src/io/anuke/mindustry/content/Blocks.java +++ b/core/src/io/anuke/mindustry/content/Blocks.java @@ -88,14 +88,7 @@ public class Blocks implements ContentList{ blockpart = new BlockPart(); spawn = new Block("spawn"){ - public void drawShadow(Tile tile){} - - public void draw(Tile tile){ - Draw.color(Color.SCARLET); - Lines.circle(tile.worldx(), tile.worldy(), 4f +Mathf.absin(Time.time(), 6f, 6f)); - Draw.color(); - } }; //Registers build blocks from size 1-6 diff --git a/core/src/io/anuke/mindustry/content/Zones.java b/core/src/io/anuke/mindustry/content/Zones.java index bb333f2f60..c5c27b18a3 100644 --- a/core/src/io/anuke/mindustry/content/Zones.java +++ b/core/src/io/anuke/mindustry/content/Zones.java @@ -2,17 +2,17 @@ package io.anuke.mindustry.content; import io.anuke.mindustry.game.ContentList; import io.anuke.mindustry.game.Rules; -import io.anuke.mindustry.maps.generators.BasicGenerator; +import io.anuke.mindustry.maps.generators.MapGenerator; import io.anuke.mindustry.type.ItemStack; import io.anuke.mindustry.type.Zone; public class Zones implements ContentList{ - public Zone wasteland; + public Zone groundZero; @Override public void load(){ - wasteland = new Zone("wasteland", new BasicGenerator(256, 256, Items.copper)){{ + groundZero = new Zone("groundZero", new MapGenerator("groundZero")){{ deployCost = ItemStack.with(Items.copper, 100); startingItems = ItemStack.with(Items.copper, 50); alwaysUnlocked = true; diff --git a/core/src/io/anuke/mindustry/core/World.java b/core/src/io/anuke/mindustry/core/World.java index 9ec221e850..d3d29189dd 100644 --- a/core/src/io/anuke/mindustry/core/World.java +++ b/core/src/io/anuke/mindustry/core/World.java @@ -6,6 +6,8 @@ import io.anuke.arc.Events; import io.anuke.arc.collection.Array; import io.anuke.arc.collection.IntArray; import io.anuke.arc.entities.EntityQuery; +import io.anuke.arc.math.Mathf; +import io.anuke.arc.math.geom.Geometry; import io.anuke.arc.math.geom.Point2; import io.anuke.arc.util.Log; import io.anuke.arc.util.Structs; @@ -409,6 +411,47 @@ public class World implements ApplicationListener{ * Usually used before placing structures on a tile array.*/ public void prepareTiles(Tile[][] tiles){ + byte[][] dark = new byte[tiles.length][tiles[0].length]; + byte[][] writeBuffer = new byte[tiles.length][tiles[0].length]; + + byte darkIterations = 4; + for(int x = 0; x < tiles.length; x++){ + for(int y = 0; y < tiles[0].length; y++){ + Tile tile = tiles[x][y]; + if(tile.block().solid && !tile.block().update){ + dark[x][y] = darkIterations; + } + } + } + + for(int i = 0; i < darkIterations; i++){ + for(int x = 0; x < tiles.length; x++){ + for(int y = 0; y < tiles[0].length; y++){ + boolean min = false; + for(Point2 point : Geometry.d4){ + int newX = x + point.x, newY = y + point.y; + if(Structs.inBounds(newX, newY, tiles) && dark[newX][newY] < dark[x][y]){ + min = true; + break; + } + } + writeBuffer[x][y] = (byte)Math.max(0, dark[x][y] - Mathf.num(min)); + } + } + + for(int x = 0; x < tiles.length; x++){ + for(int y = 0; y < tiles[0].length; y++){ + dark[x][y] = writeBuffer[x][y]; + } + } + } + + for(int x = 0; x < tiles.length; x++){ + for(int y = 0; y < tiles[0].length; y++){ + tiles[x][y].setRotation(dark[x][y]); + } + } + //find multiblocks IntArray multiblocks = new IntArray(); diff --git a/core/src/io/anuke/mindustry/editor/MapEditor.java b/core/src/io/anuke/mindustry/editor/MapEditor.java index e7fee69dbd..275329dcd1 100644 --- a/core/src/io/anuke/mindustry/editor/MapEditor.java +++ b/core/src/io/anuke/mindustry/editor/MapEditor.java @@ -99,9 +99,6 @@ public class MapEditor{ } public void draw(int x, int y, Block drawBlock){ - if(x < 0 || y < 0 || x >= map.width() || y >= map.height()){ - return; - } byte writeID = drawBlock.id; byte partID = Blocks.blockpart.id; diff --git a/core/src/io/anuke/mindustry/maps/Maps.java b/core/src/io/anuke/mindustry/maps/Maps.java index 6af98f428e..51f8b85ec6 100644 --- a/core/src/io/anuke/mindustry/maps/Maps.java +++ b/core/src/io/anuke/mindustry/maps/Maps.java @@ -63,14 +63,7 @@ public class Maps implements Disposable{ FileHandle file = Core.files.internal("maps/" + name + "." + mapExtension); try(DataInputStream ds = new DataInputStream(file.read())) { - MapMeta meta = MapIO.readMapMeta(ds); - Map map = new Map(name, meta, false, file::read); - - if (!headless){ - map.texture = new Texture(MapIO.generatePixmap(MapIO.readTileData(ds, meta, true))); - } - - return map; + return new Map(name, MapIO.readMapMeta(ds), false, file::read); }catch(IOException e){ throw new RuntimeException(e); } diff --git a/core/src/io/anuke/mindustry/maps/generators/Generator.java b/core/src/io/anuke/mindustry/maps/generators/Generator.java index 1f818fc499..dac0b08093 100644 --- a/core/src/io/anuke/mindustry/maps/generators/Generator.java +++ b/core/src/io/anuke/mindustry/maps/generators/Generator.java @@ -12,5 +12,9 @@ public abstract class Generator{ public Generator(){} + public void init(){ + + } + public abstract void generate(Tile[][] tiles); } diff --git a/core/src/io/anuke/mindustry/maps/generators/MapGenerator.java b/core/src/io/anuke/mindustry/maps/generators/MapGenerator.java index 92c5def5f9..9d593e0e1f 100644 --- a/core/src/io/anuke/mindustry/maps/generators/MapGenerator.java +++ b/core/src/io/anuke/mindustry/maps/generators/MapGenerator.java @@ -10,9 +10,15 @@ import io.anuke.mindustry.world.Tile; import static io.anuke.mindustry.Vars.world; public class MapGenerator extends Generator{ - private final Map map; + private Map map; + private String mapName; public MapGenerator(String mapName){ + this.mapName = mapName; + } + + @Override + public void init(){ map = world.maps.loadInternalMap(mapName); width = map.meta.width; height = map.meta.height; diff --git a/core/src/io/anuke/mindustry/type/Zone.java b/core/src/io/anuke/mindustry/type/Zone.java index fe922a29f2..87a3cc45b6 100644 --- a/core/src/io/anuke/mindustry/type/Zone.java +++ b/core/src/io/anuke/mindustry/type/Zone.java @@ -21,6 +21,11 @@ public class Zone extends UnlockableContent{ this.generator = generator; } + @Override + public void init(){ + generator.init(); + } + @Override public boolean alwaysUnlocked(){ return alwaysUnlocked; diff --git a/core/src/io/anuke/mindustry/world/blocks/Rock.java b/core/src/io/anuke/mindustry/world/blocks/Rock.java index 57680e6b75..d2cca6e9cf 100644 --- a/core/src/io/anuke/mindustry/world/blocks/Rock.java +++ b/core/src/io/anuke/mindustry/world/blocks/Rock.java @@ -19,11 +19,13 @@ public class Rock extends Block{ @Override public void draw(Tile tile){ + Draw.colorl(1f - tile.getRotation() / 4f); if(variants > 0){ Draw.rect(regions[Mathf.randomSeed(tile.pos(), 0, Math.max(0, regions.length - 1))], tile.worldx(), tile.worldy()); }else{ Draw.rect(region, tile.worldx(), tile.worldy()); } + Draw.color(); } @Override