Engine api

This commit is contained in:
Daniel Mills 2020-10-29 05:25:50 -04:00
parent f2b44d8f99
commit f79a3d15d1
5 changed files with 147 additions and 0 deletions

View File

@ -0,0 +1,37 @@
package com.volmit.iris.gen.v2.scaffold.engine;
import com.volmit.iris.gen.v2.scaffold.parallax.ParallaxAccess;
import com.volmit.iris.manager.IrisDataManager;
import com.volmit.iris.object.IrisDimension;
import org.bukkit.World;
public interface Engine
{
public void setParallelism(int parallelism);
public int getParallelism();
public EngineTarget getTarget();
public EngineFramework getFramework();
public default IrisDataManager getData()
{
return getTarget().getData();
}
public default World getWorld()
{
return getTarget().getWorld();
}
public default IrisDimension getDimension()
{
return getTarget().getDimension();
}
public default ParallaxAccess getParallax()
{
return getTarget().getParallaxWorld();
}
}

View File

@ -0,0 +1,54 @@
package com.volmit.iris.gen.v2.scaffold.engine;
import com.volmit.iris.gen.v2.generator.IrisComplex;
import com.volmit.iris.gen.v2.scaffold.hunk.Hunk;
import com.volmit.iris.gen.v2.scaffold.parallax.ParallaxAccess;
import com.volmit.iris.manager.IrisDataManager;
import com.volmit.iris.object.IrisDimension;
public interface EngineActuator<O>
{
public Engine getEngine();
public default IrisDataManager getData()
{
return getEngine().getData();
}
public default ParallaxAccess getParallax()
{
return getEngine().getParallax();
}
public default EngineTarget getTarget()
{
return getEngine().getTarget();
}
public default IrisDimension getDimension()
{
return getEngine().getDimension();
}
public default long getSeed()
{
return getTarget().getWorld().getSeed();
}
public default EngineFramework getFramework()
{
return getEngine().getFramework();
}
public default int getParallelism()
{
return getEngine().getParallelism();
}
public default IrisComplex getComplex()
{
return getFramework().getComplex();
}
public void actuate(int x, int z, Hunk<O> output);
}

View File

@ -0,0 +1,11 @@
package com.volmit.iris.gen.v2.scaffold.engine;
import lombok.AllArgsConstructor;
import lombok.Getter;
@AllArgsConstructor
public abstract class EngineAssignedActuator<T> implements EngineActuator<T>
{
@Getter
private final Engine engine;
}

View File

@ -0,0 +1,19 @@
package com.volmit.iris.gen.v2.scaffold.engine;
import com.volmit.iris.gen.v2.generator.IrisComplex;
import com.volmit.iris.gen.v2.generator.IrisEngine;
import org.bukkit.block.Biome;
import org.bukkit.block.data.BlockData;
public interface EngineFramework
{
public IrisEngine getEngine();
public IrisComplex getComplex();
public EngineActuator<BlockData> getTerrainActuator();
public EngineActuator<BlockData> getDecorantActuator();
public EngineActuator<Biome> getBiomeActuator();
}

View File

@ -0,0 +1,26 @@
package com.volmit.iris.gen.v2.scaffold.engine;
import com.volmit.iris.gen.v2.scaffold.parallax.ParallaxWorld;
import com.volmit.iris.manager.IrisDataManager;
import com.volmit.iris.object.IrisDimension;
import lombok.Data;
import org.bukkit.World;
import java.io.File;
@Data
public class EngineTarget
{
private final IrisDimension dimension;
private final World world;
private final IrisDataManager data;
private final ParallaxWorld parallaxWorld;
public EngineTarget(World world, IrisDimension dimension, IrisDataManager data)
{
this.world = world;
this.dimension = dimension;
this.data = data;
this.parallaxWorld = new ParallaxWorld(256, new File(world.getWorldFolder(), "iris/" + dimension.getLoadKey() + "/parallax"));
}
}