1using System.Collections.Generic;
30 skipWater = zp.noWater || (bp.tileCenter !=
null && (bp.tileCenter.IsNeighborRoad ||
bp.
tileCenter.isRoad));
31 for (
int i = 0; i < 100; i++)
33 seed = (map.seed = bp.genSetting.seed + i);
43 for (
int j = 0; j <
Size; j++)
45 for (
int k = 0; k <
Size; k++)
84 map.config.idBiome =
"Underground";
89 map.config.idBiome =
"Sky";
91 for (
int i = 0; i <
Size; i++)
93 for (
int j = 0; j <
Size; j++)
106 for (
int k = 0; k <
Size; k++)
108 for (
int l = 0; l <
Size; l++)
118 BaseMapGen.err =
"Too many water";
129 for (
int m = 0; m <
Size; m++)
131 for (
int n = 0; n <
Size; n++)
141 else if (base.extraBiome &&
heights3[m, n] != 0f)
152 for (
int num2 = 0; num2 <
Size; num2++)
154 for (
int num3 = 0; num3 <
Size; num3++)
168 for (
int num5 = 0; num5 <
Size; num5++)
174 for (
int num6 = 0; num6 <
Size; num6++)
179 if (!flag || row.
alias ==
"block_ice")
190 for (
int num7 =
Size / 2 - 4; num7 <
Size / 2 + 4; num7++)
192 for (
int num8 =
Size / 2 - 4; num8 <
Size / 2 + 4; num8++)
203 for (
int num9 = 0; num9 <
Size; num9++)
205 for (
int num10 = 0; num10 <
Size; num10++)
216 for (
int num11 = 0; num11 <
Size; num11++)
218 for (
int num12 = 0; num12 <
Size; num12++)
220 int num13 = (int)
heights1[num11, num12];
242 if ((
bool)biomeProfile)
245 for (
int num14 = num12 - 2; num14 < num12 + 3; num14++)
247 for (
int num15 = num11 - 2; num15 < num11 + 3; num15++)
249 if (num14 >= 0 && num15 >= 0 && num15 <
Size && num14 <
Size &&
waters[num15, num14] <= 0f)
260 SetFloor(num11, num12, idMat, (
waters[num11, num12] < 5f) ? 44 : 43);
283 for (
int num16 = 0; num16 <
Size; num16++)
285 for (
int num17 = 0; num17 <
Size; num17++)
293 for (
int num18 = num16 - 1; num18 < num16 + 2; num18++)
295 if (num18 < 0 || num18 >=
Size)
299 for (
int num19 = num17 - 1; num19 < num17 + 2; num19++)
301 if (num19 >= 0 && num19 <
Size && (num18 != num16 || num19 != num17) &&
map.
cells[num18, num19].
IsTopWater)
323 for (
int num20 = num16 - extraShores; num20 < num16 + extraShores + 1; num20++)
325 if (num20 < 0 || num20 >=
Size)
329 for (
int num21 = num17 - extraShores; num21 < num17 + extraShores + 1; num21++)
350 seaDir = (thisInfo.sea ? (1 +
EClass.
rnd(4)) : 0);
355 EClass._map.config.seaDir = seaDir;
357 void _MakeNeighbor(
EloMap.
TileInfo info,
int _s,
Point p,
int vx,
int vz,
int _seaDir1,
int _seaDir2)
368 num += ((
EClass.
rnd(2) == 0) ? 1 : (-1));
369 num = Mathf.
Clamp(num, _s - 3, _s + 3);
372 for (
int i = 0; i < num; i++)
376 point.x = p.x + i * vx;
380 point.z = p.z + i * vz;
390 SetFloor(point.
x, point.
z, 66, (i >= num - 3) ? 44 : 43);
443 for (
int i = -
Size / 2; i <
Size / 2; i++)
497 void _MakeRoad(
int vx,
int vz)
504 for (
int i = -1; i < 2; i++)
508 point2.z = point.z + i;
512 point2.x = point.x + i;
525 point.x += ((vx == 0) ? (
EClass.
rnd(3) - 1) : 0);
526 point.z += ((vz == 0) ? (
EClass.
rnd(3) - 1) : 0);
537 for (
int num =
Size - 1; num > 0; num--)
539 for (
int i = 0; i <
Size - 1; i++)
541 Cell cell = cells[num, i];
543 Cell cell2 = cells[num - 1, i];
544 Cell cell3 = cells[num, i + 1];
568 cell2.height = (byte)(b - 2);
572 cell3.height = (byte)(b - 2);
580 cell2.height = (cell3.height = b);
584 cell.height = (cell2.height = cell3.
height);
591 cell2.height = (cell3.height = b);
602 cell2.height = (cell3.height = b);
615 for (
int num2 =
Size - 1; num2 > 0; num2--)
617 for (
int j = 0; j <
Size - 1; j++)
619 byte b2 = cells[num2, j].
height;
620 Cell cell4 = cells[num2 - 1, j];
621 Cell cell5 = cells[num2, j + 1];
626 cell4.height = (byte)(b2 - 2);
630 cell5.height = (byte)(b2 - 2);
640 for (
int i = 0; i < 100; i++)
644 for (
int j = 0; j < 1000; j++)
652 for (
int k = 0; k < 1000; k++)
673 List<Point> list =
new List<Point>();
675 for (
int i = 0; i < num; i++)
678 point.x = p1.x + (p2.x - p1.
x) * i / num;
679 point.z = p1.z + (p2.z - p1.
z) * i / num;
682 for (
int j = 0; j < num; j++)
684 Point point2 = list[j];
695 if (p1.
x != point2.
x)
697 p1.x += ((p1.x <= point2.
x) ? 1 : (-1));
699 else if (p1.
z != point2.
z)
701 p1.z += ((p1.z <= point2.
z) ? 1 : (-1));
704 else if (p1.
z != point2.
z)
706 p1.z += ((p1.z <= point2.
z) ? 1 : (-1));
708 else if (p1.
x != point2.
x)
710 p1.x += ((p1.x <= point2.
x) ? 1 : (-1));
740 for (
int i = 0; i <
Size; i++)
742 for (
int j = 0; j <
Size; j++)
761 if (
zp.name ==
"R_Plain")
767 int id = ((EClass.rnd(3) == 0) ? 108 : 105);
768 foreach (Point point2 in r.points)
770 map.SetObj(point2.x, point2.z, id);
772 if (EClass.rnd(6) == 0)
776 point2.growth.SetStage(num);
784 for (
int k = 0; k < array.Length; k++)
795 Debug.Log(zp.name +
"/" + variation.name);
void SetSize(int size, int _poiSize)
BiomeProfile[] biomeProfiles
MapGenVariation variation
void Populate(Point point, bool interior=false)
SourceMaterial.Row MatFloor
static Crawler Create(string id)
bool CrawlUntil(Map map, Func< Point > onStart, int tries, Func< Result, bool > canComplete, Action onFail=null)
static SourceManager sources
static GameSetting setting
void SetBlock(BiomeProfile.Tile t, int x, int z, int idMat=-1)
void SetFloor(BiomeProfile.Tile t, int x, int z)
bool TryMakeRiver(Point p1, Point p2)
override void GenerateTerrain()
void ModifyHeight(Map _map)
override bool OnGenerateTerrain()
Point GetRandomPoint(Point center, int radius, int tries=100, bool mustBeWalkable=true, bool requireLos=true)
new Point GetRandomEdge(int r=3)
void QuickRefreshTile(int x, int z)
void CreateNew(int size, bool setReference=true)
Point Set(int _x, int _z)
bool Equals(int _x, int _z)
Point Clamp(bool useBounds=false)
static void SetSeed(int a=-1)
SourceMaterial.Row DefaultMaterial
EloMap.TileInfo tileCenter
EloMap.TileInfo[,] surrounding