Fixed FoW on campaign maps

This commit is contained in:
Anuken
2022-03-01 15:26:44 -05:00
parent f8851453ad
commit 440f58ad19
7 changed files with 25 additions and 8 deletions

View File

@@ -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;
}

View File

@@ -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();

View File

@@ -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);

View File

@@ -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{

View File

@@ -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.

View File

@@ -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;

View File

@@ -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;
}
}