Example #1
0
        private void AddMoisture(float[,] moistureData, Tile t, int radius)
        {
            int     startx = MathHelpers.Mod(t.X - radius, Width);
            int     endx   = MathHelpers.Mod(t.X + radius, Width);
            Vector2 center = new Vector2(t.X, t.Y);
            int     curr   = radius;

            while (curr > 0)
            {
                int x1 = MathHelpers.Mod(t.X - curr, Width);
                int x2 = MathHelpers.Mod(t.X + curr, Width);
                int y  = t.Y;

                AddMoisture(moistureData, mapData.Tiles[x1, y], 0.025f / (center - new Vector2(x1, y)).Magnitude);

                for (int i = 0; i < curr; i++)
                {
                    AddMoisture(moistureData, mapData.Tiles[x1, MathHelpers.Mod(y + i + 1, Height)], 0.025f / (center - new Vector2(x1, MathHelpers.Mod(y + i + 1, Height))).Magnitude);
                    AddMoisture(moistureData, mapData.Tiles[x1, MathHelpers.Mod(y - (i + 1), Height)], 0.025f / (center - new Vector2(x1, MathHelpers.Mod(y - (i + 1), Height))).Magnitude);

                    AddMoisture(moistureData, mapData.Tiles[x2, MathHelpers.Mod(y + i + 1, Height)], 0.025f / (center - new Vector2(x2, MathHelpers.Mod(y + i + 1, Height))).Magnitude);
                    AddMoisture(moistureData, mapData.Tiles[x2, MathHelpers.Mod(y - (i + 1), Height)], 0.025f / (center - new Vector2(x2, MathHelpers.Mod(y - (i + 1), Height))).Magnitude);
                }
                curr--;
            }
        }
Example #2
0
 private Tile GetBottom(Tile t)
 {
     return(mapData.Tiles[t.X, MathHelpers.Mod(t.Y + 1, Height)]);
 }
Example #3
0
 private Tile GetRight(Tile t)
 {
     return(mapData.Tiles[MathHelpers.Mod(t.X + 1, Width), t.Y]);
 }
Example #4
0
 private Tile GetTop(Tile t)
 {
     return(mapData.Tiles[t.X, MathHelpers.Mod(t.Y - 1, Height)]);
 }