public void ConnectMountains(int targetX, int targetY) // simulerar en formel för en graf utifrån två punkter, skapar sedan ett berg i alla posiitioner i arrayen som grafen överlappar { for (float t = 0; t <= 1; t += 0.01f) // formeln utgår från ett värde t som går ett oändligt antal steg mellan 0 och 1, här är det hundra steg viilkket innebär att den kollar hundra positioner mellan de två bergen vilket är mer än tillräckligt { int xPos = Convert.ToInt32(targetX - (targetX * t - x * t)); // fancy matte som ger positionen på grafen utifrån de två punkterna(bergen) int yPos = Convert.ToInt32(targetY - (targetY * t - y * t)); if (tiles[xPos, yPos].GetBiomeType() != "Mountain") // ifall den positionen på grafen inte redan har ett berg skapas ett nytt { tiles[xPos, yPos] = new Mountain(xPos, yPos, 0, 0, 0, false, false); // båda boolsen är false vilket gör att de här bergen inte gör något när de skapas } } }
public override void Spread(int x, int y, int startX, int startY, int size) // samma som för forest förutom att nospread är borta för att bergen skulle få en mer kompakt känsla { x = Math.Min(Math.Abs(x), tiles.GetLength(0) - 1); y = Math.Min(Math.Abs(y), tiles.GetLength(1) - 1); Tile newTile = tiles[x, y]; if (newTile.GetBiomeType() != "mountain") { int xDif = startX - x; int yDif = startY - y; if (random.Next(size) > Math.Sqrt(xDif * xDif + yDif * yDif)) { newTile = new Mountain(x, y, startX, startY, size, false, true); } } }