From f14d631ff90165ecbaf88e4ff12adcfbf15dee6c Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 8 Oct 2020 14:44:02 -0400 Subject: [PATCH] Internal changes for surface-less floors --- core/src/mindustry/editor/EditorTile.java | 2 +- core/src/mindustry/editor/EditorTool.java | 2 +- core/src/mindustry/editor/MapGenerateDialog.java | 2 +- core/src/mindustry/entities/Puddles.java | 4 ++++ core/src/mindustry/maps/filters/DistortFilter.java | 3 +-- core/src/mindustry/maps/filters/GenerateFilter.java | 2 +- core/src/mindustry/maps/generators/BaseGenerator.java | 4 ++-- core/src/mindustry/maps/generators/BasicGenerator.java | 4 ++-- core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java | 4 ++-- core/src/mindustry/world/blocks/ConstructBlock.java | 2 +- core/src/mindustry/world/blocks/environment/Floor.java | 5 +++++ 11 files changed, 21 insertions(+), 13 deletions(-) diff --git a/core/src/mindustry/editor/EditorTile.java b/core/src/mindustry/editor/EditorTile.java index 3731cf3d99..b3a9010ada 100644 --- a/core/src/mindustry/editor/EditorTile.java +++ b/core/src/mindustry/editor/EditorTile.java @@ -26,7 +26,7 @@ public class EditorTile extends Tile{ if(type instanceof OverlayFloor){ //don't place on liquids - if(!floor.isLiquid){ + if(floor.hasSurface()){ setOverlayID(type.id); } return; diff --git a/core/src/mindustry/editor/EditorTool.java b/core/src/mindustry/editor/EditorTool.java index 2dff5e9f46..194ec97e4c 100644 --- a/core/src/mindustry/editor/EditorTool.java +++ b/core/src/mindustry/editor/EditorTool.java @@ -118,7 +118,7 @@ public enum EditorTool{ if(editor.drawBlock.isOverlay()){ Block dest = tile.overlay(); if(dest == editor.drawBlock) return; - tester = t -> t.overlay() == dest && !t.floor().isLiquid; + tester = t -> t.overlay() == dest && t.floor().hasSurface(); setter = t -> t.setOverlay(editor.drawBlock); }else if(editor.drawBlock.isFloor()){ Block dest = tile.floor(); diff --git a/core/src/mindustry/editor/MapGenerateDialog.java b/core/src/mindustry/editor/MapGenerateDialog.java index a4a4c0c181..fae31dc7d5 100644 --- a/core/src/mindustry/editor/MapGenerateDialog.java +++ b/core/src/mindustry/editor/MapGenerateDialog.java @@ -417,7 +417,7 @@ public class MapGenerateDialog extends BaseDialog{ public void set(Block floor, Block wall, Block ore, Team team){ this.floor = floor.id; this.block = wall.id; - this.ore = floor.asFloor().isLiquid ? 0 : ore.id; + this.ore = !floor.asFloor().hasSurface() ? 0 : ore.id; this.team = (byte)team.id; } diff --git a/core/src/mindustry/entities/Puddles.java b/core/src/mindustry/entities/Puddles.java index 461e486001..0abdae4928 100644 --- a/core/src/mindustry/entities/Puddles.java +++ b/core/src/mindustry/entities/Puddles.java @@ -45,6 +45,10 @@ public class Puddles{ return; } + if(tile.floor().solid){ + return; + } + Puddle p = map.get(tile.pos()); if(p == null){ Puddle puddle = Puddle.create(); diff --git a/core/src/mindustry/maps/filters/DistortFilter.java b/core/src/mindustry/maps/filters/DistortFilter.java index 0d3691f1f7..32c8f18a14 100644 --- a/core/src/mindustry/maps/filters/DistortFilter.java +++ b/core/src/mindustry/maps/filters/DistortFilter.java @@ -3,7 +3,6 @@ package mindustry.maps.filters; import arc.util.*; import mindustry.maps.filters.FilterOption.*; import mindustry.world.*; -import mindustry.world.blocks.environment.*; public class DistortFilter extends GenerateFilter{ float scl = 40, mag = 5; @@ -27,6 +26,6 @@ public class DistortFilter extends GenerateFilter{ in.floor = tile.floor(); if(!tile.block().synthetic() && !in.block.synthetic()) in.block = tile.block(); - if(!((Floor)in.floor).isLiquid) in.ore = tile.overlay(); + in.ore = tile.overlay(); } } diff --git a/core/src/mindustry/maps/filters/GenerateFilter.java b/core/src/mindustry/maps/filters/GenerateFilter.java index 6d0f48d121..c884d5296e 100644 --- a/core/src/mindustry/maps/filters/GenerateFilter.java +++ b/core/src/mindustry/maps/filters/GenerateFilter.java @@ -20,7 +20,7 @@ public abstract class GenerateFilter{ apply(); tile.setFloor(in.floor.asFloor()); - tile.setOverlay(in.floor.asFloor().isLiquid ? Blocks.air : in.ore); + tile.setOverlay(!in.floor.asFloor().hasSurface() ? Blocks.air : in.ore); if(!tile.block().synthetic() && !in.block.synthetic()){ tile.setBlock(in.block); diff --git a/core/src/mindustry/maps/generators/BaseGenerator.java b/core/src/mindustry/maps/generators/BaseGenerator.java index 8a5120f59d..d8965014b7 100644 --- a/core/src/mindustry/maps/generators/BaseGenerator.java +++ b/core/src/mindustry/maps/generators/BaseGenerator.java @@ -188,12 +188,12 @@ public class BaseGenerator{ tile.block.iterateTaken(tile.x + cx, tile.y + cy, (ex, ey) -> { - if(!tiles.getn(ex, ey).floor().isLiquid){ + if(tiles.getn(ex, ey).floor().hasSurface()){ set(tiles.getn(ex, ey), item); } Tile rand = tiles.getc(ex + Mathf.range(1), ey + Mathf.range(1)); - if(!rand.floor().isLiquid){ + if(rand.floor().hasSurface()){ //random ores nearby to make it look more natural set(rand, item); } diff --git a/core/src/mindustry/maps/generators/BasicGenerator.java b/core/src/mindustry/maps/generators/BasicGenerator.java index 542f84cf29..e20350e6d3 100644 --- a/core/src/mindustry/maps/generators/BasicGenerator.java +++ b/core/src/mindustry/maps/generators/BasicGenerator.java @@ -69,7 +69,7 @@ public abstract class BasicGenerator implements WorldGenerator{ public void ores(Seq ores){ pass((x, y) -> { - if(floor.asFloor().isLiquid) return; + if(!floor.asFloor().hasSurface()) return; int offsetX = x - 4, offsetY = y + 23; for(int i = ores.size - 1; i >= 0; i--){ @@ -124,7 +124,7 @@ public abstract class BasicGenerator implements WorldGenerator{ Block[] blocks = {Blocks.darkPanel3}; int secSize = 20; pass((x, y) -> { - if(floor.asFloor().isLiquid) return; + if(!floor.asFloor().hasSurface()) return; int mx = x % secSize, my = y % secSize; int sclx = x / secSize, scly = y / secSize; diff --git a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java index a71568fa82..f9d33df5f0 100644 --- a/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java +++ b/core/src/mindustry/maps/planet/SerpuloPlanetGenerator.java @@ -236,7 +236,7 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ } pass((x, y) -> { - if(floor.asFloor().isLiquid) return; + if(!floor.asFloor().hasSurface()) return; int offsetX = x - 4, offsetY = y + 23; for(int i = ores.size - 1; i >= 0; i--){ @@ -292,7 +292,7 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{ } } - if(rand.chance(0.01) && !floor.asFloor().isLiquid && block == Blocks.air){ + if(rand.chance(0.01) && floor.asFloor().hasSurface() && block == Blocks.air){ block = dec.get(floor, floor.asFloor().decoration); } } diff --git a/core/src/mindustry/world/blocks/ConstructBlock.java b/core/src/mindustry/world/blocks/ConstructBlock.java index 7f50b81c01..8bd9a77c47 100644 --- a/core/src/mindustry/world/blocks/ConstructBlock.java +++ b/core/src/mindustry/world/blocks/ConstructBlock.java @@ -180,7 +180,7 @@ public class ConstructBlock extends Block{ public void onDestroyed(){ Fx.blockExplosionSmoke.at(tile); - if(!tile.floor().solid && !tile.floor().isLiquid){ + if(!tile.floor().solid && tile.floor().hasSurface()){ Effect.rubble(x, y, size); } } diff --git a/core/src/mindustry/world/blocks/environment/Floor.java b/core/src/mindustry/world/blocks/environment/Floor.java index a62542f5da..a70056717a 100644 --- a/core/src/mindustry/world/blocks/environment/Floor.java +++ b/core/src/mindustry/world/blocks/environment/Floor.java @@ -166,6 +166,11 @@ public class Floor extends Block{ return new TextureRegion[]{Core.atlas.find(Core.atlas.has(name) ? name : name + "1")}; } + /** @return whether this floor has a valid surface on which to place things, e.g. scorch marks. */ + public boolean hasSurface(){ + return !isLiquid && !solid; + } + public boolean isDeep(){ return drownTime > 0; }