forked from 0ad/0ad
Fixes bugs in Latium map script. Changes default environment settings for random maps, adds environment setters
This was SVN commit r9099.
This commit is contained in:
parent
3050551eae
commit
5565b9e898
@ -52,6 +52,7 @@ var clDirt = createTileClass();
|
||||
var clRock = createTileClass();
|
||||
var clFood = createTileClass();
|
||||
var clBaseResource = createTileClass();
|
||||
var clSettlement = createTileClass();
|
||||
|
||||
// place players
|
||||
|
||||
@ -275,6 +276,14 @@ createObjectGroups(
|
||||
3 * numPlayers, 100
|
||||
);
|
||||
|
||||
// create settlements
|
||||
log("Creating settlements...");
|
||||
group = new SimpleGroup([new SimpleObject("gaia/special_settlement", 1,1, 0,0)], true, clSettlement);
|
||||
createObjectGroups(group, 0,
|
||||
avoidClasses(clWater, 0, clForest, 0, clPlayer, 15, clHill, 0, clRock, 5, clSettlement, 35),
|
||||
2 * numPlayers, 50
|
||||
);
|
||||
|
||||
// create small decorative rocks
|
||||
log("Creating large decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
|
@ -1,6 +1,6 @@
|
||||
RMS.LoadLibrary("rmgen");
|
||||
|
||||
const WATER_WIDTH = 0.2;
|
||||
const WATER_WIDTH = 0.1;
|
||||
|
||||
// terrain textures
|
||||
const tOceanDepths = "medit_sea_depths";
|
||||
@ -9,10 +9,10 @@ const tOceanRockShallow = "medit_rocks_wet";
|
||||
const tOceanCoral = "medit_sea_coral_plants";
|
||||
const tBeachWet = "medit_sand_wet";
|
||||
const tBeachDry = "medit_sand";
|
||||
const tBeachGrass = "beach_medit_grass_50";
|
||||
const tBeachGrass = "medit_rocks_grass";
|
||||
const tBeachCliff = "cliff_medit_beach";
|
||||
const tGrassDry = ["medit_grass_field_brown", "medit_grass_field_dry", "medit_grass_field_b"];
|
||||
const tGrass = ["medit_grass_field", "medit_grass_field_a", "medit_grass_flowers"];
|
||||
const tGrass = ["medit_grass_field_dry", "medit_grass_field_brown", "medit_grass_field_b"];
|
||||
const tGrassLush = ["grass_temperate_dry_tufts", "medit_grass_flowers"];
|
||||
const tGrassShrubs = ["medit_grass_shrubs", "medit_grass_flowers"];
|
||||
const tGrassRock = ["medit_rocks_grass"];
|
||||
@ -21,7 +21,7 @@ const tDirtGrass = "medit_dirt_b";
|
||||
const tDirtCliff = "medit_cliff_italia";
|
||||
const tGrassCliff = "medit_cliff_italia_grass";
|
||||
const tCliff = ["medit_cliff_italia", "medit_cliff_italia", "medit_cliff_italia_grass"];
|
||||
const tForestFloor = "forestfloor_medit_dirt";
|
||||
const tForestFloor = "medit_grass_wild";
|
||||
|
||||
// gaia entities
|
||||
const oBeech = "gaia/flora_tree_euro_beech";
|
||||
@ -82,6 +82,7 @@ var clStone = createTileClass();
|
||||
var clFood = createTileClass();
|
||||
var clPlayer = createTileClass();
|
||||
var clBaseResource = createTileClass();
|
||||
var clSettlement = createTileClass();
|
||||
|
||||
// Place players
|
||||
|
||||
@ -431,6 +432,14 @@ for (var ix=0; ix<mapSize; ix++)
|
||||
}
|
||||
}
|
||||
|
||||
log("Placing settlements...");
|
||||
// create settlements
|
||||
group = new SimpleGroup([new SimpleObject("gaia/special_settlement", 1,1, 0,0)], true, clSettlement);
|
||||
createObjectGroups(group, 0,
|
||||
avoidClasses(clWater, 5, clForest, 4, clPlayer, 25, clCliff, 4, clSettlement, 35),
|
||||
2*numPlayers, 50
|
||||
);
|
||||
|
||||
log("Placing straggler trees...");
|
||||
// create straggler trees
|
||||
var trees = [oCarob, oBeech, oLombardyPoplar, oLombardyPoplar, oPine];
|
||||
@ -510,5 +519,13 @@ createObjectGroups(group, 0,
|
||||
1.5 * numPlayers, 100
|
||||
);
|
||||
|
||||
// Adjust environment
|
||||
setSkySet("sunny");
|
||||
setWaterMurkiness(0.626953);
|
||||
setWaterShininess(0.732422);
|
||||
setWaterTint(0, 0.501961, 0.501961);
|
||||
setWaterReflectionTint(0.313726, 0.376471, 0.521569);
|
||||
setWaterReflectionTintStrength(0.615234);
|
||||
|
||||
// Export map data
|
||||
ExportMap();
|
||||
|
@ -3,7 +3,7 @@
|
||||
"Name" : "Latium",
|
||||
"Script" : "latium.js",
|
||||
"Description" : "The Italian peninsula",
|
||||
"BaseTerrain" : ["medit_grass_field", "medit_grass_field_a", "medit_grass_flowers"],
|
||||
"BaseTerrain" : ["medit_grass_field_dry", "medit_grass_field_brown", "medit_grass_field_b"],
|
||||
"BaseHeight" : 0,
|
||||
"XXXXXX" : "Optionally define other things here, like we would for a scenario"
|
||||
}
|
||||
|
91
binaries/data/mods/public/maps/random/rmgen/environment.js
Normal file
91
binaries/data/mods/public/maps/random/rmgen/environment.js
Normal file
@ -0,0 +1,91 @@
|
||||
// Some functions to manipulate environment properties
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// Sky + lighting
|
||||
|
||||
// Set skyset
|
||||
function setSkySet(set)
|
||||
{
|
||||
g_Environment.SkySet = set;
|
||||
}
|
||||
|
||||
// Set sun colour RGB
|
||||
function setSunColour(r, g, b)
|
||||
{
|
||||
g_Environment.SunColour = { "r" : r, "g" : g, "b" : b};
|
||||
}
|
||||
|
||||
// Set sun elevation
|
||||
function setSunElevation(e)
|
||||
{
|
||||
g_Environment.SunElevation = e;
|
||||
}
|
||||
|
||||
// Set sun rotation
|
||||
function setSunRotation(r)
|
||||
{
|
||||
g_Environment.SunRotation = r;
|
||||
}
|
||||
|
||||
// Set terrain ambient colour RGB (0-1)
|
||||
function setTerrainAmbientColour(r, g, b)
|
||||
{
|
||||
g_Environment.TerrainAmbientColour = { "r" : r, "g" : g, "b" : b};
|
||||
}
|
||||
|
||||
// Set terrain ambient colour RGB (0-1)
|
||||
function setUnitsAmbientColour(r, g, b)
|
||||
{
|
||||
g_Environment.UnitsAmbientColour = { "r" : r, "g" : g, "b" : b};
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// Water
|
||||
|
||||
// Set water colour RGB (0,1)
|
||||
function setWaterColour(r, g, b)
|
||||
{
|
||||
g_Environment.Water.WaterBody.Colour = { "r" : r, "g" : g, "b" : b};
|
||||
}
|
||||
|
||||
// Set water height
|
||||
function setWaterHeight(h)
|
||||
{
|
||||
g_Environment.Water.WaterBody.Height = h;
|
||||
}
|
||||
|
||||
// Set water shininess
|
||||
function setWaterShininess(s)
|
||||
{
|
||||
g_Environment.Water.WaterBody.Shininess = s;
|
||||
}
|
||||
|
||||
// Set water waviness
|
||||
function setWaterWaviness(w)
|
||||
{
|
||||
g_Environment.Water.WaterBody.Waviness = w;
|
||||
}
|
||||
|
||||
// Set water murkiness
|
||||
function setWaterMurkiness(m)
|
||||
{
|
||||
g_Environment.Water.WaterBody.Murkiness = m;
|
||||
}
|
||||
|
||||
// Set water tint RGB (0,1)
|
||||
function setWaterTint(r, g, b)
|
||||
{
|
||||
g_Environment.Water.WaterBody.Tint = { "r" : r, "g" : g, "b" : b};
|
||||
}
|
||||
|
||||
// Set water reflection tint RGB (0,1)
|
||||
function setWaterReflectionTint(r, g, b)
|
||||
{
|
||||
g_Environment.Water.WaterBody.WaterReflectionTint = { "r" : r, "g" : g, "b" : b};
|
||||
}
|
||||
|
||||
// Set water reflection tint strength (0,1)
|
||||
function setWaterReflectionTintStrength(s)
|
||||
{
|
||||
g_Environment.Water.WaterBody.WaterReflectionTintStrength = s;
|
||||
}
|
@ -266,7 +266,7 @@ function getCivCode(player)
|
||||
|
||||
function getHeight(x, y)
|
||||
{
|
||||
g_Map.getHeight(x, y);
|
||||
return g_Map.getHeight(x, y);
|
||||
}
|
||||
|
||||
function setHeight(x, y, height)
|
||||
|
@ -31,7 +31,7 @@ function Map(size, baseHeight)
|
||||
this.height = new Array(mapSize);
|
||||
for (var i=0; i < mapSize; i++)
|
||||
{
|
||||
this.height[i] = new Array(mapSize);
|
||||
this.height[i] = new Float32Array(mapSize);
|
||||
for (var j=0; j < mapSize; j++)
|
||||
{ // Initialize height map to baseHeight
|
||||
this.height[i][j] = baseHeight;
|
||||
@ -224,8 +224,8 @@ Map.prototype.createTileClass = function()
|
||||
// Get height taking into account terrain curvature
|
||||
Map.prototype.getExactHeight = function(x, y)
|
||||
{
|
||||
var xi = min(floor(x), this.size);
|
||||
var yi = min(floor(y), this.size);
|
||||
var xi = min(Math.floor(x), this.size);
|
||||
var yi = min(Math.floor(y), this.size);
|
||||
var xf = x - xi;
|
||||
var yf = y - yi;
|
||||
|
||||
@ -280,7 +280,7 @@ Map.prototype.getMapData = function()
|
||||
{
|
||||
for (var y=0; y < mapSize; y++)
|
||||
{
|
||||
var intHeight = ((this.height[x][y] + SEA_LEVEL) * 256.0 / 0.35)|0; // floor
|
||||
var intHeight = Math.floor((this.height[x][y] + SEA_LEVEL) * 256.0 / 0.35);
|
||||
|
||||
if (intHeight > 65000)
|
||||
intHeight = 65000;
|
||||
@ -306,11 +306,11 @@ Map.prototype.getMapData = function()
|
||||
var patches = size/16;
|
||||
for (var x=0; x < size; x++)
|
||||
{
|
||||
var patchX = floor(x/16);
|
||||
var patchX = Math.floor(x/16);
|
||||
var offX = x%16;
|
||||
for (var y=0; y < size; y++)
|
||||
{
|
||||
var patchY = floor(y/16);
|
||||
var patchY = Math.floor(y/16);
|
||||
var offY = y%16;
|
||||
tiles[(patchY*patches + patchX)*256 + (offY*16 + offX)] =
|
||||
{ "texIdx1" : this.texture[x][y],
|
||||
|
@ -1,23 +1,23 @@
|
||||
var g_Map;
|
||||
|
||||
var g_Environment = {
|
||||
SkySet: "cirrus",
|
||||
SunColour: {r: 1.47461, g: 1.47461, b: 1.47461},
|
||||
SunElevation: 0.951868,
|
||||
SunRotation: -0.532844,
|
||||
TerrainAmbientColour: {r: 0.337255, g: 0.403922, b: 0.466667},
|
||||
SkySet: "default",
|
||||
SunColour: {r: 1.5, g: 1.5, b: 1.5},
|
||||
SunElevation: 0.785398,
|
||||
SunRotation: 5.49779,
|
||||
TerrainAmbientColour: {r: 0.313726, g: 0.376471, b: 0.521569},
|
||||
UnitsAmbientColour: {r: 0.501961, g: 0.501961, b: 0.501961},
|
||||
Water: {
|
||||
WaterBody: {
|
||||
Type: "default",
|
||||
Colour: {r: 0.294118, g: 0.34902, b: 0.694118},
|
||||
Height: 17.6262,
|
||||
Colour: {r: 0.3, g: 0.35, b: 0.7},
|
||||
Height: 5,
|
||||
Shininess: 150,
|
||||
Waviness: 8,
|
||||
Murkiness: 0.458008,
|
||||
Tint: {r: 0.447059, g: 0.411765, b: 0.321569},
|
||||
ReflectionTint: {r: 0.619608, g: 0.584314, b: 0.47451},
|
||||
ReflectionTintStrength: 0.298828
|
||||
Murkiness: 0.45,
|
||||
Tint: {r: 0.28, g: 0.3, b: 0.59},
|
||||
ReflectionTint: {r: 0.28, g: 0.3, b: 0.59},
|
||||
ReflectionTintStrength: 0.0
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -20,7 +20,7 @@ function modPos(num, m)
|
||||
|
||||
function Noise2D(freq)
|
||||
{
|
||||
freq = floor(freq);
|
||||
freq = Math.floor(freq);
|
||||
this.freq = freq;
|
||||
this.grads = new Array(freq);
|
||||
|
||||
@ -41,8 +41,8 @@ Noise2D.prototype.get = function(x, y)
|
||||
x *= this.freq;
|
||||
y *= this.freq;
|
||||
|
||||
var ix = modPos(floor(x), this.freq);
|
||||
var iy = modPos(floor(y), this.freq);
|
||||
var ix = modPos(Math.floor(x), this.freq);
|
||||
var iy = modPos(Math.floor(y), this.freq);
|
||||
|
||||
var fx = x - ix;
|
||||
var fy = y - iy;
|
||||
@ -68,8 +68,8 @@ Noise2D.prototype.get = function(x, y)
|
||||
|
||||
function Noise3D(freq, vfreq)
|
||||
{
|
||||
freq = floor(freq);
|
||||
vfreq = floor(vfreq);
|
||||
freq = Math.floor(freq);
|
||||
vfreq = Math.floor(vfreq);
|
||||
this.freq = freq;
|
||||
this.vfreq = vfreq;
|
||||
this.grads = new Array(freq);
|
||||
@ -103,9 +103,9 @@ Noise3D.prototype.get = function(x, y, z)
|
||||
y *= this.freq;
|
||||
z *= this.vfreq;
|
||||
|
||||
var ix =modPos(floor(x), this.freq);
|
||||
var iy = modPos(floor(y), this.freq);
|
||||
var iz = modPos(floor(z), this.vfreq);
|
||||
var ix =modPos(Math.floor(x), this.freq);
|
||||
var iy = modPos(Math.floor(y), this.freq);
|
||||
var iz = modPos(Math.floor(z), this.vfreq);
|
||||
|
||||
var fx = x - ix;
|
||||
var fy = y - iy;
|
||||
|
Loading…
Reference in New Issue
Block a user