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:
historic_bruno 2011-03-22 08:19:19 +00:00
parent 3050551eae
commit 5565b9e898
8 changed files with 148 additions and 31 deletions

View File

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

View File

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

View File

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

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

View File

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

View File

@ -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],

View File

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

View File

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