From 440f58ad19a50386351cf7402c45a731964156f7 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 1 Mar 2022 15:26:44 -0500 Subject: [PATCH] Fixed FoW on campaign maps --- core/src/mindustry/core/World.java | 4 ++-- core/src/mindustry/graphics/BlockRenderer.java | 2 +- core/src/mindustry/io/SaveVersion.java | 9 +++++++-- .../mindustry/io/versions/LegacyRegionSaveVersion.java | 2 +- core/src/mindustry/maps/generators/FileMapGenerator.java | 7 ++++++- core/src/mindustry/type/Planet.java | 2 +- core/src/mindustry/world/WorldContext.java | 7 +++++++ 7 files changed, 25 insertions(+), 8 deletions(-) diff --git a/core/src/mindustry/core/World.java b/core/src/mindustry/core/World.java index 36757cdeb3..3eeff88e36 100644 --- a/core/src/mindustry/core/World.java +++ b/core/src/mindustry/core/World.java @@ -594,10 +594,10 @@ public class World{ } /** World context that applies filters after generation end. */ - private class FilterContext extends Context{ + public class FilterContext extends Context{ final Map map; - FilterContext(Map map){ + public FilterContext(Map map){ this.map = map; } diff --git a/core/src/mindustry/graphics/BlockRenderer.java b/core/src/mindustry/graphics/BlockRenderer.java index 9ebfd3ef83..489a2117ed 100644 --- a/core/src/mindustry/graphics/BlockRenderer.java +++ b/core/src/mindustry/graphics/BlockRenderer.java @@ -398,7 +398,7 @@ public class BlockRenderer{ boolean visible = (build == null || !build.inFogTo(pteam)); - //comment wasWasible part for hiding? + //comment wasVisible part for hiding? if(block != Blocks.air && (visible || build.wasVisible)){ block.drawBase(tile); Draw.reset(); diff --git a/core/src/mindustry/io/SaveVersion.java b/core/src/mindustry/io/SaveVersion.java index 835f56350f..72938000b9 100644 --- a/core/src/mindustry/io/SaveVersion.java +++ b/core/src/mindustry/io/SaveVersion.java @@ -67,7 +67,7 @@ public abstract class SaveVersion extends SaveFileReader{ @Override public void read(DataInputStream stream, CounterInputStream counter, WorldContext context) throws IOException{ - region("meta", stream, counter, this::readMeta); + region("meta", stream, counter, in -> readMeta(in, context)); region("content", stream, counter, this::readContentHeader); try{ @@ -143,7 +143,7 @@ public abstract class SaveVersion extends SaveFileReader{ ).merge(tags)); } - public void readMeta(DataInput stream) throws IOException{ + public void readMeta(DataInput stream, WorldContext context) throws IOException{ StringMap map = readStringMap(stream); state.wave = map.getInt("wave"); @@ -154,6 +154,11 @@ public abstract class SaveVersion extends SaveFileReader{ if(state.rules.spawns.isEmpty()) state.rules.spawns = waves.get(); lastReadBuild = map.getInt("build", -1); + state.rules.sector = context.getSector(); + if(state.rules.sector != null){ + state.rules.sector.planet.ruleSetter.get(state.rules); + } + if(!headless){ Tmp.v1.tryFromString(map.get("viewpos")); Core.camera.position.set(Tmp.v1); diff --git a/core/src/mindustry/io/versions/LegacyRegionSaveVersion.java b/core/src/mindustry/io/versions/LegacyRegionSaveVersion.java index 73b39f5347..a616d985f0 100644 --- a/core/src/mindustry/io/versions/LegacyRegionSaveVersion.java +++ b/core/src/mindustry/io/versions/LegacyRegionSaveVersion.java @@ -17,7 +17,7 @@ public class LegacyRegionSaveVersion extends SaveVersion{ @Override public void read(DataInputStream stream, CounterInputStream counter, WorldContext context) throws IOException{ - region("meta", stream, counter, this::readMeta); + region("meta", stream, counter, in -> readMeta(in, context)); region("content", stream, counter, this::readContentHeader); try{ diff --git a/core/src/mindustry/maps/generators/FileMapGenerator.java b/core/src/mindustry/maps/generators/FileMapGenerator.java index 4bcb35208a..039e87553b 100644 --- a/core/src/mindustry/maps/generators/FileMapGenerator.java +++ b/core/src/mindustry/maps/generators/FileMapGenerator.java @@ -37,7 +37,12 @@ public class FileMapGenerator implements WorldGenerator{ Sector sector = state.rules.sector; world.setGenerating(false); - SaveIO.load(map.file, world.filterContext(map)); + SaveIO.load(map.file, world.new FilterContext(map){ + @Override + public Sector getSector(){ + return sector; + } + }); world.setGenerating(true); //make sure sector is maintained - don't reset it after map load. diff --git a/core/src/mindustry/type/Planet.java b/core/src/mindustry/type/Planet.java index c6896544a4..5f8896d3ff 100644 --- a/core/src/mindustry/type/Planet.java +++ b/core/src/mindustry/type/Planet.java @@ -47,7 +47,7 @@ public class Planet extends UnlockableContent{ public boolean drawOrbit = true; /** Atmosphere radius adjustment parameters. */ public float atmosphereRadIn = 0, atmosphereRadOut = 0.3f; - /** Frustrum sphere clip radius. */ + /** Frustum sphere clip radius. */ public float clipRadius = -1f; /** Orbital radius around the sun. Do not change unless you know exactly what you are doing.*/ public float orbitRadius; diff --git a/core/src/mindustry/world/WorldContext.java b/core/src/mindustry/world/WorldContext.java index 498e4e587b..49d6ec9014 100644 --- a/core/src/mindustry/world/WorldContext.java +++ b/core/src/mindustry/world/WorldContext.java @@ -1,5 +1,8 @@ package mindustry.world; +import arc.util.*; +import mindustry.type.*; + public interface WorldContext{ /** Return a tile in the tile array.*/ @@ -23,4 +26,8 @@ public interface WorldContext{ /** Called when a building is finished reading. */ default void onReadBuilding(){} + default @Nullable Sector getSector(){ + return null; + } + }