Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ FindWaterfalls()

void Terraria.WaterfallManager.FindWaterfalls ( bool forced = false)
inline

Definition at line 95 of file WaterfallManager.cs.

96 {
98 if (findWaterfallCount < 30 && !forced)
99 {
100 return;
101 }
103 waterfallDist = (int)(75f * Main.gfxQuality) + 25;
104 qualityMax = (int)((float)maxWaterfallCount * Main.gfxQuality);
105 currentMax = 0;
106 int num = (int)(Main.screenPosition.X / 16f - 1f);
107 int num2 = (int)((Main.screenPosition.X + (float)Main.screenWidth) / 16f) + 2;
108 int num3 = (int)(Main.screenPosition.Y / 16f - 1f);
109 int num4 = (int)((Main.screenPosition.Y + (float)Main.screenHeight) / 16f) + 2;
110 num -= waterfallDist;
111 num2 += waterfallDist;
112 num3 -= waterfallDist;
113 num4 += 20;
114 if (num < 0)
115 {
116 num = 0;
117 }
118 if (num2 > Main.maxTilesX)
119 {
120 num2 = Main.maxTilesX;
121 }
122 if (num3 < 0)
123 {
124 num3 = 0;
125 }
126 if (num4 > Main.maxTilesY)
127 {
128 num4 = Main.maxTilesY;
129 }
130 for (int i = num; i < num2; i++)
131 {
132 for (int j = num3; j < num4; j++)
133 {
134 Tile tile = Main.tile[i, j];
135 if (tile == null)
136 {
137 tile = new Tile();
138 Main.tile[i, j] = tile;
139 }
140 if (!tile.active())
141 {
142 continue;
143 }
144 if (tile.halfBrick())
145 {
146 Tile tile2 = Main.tile[i, j - 1];
147 if (tile2 == null)
148 {
149 tile2 = new Tile();
150 Main.tile[i, j - 1] = tile2;
151 }
152 if (tile2.liquid < 16 || WorldGen.SolidTile(tile2))
153 {
154 Tile tile3 = Main.tile[i - 1, j];
155 if (tile3 == null)
156 {
157 tile3 = new Tile();
158 Main.tile[i - 1, j] = tile3;
159 }
160 Tile tile4 = Main.tile[i + 1, j];
161 if (tile4 == null)
162 {
163 tile4 = new Tile();
164 Main.tile[i + 1, j] = tile4;
165 }
166 if ((tile3.liquid > 160 || tile4.liquid > 160) && ((tile3.liquid == 0 && !WorldGen.SolidTile(tile3) && tile3.slope() == 0) || (tile4.liquid == 0 && !WorldGen.SolidTile(tile4) && tile4.slope() == 0)) && currentMax < qualityMax)
167 {
169 if (tile2.lava() || tile4.lava() || tile3.lava())
170 {
172 }
173 else if (tile2.honey() || tile4.honey() || tile3.honey())
174 {
176 }
177 else if (tile2.shimmer() || tile4.shimmer() || tile3.shimmer())
178 {
180 }
181 else
182 {
184 }
187 currentMax++;
188 }
189 }
190 }
191 if (tile.type == 196)
192 {
193 Tile tile5 = Main.tile[i, j + 1];
194 if (tile5 == null)
195 {
196 tile5 = new Tile();
197 Main.tile[i, j + 1] = tile5;
198 }
199 if (!WorldGen.SolidTile(tile5) && tile5.slope() == 0 && currentMax < qualityMax)
200 {
203 waterfalls[currentMax].y = j + 1;
204 currentMax++;
205 }
206 }
207 if (tile.type == 460)
208 {
209 Tile tile6 = Main.tile[i, j + 1];
210 if (tile6 == null)
211 {
212 tile6 = new Tile();
213 Main.tile[i, j + 1] = tile6;
214 }
215 if (!WorldGen.SolidTile(tile6) && tile6.slope() == 0 && currentMax < qualityMax)
216 {
219 waterfalls[currentMax].y = j + 1;
220 currentMax++;
221 }
222 }
223 }
224 }
225 }

References Terraria.Tile.active(), Terraria.WaterfallManager.currentMax, Terraria.WaterfallManager.findWaterfallCount, Terraria.Main.gfxQuality, Terraria.Tile.halfBrick(), Terraria.Tile.honey(), Terraria.Tile.lava(), Terraria.Tile.liquid, Terraria.Main.maxTilesX, Terraria.Main.maxTilesY, Terraria.WaterfallManager.maxWaterfallCount, Terraria.WaterfallManager.qualityMax, Terraria.Main.screenHeight, Terraria.Main.screenPosition, Terraria.Main.screenWidth, Terraria.Tile.shimmer(), Terraria.Tile.slope(), Terraria.WorldGen.SolidTile(), Terraria.Main.tile, Terraria.Tile.type, Terraria.WaterfallManager.WaterfallData.type, Terraria.WaterfallManager.waterfallDist, Terraria.WaterfallManager.waterfalls, Terraria.WaterfallManager.WaterfallData.x, and Terraria.WaterfallManager.WaterfallData.y.

Referenced by Terraria.Main.DoDraw(), and Terraria.Main.DrawCapture().