Changeset View
Changeset View
Standalone View
Standalone View
ps/trunk/binaries/data/mods/public/maps/random/jebel_barkal.js
Show First 20 Lines • Show All 630 Lines • ▼ Show 20 Lines | |||||
var gridPointXCenter = Math.floor(gridPointsX / 2); | var gridPointXCenter = Math.floor(gridPointsX / 2); | ||||
var gridPointYCenter = Math.floor(gridPointsY / 2); | var gridPointYCenter = Math.floor(gridPointsY / 2); | ||||
// Maps from grid position to map position | // Maps from grid position to map position | ||||
var cityGridPosition = []; | var cityGridPosition = []; | ||||
var cityGridAngle = []; | var cityGridAngle = []; | ||||
for (let y = 0; y < gridPointsY; ++y) | for (let y = 0; y < gridPointsY; ++y) | ||||
[cityGridPosition[y], cityGridAngle[y]] = distributePointsOnCircularSegment( | [cityGridPosition[y], cityGridAngle[y]] = distributePointsOnCircularSegment( | ||||
gridPointsX, gridMaxAngle * gridPointsX / (gridPointsX - 1), gridStartAngle, gridRadius(y), gridCenter); | gridPointsX, gridMaxAngle, gridStartAngle, gridRadius(y), gridCenter); | ||||
g_Map.log("Marking city path crossings"); | g_Map.log("Marking city path crossings"); | ||||
for (let y in cityGridPosition) | for (let y in cityGridPosition) | ||||
for (let x in cityGridPosition[y]) | for (let x in cityGridPosition[y]) | ||||
{ | { | ||||
cityGridPosition[y][x].round(); | cityGridPosition[y][x].round(); | ||||
createArea( | createArea( | ||||
new DiskPlacer(pathWidth, cityGridPosition[y][x]), | new DiskPlacer(pathWidth, cityGridPosition[y][x]), | ||||
▲ Show 20 Lines • Show All 133 Lines • ▼ Show 20 Lines | createArea( | ||||
], | ], | ||||
avoidClasses(clCliff, 1)); | avoidClasses(clCliff, 1)); | ||||
createArea( | createArea( | ||||
new DiskPlacer(0, new Vector2D(-1, -1).add(ritualPosition)), | new DiskPlacer(0, new Vector2D(-1, -1).add(ritualPosition)), | ||||
new ElevationPainter(heightDesert + heightOffsetStatue)); | new ElevationPainter(heightDesert + heightOffsetStatue)); | ||||
g_Map.log("Placing healers at the ritual place"); | g_Map.log("Placing healers at the ritual place"); | ||||
var [healerPosition, healerAngle] = distributePointsOnCircularSegment(scaleByMapSize(2, 10), Math.PI, ritualAngle, scaleByMapSize(2, 3), ritualPosition); | var [healerPosition, healerAngle] = distributePointsOnCircularSegment( | ||||
scaleByMapSize(2, 10), Math.PI, ritualAngle, scaleByMapSize(2, 3), ritualPosition); | |||||
for (let i = 0; i < healerPosition.length; ++i) | for (let i = 0; i < healerPosition.length; ++i) | ||||
g_Map.placeEntityPassable(oKushHealer, 0, healerPosition[i], healerAngle[i] + Math.PI); | g_Map.placeEntityPassable(oKushHealer, 0, healerPosition[i], healerAngle[i] + Math.PI); | ||||
g_Map.log("Placing statues at the ritual place"); | g_Map.log("Placing statues at the ritual place"); | ||||
var [statuePosition, statueAngle] = distributePointsOnCircularSegment(scaleByMapSize(4, 8), Math.PI, ritualAngle, scaleByMapSize(3, 4), ritualPosition); | var [statuePosition, statueAngle] = distributePointsOnCircularSegment( | ||||
scaleByMapSize(4, 8), Math.PI, ritualAngle, scaleByMapSize(3, 4), ritualPosition); | |||||
for (let i = 0; i < statuePosition.length; ++i) | for (let i = 0; i < statuePosition.length; ++i) | ||||
g_Map.placeEntityPassable(pickRandom(aStatues), 0, statuePosition[i], statueAngle[i] + Math.PI); | g_Map.placeEntityPassable(pickRandom(aStatues), 0, statuePosition[i], statueAngle[i] + Math.PI); | ||||
g_Map.log("Placing palms at the ritual place"); | g_Map.log("Placing palms at the ritual place"); | ||||
var [palmPosition, palmAngle] = distributePointsOnCircularSegment(scaleByMapSize(6, 16), Math.PI, ritualAngle, scaleByMapSize(4, 5), ritualPosition); | var [palmPosition, palmAngle] = distributePointsOnCircularSegment( | ||||
scaleByMapSize(6, 16), Math.PI, ritualAngle, scaleByMapSize(4, 5), ritualPosition); | |||||
for (let i = 0; i < palmPosition.length; ++i) | for (let i = 0; i < palmPosition.length; ++i) | ||||
if (avoidClasses(clTemple, 1).allows(palmPosition[i])) | if (avoidClasses(clTemple, 1).allows(palmPosition[i])) | ||||
g_Map.placeEntityPassable(oPalmPath, 0, palmPosition[i], randomAngle()); | g_Map.placeEntityPassable(oPalmPath, 0, palmPosition[i], randomAngle()); | ||||
g_Map.log("Painting city paths"); | g_Map.log("Painting city paths"); | ||||
var areaPaths = createArea( | var areaPaths = createArea( | ||||
new MapBoundsPlacer(), | new MapBoundsPlacer(), | ||||
[ | [ | ||||
Show All 39 Lines | let entitiesWalls = placeCircularWall( | ||||
wallGridStartAngle, | wallGridStartAngle, | ||||
wallGridMaxAngleFront, | wallGridMaxAngleFront, | ||||
true, | true, | ||||
0, | 0, | ||||
0); | 0); | ||||
g_Map.log("Placing side and back walls"); | g_Map.log("Placing side and back walls"); | ||||
let wallGridRadiusBack = hillRadius - scaleByMapSize(15, 25); | let wallGridRadiusBack = hillRadius - scaleByMapSize(15, 25); | ||||
let wallGridMaxAngleBack = (gridMaxAngle + wallGridMaxAngleSummand) * gridPointsX / (gridPointsX - 1); | let wallGridMaxAngleBack = gridMaxAngle + wallGridMaxAngleSummand; | ||||
let wallGridPositionFront = distributePointsOnCircularSegment(gridPointsX, wallGridMaxAngleBack, wallGridStartAngle, wallGridRadiusFront, gridCenter)[0]; | let wallGridPositionFront = distributePointsOnCircularSegment(gridPointsX, wallGridMaxAngleBack, wallGridStartAngle, wallGridRadiusFront, gridCenter)[0]; | ||||
let wallGridPositionBack = distributePointsOnCircularSegment(gridPointsX, wallGridMaxAngleBack, wallGridStartAngle, wallGridRadiusBack, gridCenter)[0]; | let wallGridPositionBack = distributePointsOnCircularSegment(gridPointsX, wallGridMaxAngleBack, wallGridStartAngle, wallGridRadiusBack, gridCenter)[0]; | ||||
let wallGridPosition = [wallGridPositionFront[0], ...wallGridPositionBack, wallGridPositionFront[wallGridPositionFront.length - 1]]; | let wallGridPosition = [wallGridPositionFront[0], ...wallGridPositionBack, wallGridPositionFront[wallGridPositionFront.length - 1]]; | ||||
for (let x = 1; x < wallGridPosition.length; ++x) | for (let x = 1; x < wallGridPosition.length; ++x) | ||||
entitiesWalls = entitiesWalls.concat( | entitiesWalls = entitiesWalls.concat( | ||||
placeLinearWall( | placeLinearWall( | ||||
wallGridPosition[x - 1], | wallGridPosition[x - 1], | ||||
wallGridPosition[x], | wallGridPosition[x], | ||||
▲ Show 20 Lines • Show All 450 Lines • Show Last 20 Lines |
Wildfire Games · Phabricator