Advertisement
Guest User

Untitled

a guest
Mar 21st, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.62 KB | None | 0 0
  1. void GenerateRiver()
  2.     {
  3.         // find start and end
  4.         // int randomX = (int)Random.Range(0, createTilesOnX-1);
  5.         // int randomZ = (int)Random.Range(0, createTilesOnZ-1);
  6.         // randomPos = ((int)Random.Range(0, createTilesOnX-1))* (createTilesOnZ -1) + ((int)Random.Range(0, createTilesOnZ - 1));
  7.         Debug.Log("River Init");
  8.         int startEdge = (int)Random.Range(0, 3);
  9.         int endEdge = 3 - ((int)Random.Range(0, 3));
  10.  
  11.         int startPos = findRandomEdgePos(startEdge);
  12.         int startZ = startPos % (yTiles - 1);
  13.         int startX = (startPos - startZ) / ((yTiles - 1));
  14.  
  15.         int endPos = findRandomEdgePos(endEdge);
  16.         int endZ = endPos % (yTiles - 1);
  17.         int endX = (endPos - startZ) / ((yTiles - 1));
  18.  
  19.         int curPos = startPos;
  20.         int curZ = startZ;
  21.         int curX = startX;
  22.  
  23.         int distZ = startZ - endZ;
  24.         int distX = startX - endX;
  25.         Debug.Log("Random End");
  26.         while (curPos != endPos)
  27.         {
  28.             Debug.Log("ich bin am leben");
  29.             int tempCurZ = curZ;
  30.             int tempCurX = curX;
  31.             //Decide wheter to move on X or Z
  32.             if (Random.Range(0, 1) > .5)
  33.             {
  34.                 // move Z
  35.                 if (distZ > 0)
  36.                     tempCurZ--;
  37.                 else
  38.                     tempCurZ++;
  39.             }
  40.             else
  41.             {
  42.                 // move Y
  43.                 if (distX > 0)
  44.                     tempCurX--;
  45.                 else
  46.                     tempCurX++;
  47.             }
  48.             //check if in bounds else revert changes
  49.             if (tempCurZ < yTiles && tempCurX < xTiles)
  50.             {
  51.                 curPos = curX * (yTiles - 1) + curZ;
  52.                 Tile curTile = gridTiles[curPos].GetComponent<Tile>();
  53.                 curTile.SetRiver();
  54.                 //gridTiles[curPos] set tile Type River
  55.             }
  56.         }
  57.     }
  58.  
  59.     int findRandomEdgePos(int ranSeed)
  60.     {
  61.         int edgePos;
  62.         if (ranSeed == 0)
  63.         {
  64.             // 0 upper Edge
  65.             edgePos = (int)Random.Range(0, yTiles - 1);
  66.         }
  67.         else if (ranSeed == 1)
  68.         {
  69.             // 1 left Edge
  70.             edgePos = (int)Random.Range(0, xTiles - 1) * (yTiles - 1);
  71.         }
  72.         else if (ranSeed == 2)
  73.         {
  74.             // 2 right Edge
  75.             edgePos = (int)Random.Range(0, xTiles - 1) * (yTiles - 1) + (yTiles - 1);
  76.         }
  77.         else
  78.         {
  79.             // 3 lower Edge
  80.             edgePos = (xTiles - 1) * (yTiles - 1) + (int)Random.Range(0, yTiles - 1);
  81.         }
  82.         return edgePos;
  83.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement