mirror of
https://github.com/Anuken/Mindustry.git
synced 2025-12-06 02:40:23 -08:00
206 lines
7.2 KiB
Java
206 lines
7.2 KiB
Java
package mindustry.content;
|
|
|
|
import arc.func.*;
|
|
import arc.graphics.*;
|
|
import arc.math.*;
|
|
import arc.math.geom.*;
|
|
import arc.struct.*;
|
|
import arc.util.*;
|
|
import mindustry.game.*;
|
|
import mindustry.graphics.*;
|
|
import mindustry.graphics.g3d.*;
|
|
import mindustry.graphics.g3d.PlanetGrid.*;
|
|
import mindustry.maps.planet.*;
|
|
import mindustry.type.*;
|
|
import mindustry.world.*;
|
|
import mindustry.world.meta.*;
|
|
|
|
public class Planets{
|
|
public static Planet
|
|
sun,
|
|
erekir,
|
|
tantros,
|
|
serpulo,
|
|
gier,
|
|
notva,
|
|
verilus;
|
|
|
|
public static void load(){
|
|
sun = new Planet("sun", null, 4f){{
|
|
bloom = true;
|
|
accessible = false;
|
|
|
|
meshLoader = () -> new SunMesh(
|
|
this, 4,
|
|
5, 0.3, 1.7, 1.2, 1,
|
|
1.1f,
|
|
Color.valueOf("ff7a38"),
|
|
Color.valueOf("ff9638"),
|
|
Color.valueOf("ffc64c"),
|
|
Color.valueOf("ffc64c"),
|
|
Color.valueOf("ffe371"),
|
|
Color.valueOf("f4ee8e")
|
|
);
|
|
}};
|
|
|
|
erekir = new Planet("erekir", sun, 1f, 2){{
|
|
generator = new ErekirPlanetGenerator();
|
|
meshLoader = () -> new HexMesh(this, 5);
|
|
cloudMeshLoader = () -> new MultiMesh(
|
|
new HexSkyMesh(this, 2, 0.15f, 0.14f, 5, Color.valueOf("eba768").a(0.75f), 2, 0.42f, 1f, 0.43f),
|
|
new HexSkyMesh(this, 3, 0.6f, 0.15f, 5, Color.valueOf("eea293").a(0.75f), 2, 0.42f, 1.2f, 0.45f)
|
|
);
|
|
alwaysUnlocked = true;
|
|
landCloudColor = Color.valueOf("ed6542");
|
|
atmosphereColor = Color.valueOf("f07218");
|
|
defaultEnv = Env.scorching | Env.terrestrial;
|
|
startSector = 10;
|
|
atmosphereRadIn = 0.02f;
|
|
atmosphereRadOut = 0.3f;
|
|
tidalLock = true;
|
|
orbitSpacing = 2f;
|
|
totalRadius += 2.6f;
|
|
lightSrcTo = 0.5f;
|
|
lightDstFrom = 0.2f;
|
|
clearSectorOnLose = true;
|
|
defaultCore = Blocks.coreBastion;
|
|
iconColor = Color.valueOf("ff9266");
|
|
enemyBuildSpeedMultiplier = 0.4f;
|
|
|
|
//TODO disallowed for now
|
|
allowLaunchToNumbered = false;
|
|
|
|
//TODO SHOULD there be lighting?
|
|
updateLighting = false;
|
|
|
|
defaultAttributes.set(Attribute.heat, 0.8f);
|
|
|
|
ruleSetter = r -> {
|
|
r.waveTeam = Team.malis;
|
|
r.placeRangeCheck = false;
|
|
r.showSpawns = true;
|
|
r.fog = true;
|
|
r.staticFog = true;
|
|
r.lighting = false;
|
|
r.coreDestroyClear = true;
|
|
r.onlyDepositCore = true;
|
|
};
|
|
campaignRuleDefaults.fog = true;
|
|
campaignRuleDefaults.showSpawns = true;
|
|
|
|
unlockedOnLand.add(Blocks.coreBastion);
|
|
}};
|
|
|
|
//TODO names
|
|
gier = makeAsteroid("gier", erekir, Blocks.ferricStoneWall, Blocks.carbonWall, 0.4f, 7, 1f, gen -> {
|
|
gen.min = 25;
|
|
gen.max = 35;
|
|
gen.carbonChance = 0.6f;
|
|
gen.iceChance = 0f;
|
|
gen.berylChance = 0.1f;
|
|
});
|
|
|
|
notva = makeAsteroid("notva", sun, Blocks.ferricStoneWall, Blocks.beryllicStoneWall, 0.55f, 9, 1.3f, gen -> {
|
|
gen.berylChance = 0.8f;
|
|
gen.iceChance = 0f;
|
|
gen.carbonChance = 0.01f;
|
|
gen.max += 2;
|
|
});
|
|
|
|
tantros = new Planet("tantros", sun, 1f, 2){{
|
|
generator = new TantrosPlanetGenerator();
|
|
meshLoader = () -> new HexMesh(this, 4);
|
|
accessible = false;
|
|
visible = false;
|
|
atmosphereColor = Color.valueOf("3db899");
|
|
iconColor = Color.valueOf("597be3");
|
|
startSector = 10;
|
|
atmosphereRadIn = -0.01f;
|
|
atmosphereRadOut = 0.3f;
|
|
defaultEnv = Env.underwater | Env.terrestrial;
|
|
ruleSetter = r -> {
|
|
|
|
};
|
|
}};
|
|
|
|
serpulo = new Planet("serpulo", sun, 1f, 3){{
|
|
generator = new SerpuloPlanetGenerator();
|
|
meshLoader = () -> new HexMesh(this, 6);
|
|
cloudMeshLoader = () -> new MultiMesh(
|
|
new HexSkyMesh(this, 11, 0.15f, 0.13f, 5, new Color().set(Pal.spore).mul(0.9f).a(0.75f), 2, 0.45f, 0.9f, 0.38f),
|
|
new HexSkyMesh(this, 1, 0.6f, 0.16f, 5, Color.white.cpy().lerp(Pal.spore, 0.55f).a(0.75f), 2, 0.45f, 1f, 0.41f)
|
|
);
|
|
|
|
launchCapacityMultiplier = 0.5f;
|
|
sectorSeed = 2;
|
|
allowWaves = true;
|
|
allowWaveSimulation = true;
|
|
allowSectorInvasion = true;
|
|
allowLaunchSchematics = true;
|
|
enemyCoreSpawnReplace = true;
|
|
allowLaunchLoadout = true;
|
|
//doesn't play well with configs
|
|
prebuildBase = false;
|
|
ruleSetter = r -> {
|
|
r.waveTeam = Team.crux;
|
|
r.placeRangeCheck = false;
|
|
r.showSpawns = false;
|
|
};
|
|
iconColor = Color.valueOf("7d4dff");
|
|
atmosphereColor = Color.valueOf("3c1b8f");
|
|
atmosphereRadIn = 0.02f;
|
|
atmosphereRadOut = 0.3f;
|
|
startSector = 15;
|
|
alwaysUnlocked = true;
|
|
landCloudColor = Pal.spore.cpy().a(0.5f);
|
|
}};
|
|
|
|
verilus = makeAsteroid("verlius", sun, Blocks.stoneWall, Blocks.iceWall, 0.5f, 12, 2f, gen -> {
|
|
gen.berylChance = 0f;
|
|
gen.iceChance = 0.6f;
|
|
gen.carbonChance = 0.1f;
|
|
gen.ferricChance = 0f;
|
|
});
|
|
}
|
|
|
|
private static Planet makeAsteroid(String name, Planet parent, Block base, Block tint, float tintThresh, int pieces, float scale, Cons<AsteroidGenerator> cgen){
|
|
return new Planet(name, parent, 0.12f){{
|
|
hasAtmosphere = false;
|
|
updateLighting = false;
|
|
sectors.add(new Sector(this, Ptile.empty));
|
|
camRadius = 0.68f * scale;
|
|
minZoom = 0.6f;
|
|
drawOrbit = false;
|
|
accessible = false;
|
|
clipRadius = 2f;
|
|
defaultEnv = Env.space;
|
|
icon = "commandRally";
|
|
generator = new AsteroidGenerator();
|
|
cgen.get((AsteroidGenerator)generator);
|
|
|
|
meshLoader = () -> {
|
|
iconColor = tint.mapColor;
|
|
Color tinted = tint.mapColor.cpy().a(1f - tint.mapColor.a);
|
|
Seq<GenericMesh> meshes = new Seq<>();
|
|
Color color = base.mapColor;
|
|
Rand rand = new Rand(id + 2);
|
|
|
|
meshes.add(new NoiseMesh(
|
|
this, 0, 2, radius, 2, 0.55f, 0.45f, 14f,
|
|
color, tinted, 3, 0.6f, 0.38f, tintThresh
|
|
));
|
|
|
|
for(int j = 0; j < pieces; j++){
|
|
meshes.add(new MatMesh(
|
|
new NoiseMesh(this, j + 1, 1, 0.022f + rand.random(0.039f) * scale, 2, 0.6f, 0.38f, 20f,
|
|
color, tinted, 3, 0.6f, 0.38f, tintThresh),
|
|
new Mat3D().setToTranslation(Tmp.v31.setToRandomDirection(rand).setLength(rand.random(0.44f, 1.4f) * scale)))
|
|
);
|
|
}
|
|
|
|
return new MultiMesh(meshes.toArray(GenericMesh.class));
|
|
};
|
|
}};
|
|
}
|
|
|
|
}
|