diff --git a/core/assets-raw/sprites/blocks/environment/grate-detailed.png b/core/assets-raw/sprites/blocks/environment/grate-detailed.png deleted file mode 100644 index b295bc8169..0000000000 Binary files a/core/assets-raw/sprites/blocks/environment/grate-detailed.png and /dev/null differ diff --git a/core/assets-raw/sprites/blocks/environment/metal-tiles-13-autotile.png b/core/assets-raw/sprites/blocks/environment/metal-tiles-13-autotile.png new file mode 100644 index 0000000000..f4be2711e4 Binary files /dev/null and b/core/assets-raw/sprites/blocks/environment/metal-tiles-13-autotile.png differ diff --git a/core/assets-raw/sprites/blocks/environment/metal-tiles-13-mid-2.png b/core/assets-raw/sprites/blocks/environment/metal-tiles-13-mid-2.png new file mode 100644 index 0000000000..5e4723b32d Binary files /dev/null and b/core/assets-raw/sprites/blocks/environment/metal-tiles-13-mid-2.png differ diff --git a/core/assets-raw/sprites/blocks/environment/metal-tiles-13-mid-3.png b/core/assets-raw/sprites/blocks/environment/metal-tiles-13-mid-3.png new file mode 100644 index 0000000000..3597de2df3 Binary files /dev/null and b/core/assets-raw/sprites/blocks/environment/metal-tiles-13-mid-3.png differ diff --git a/core/assets-raw/sprites/blocks/environment/metal-tiles-13-mid-4.png b/core/assets-raw/sprites/blocks/environment/metal-tiles-13-mid-4.png new file mode 100644 index 0000000000..4a87ef35f7 Binary files /dev/null and b/core/assets-raw/sprites/blocks/environment/metal-tiles-13-mid-4.png differ diff --git a/core/assets-raw/sprites/blocks/environment/metal-tiles-13-mid-5.png b/core/assets-raw/sprites/blocks/environment/metal-tiles-13-mid-5.png new file mode 100644 index 0000000000..4e0319f689 Binary files /dev/null and b/core/assets-raw/sprites/blocks/environment/metal-tiles-13-mid-5.png differ diff --git a/core/assets-raw/sprites/blocks/environment/metal-tiles-13-mid-6.png b/core/assets-raw/sprites/blocks/environment/metal-tiles-13-mid-6.png new file mode 100644 index 0000000000..50f26e4516 Binary files /dev/null and b/core/assets-raw/sprites/blocks/environment/metal-tiles-13-mid-6.png differ diff --git a/core/assets-raw/sprites/blocks/environment/metal-wall-1-autotile.png b/core/assets-raw/sprites/blocks/environment/metal-wall-1-autotile.png new file mode 100644 index 0000000000..0473c9d9a2 Binary files /dev/null and b/core/assets-raw/sprites/blocks/environment/metal-wall-1-autotile.png differ diff --git a/core/assets-raw/sprites/blocks/environment/metal-wall-1-mid-2.png b/core/assets-raw/sprites/blocks/environment/metal-wall-1-mid-2.png new file mode 100644 index 0000000000..3d29baa537 Binary files /dev/null and b/core/assets-raw/sprites/blocks/environment/metal-wall-1-mid-2.png differ diff --git a/core/assets-raw/sprites/blocks/environment/metal-wall-1.png b/core/assets-raw/sprites/blocks/environment/metal-wall-1.png new file mode 100644 index 0000000000..1134307291 Binary files /dev/null and b/core/assets-raw/sprites/blocks/environment/metal-wall-1.png differ diff --git a/core/assets-raw/sprites/blocks/environment/metal-wall-2-autotile.png b/core/assets-raw/sprites/blocks/environment/metal-wall-2-autotile.png new file mode 100644 index 0000000000..6dd740a885 Binary files /dev/null and b/core/assets-raw/sprites/blocks/environment/metal-wall-2-autotile.png differ diff --git a/core/assets-raw/sprites/blocks/environment/metal-wall-2-mid-2.png b/core/assets-raw/sprites/blocks/environment/metal-wall-2-mid-2.png new file mode 100644 index 0000000000..3d29baa537 Binary files /dev/null and b/core/assets-raw/sprites/blocks/environment/metal-wall-2-mid-2.png differ diff --git a/core/assets-raw/sprites/blocks/environment/metal-wall-2.png b/core/assets-raw/sprites/blocks/environment/metal-wall-2.png new file mode 100644 index 0000000000..695f64d42b Binary files /dev/null and b/core/assets-raw/sprites/blocks/environment/metal-wall-2.png differ diff --git a/core/assets-raw/sprites/blocks/environment/metal-wall-3-autotile.png b/core/assets-raw/sprites/blocks/environment/metal-wall-3-autotile.png new file mode 100644 index 0000000000..605044775f Binary files /dev/null and b/core/assets-raw/sprites/blocks/environment/metal-wall-3-autotile.png differ diff --git a/core/assets-raw/sprites/blocks/environment/metal-wall-3.png b/core/assets-raw/sprites/blocks/environment/metal-wall-3.png new file mode 100644 index 0000000000..8cec03f8b9 Binary files /dev/null and b/core/assets-raw/sprites/blocks/environment/metal-wall-3.png differ diff --git a/core/assets/icons/icons.properties b/core/assets/icons/icons.properties index f5b01fd205..a9ed6ad37a 100755 --- a/core/assets/icons/icons.properties +++ b/core/assets/icons/icons.properties @@ -618,3 +618,7 @@ 63064=character-overlay-white|block-character-overlay-white-ui 63063=rune-overlay-crux|block-rune-overlay-crux-ui 63062=rune-overlay|block-rune-overlay-ui +63061=metal-wall-1|block-metal-wall-1-ui +63060=metal-wall-2|block-metal-wall-2-ui +63059=metal-tiles-13|block-metal-tiles-13-ui +63058=metal-wall-3|block-metal-wall-3-ui diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index eadd6bd72e..368b65d835 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -63,7 +63,9 @@ public class Blocks{ //old metal floors darkPanel1, darkPanel2, darkPanel3, darkPanel4, darkPanel5, darkPanel6, darkMetal, //new metal floors - metalTiles1, metalTiles2, metalTiles3, metalTiles4, metalTiles5, metalTiles6, metalTiles7, metalTiles8, metalTiles9, metalTiles10, metalTiles11, metalTiles12, + metalTiles1, metalTiles2, metalTiles3, metalTiles4, metalTiles5, metalTiles6, metalTiles7, metalTiles8, metalTiles9, metalTiles10, metalTiles11, metalTiles12, metalTiles13, + //new metal walls + metalWall1, metalWall2, metalWall3, metalWall4, //colored coloredFloor, coloredWall, @@ -908,6 +910,26 @@ public class Blocks{ lightColor = Team.crux.color.cpy().a(0.3f); }}; + metalTiles13 = new Floor("metal-tiles-13"){{ + autotile = true; + drawEdgeOut = false; + drawEdgeIn = false; + autotileMidVariants = 6; + }}; + + metalWall1 = new StaticWall("metal-wall-1"){{ + autotile = true; + }}; + + metalWall2 = new StaticWall("metal-wall-2"){{ + autotile = true; + autotileMidVariants = 2; + }}; + + metalWall3 = new StaticWall("metal-wall-3"){{ + autotile = true; + }}; + coloredFloor = new ColoredFloor("colored-floor"){{ autotile = true; drawEdgeOut = false; diff --git a/core/src/mindustry/content/ErekirTechTree.java b/core/src/mindustry/content/ErekirTechTree.java index 162131bbab..c28ad6875f 100644 --- a/core/src/mindustry/content/ErekirTechTree.java +++ b/core/src/mindustry/content/ErekirTechTree.java @@ -388,7 +388,7 @@ public class ErekirTechTree{ node(basin, Seq.with(new SectorComplete(atlas)), () -> { node(marsh, Seq.with(new SectorComplete(basin)), () -> { node(ravine, Seq.with(new SectorComplete(marsh), new Research(Liquids.slag)), () -> { - node(caldera, Seq.with(new SectorComplete(peaks), new Research(heatRedirector)), () -> { + node(caldera, Seq.with(new SectorComplete(peaks), new SectorComplete(ravine), new Research(heatRedirector)), () -> { node(stronghold, Seq.with(new SectorComplete(caldera), new Research(coreCitadel)), () -> { node(crevice, Seq.with(new SectorComplete(stronghold)), () -> { node(siege, Seq.with(new SectorComplete(crevice)), () -> { diff --git a/core/src/mindustry/logic/LExecutor.java b/core/src/mindustry/logic/LExecutor.java index 7f88186d38..ab2bbe6fcc 100644 --- a/core/src/mindustry/logic/LExecutor.java +++ b/core/src/mindustry/logic/LExecutor.java @@ -57,11 +57,11 @@ public class LExecutor{ public IntSet linkIds = new IntSet(); public Team team = Team.derelict; public boolean privileged = false; + //maps variable name to index in vars; lazily initialized + protected @Nullable ObjectIntMap nameMap; //yes, this is a minor memory leak, but it's probably not significant enough to matter protected static IntFloatMap unitTimeouts = new IntFloatMap(); - //lookup variable by name, lazy init. - protected @Nullable ObjectIntMap nameMap; static{ Events.on(ResetEvent.class, e -> unitTimeouts.clear()); diff --git a/core/src/mindustry/world/blocks/environment/StaticWall.java b/core/src/mindustry/world/blocks/environment/StaticWall.java index fd48bf0c58..06b7be64bc 100644 --- a/core/src/mindustry/world/blocks/environment/StaticWall.java +++ b/core/src/mindustry/world/blocks/environment/StaticWall.java @@ -18,8 +18,10 @@ public class StaticWall extends Prop{ public TextureRegion[][] split; /** If true, this wall uses autotiling; variants are not supported. See https://github.com/GglLfr/tile-gen*/ public boolean autotile; + /** If >1, the middle region of the autotile has random variants. */ + public int autotileMidVariants = 1; - protected TextureRegion[] autotileRegions; + protected TextureRegion[] autotileRegions, autotileMidRegions; public StaticWall(String name){ super(name); @@ -46,7 +48,11 @@ public class StaticWall extends Prop{ } } - Draw.rect(autotileRegions[TileBitmask.values[bits]], tile.worldx(), tile.worldy()); + int bit = TileBitmask.values[bits]; + + TextureRegion region = bit == 13 && autotileMidVariants > 1 ? autotileMidRegions[variant(tile.x, tile.y, autotileMidRegions.length)] : autotileRegions[bit]; + + Draw.rect(region, tile.worldx(), tile.worldy()); }else{ int rx = tile.x / 2 * 2; int ry = tile.y / 2 * 2; @@ -66,6 +72,10 @@ public class StaticWall extends Prop{ } } + public int variant(int x, int y, int max){ + return Mathf.randomSeed(Point2.pack(x, y), 0, Math.max(0, max - 1)); + } + public boolean checkAutotileSame(Tile tile, @Nullable Tile other){ return other != null && other.block() == this; } @@ -85,6 +95,13 @@ public class StaticWall extends Prop{ if(autotile){ autotileRegions = TileBitmask.load(name); + + if(autotileMidVariants > 1){ + autotileMidRegions = new TextureRegion[autotileMidVariants]; + for(int i = 0; i < autotileMidVariants; i++){ + autotileMidRegions[i] = Core.atlas.find(i == 0 ? name + "-13" : name + "-mid-" + (i + 1)); + } + } } }