70 lines
1.4 KiB
JavaScript
70 lines
1.4 KiB
JavaScript
RMS.LoadLibrary("rmgen");
|
|
|
|
const BUILDING_ANGlE = -PI/4;
|
|
|
|
// initialize map
|
|
|
|
log("Initializing map...");
|
|
|
|
InitMap();
|
|
|
|
var numPlayers = getNumPlayers();
|
|
var mapSize = getMapSize();
|
|
|
|
// create tile classes
|
|
|
|
var clPlayer = createTileClass();
|
|
var clPath = createTileClass();
|
|
var clHill = createTileClass();
|
|
var clForest = createTileClass();
|
|
var clWater = createTileClass();
|
|
var clRock = createTileClass();
|
|
var clFood = createTileClass();
|
|
var clBaseResource = createTileClass();
|
|
|
|
// randomize player order
|
|
var playerIDs = [];
|
|
for (var i = 0; i < numPlayers; i++)
|
|
{
|
|
playerIDs.push(i+1);
|
|
}
|
|
playerIDs = sortPlayers(playerIDs);
|
|
|
|
// place players
|
|
|
|
var playerX = new Array(numPlayers);
|
|
var playerZ = new Array(numPlayers);
|
|
var playerAngle = new Array(numPlayers);
|
|
|
|
var startAngle = randFloat() * 2 * PI;
|
|
for (var i=0; i < numPlayers; i++)
|
|
{
|
|
playerAngle[i] = startAngle + i*2*PI/numPlayers;
|
|
playerX[i] = 0.5 + 0.39*cos(playerAngle[i]);
|
|
playerZ[i] = 0.5 + 0.39*sin(playerAngle[i]);
|
|
}
|
|
|
|
for (var i=0; i < numPlayers; i++)
|
|
{
|
|
var id = playerIDs[i];
|
|
log("Creating base for player " + id + "...");
|
|
|
|
// get the x and z in tiles
|
|
var fx = fractionToTiles(playerX[i]);
|
|
var fz = fractionToTiles(playerZ[i]);
|
|
var ix = round(fx);
|
|
var iz = round(fz);
|
|
|
|
// get civ specific starting entities
|
|
var civEntities = getStartingEntities(id-1);
|
|
|
|
// create starting units
|
|
createStartingPlayerEntities(fx, fz, id, civEntities, BUILDING_ANGlE)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Export map data
|
|
ExportMap();
|