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

◆ ScanAndExportToMain()

void Terraria.SceneMetrics.ScanAndExportToMain ( SceneMetricsScanSettings settings)
inline

Definition at line 148 of file SceneMetrics.cs.

149 {
150 Reset();
151 int num = 0;
152 int num2 = 0;
153 int num3 = 0;
154 if (settings.ScanOreFinderData)
155 {
157 }
158 if (settings.BiomeScanCenterPositionInWorld.HasValue)
159 {
160 Point point = settings.BiomeScanCenterPositionInWorld.Value.ToTileCoordinates();
161 Rectangle tileRectangle = new Rectangle(point.X - Main.buffScanAreaWidth / 2, point.Y - Main.buffScanAreaHeight / 2, Main.buffScanAreaWidth, Main.buffScanAreaHeight);
163 for (int i = tileRectangle.Left; i < tileRectangle.Right; i++)
164 {
165 for (int j = tileRectangle.Top; j < tileRectangle.Bottom; j++)
166 {
167 if (!tileRectangle.Contains(i, j))
168 {
169 continue;
170 }
171 Tile tile = Main.tile[i, j];
172 if (tile == null)
173 {
174 continue;
175 }
176 if (!tile.active())
177 {
178 if (tile.liquid > 0)
179 {
180 _liquidCounts[tile.liquidType()]++;
181 }
182 continue;
183 }
185 if (!TileID.Sets.isDesertBiomeSand[tile.type] || !WorldGen.oceanDepths(i, j))
186 {
187 _tileCounts[tile.type]++;
188 }
189 if (tile.type == 215 && tile.frameY < 36)
190 {
191 HasCampfire = true;
192 }
193 if (tile.type == 49 && tile.frameX < 18)
194 {
195 num++;
196 }
197 if (tile.type == 372 && tile.frameX < 18)
198 {
199 num2++;
200 }
201 if (tile.type == 646 && tile.frameX < 18)
202 {
203 num3++;
204 }
205 if (tile.type == 405 && tile.frameX < 54)
206 {
207 HasCampfire = true;
208 }
209 if (tile.type == 506 && tile.frameX < 72)
210 {
211 HasCatBast = true;
212 }
213 if (tile.type == 42 && tile.frameY >= 324 && tile.frameY <= 358)
214 {
215 HasHeartLantern = true;
216 }
217 if (tile.type == 42 && tile.frameY >= 252 && tile.frameY <= 286)
218 {
219 HasStarInBottle = true;
220 }
221 if (tile.type == 91 && (tile.frameX >= 396 || tile.frameY >= 54))
222 {
223 int num4 = tile.frameX / 18 - 21;
224 for (int num5 = tile.frameY; num5 >= 54; num5 -= 54)
225 {
226 num4 += 90;
227 num4 += 21;
228 }
229 int num6 = Item.BannerToItem(num4);
230 if (ItemID.Sets.BannerStrength.IndexInRange(num6) && ItemID.Sets.BannerStrength[num6].Enabled)
231 {
232 NPCBannerBuff[num4] = true;
233 hasBanner = true;
234 }
235 }
236 if (settings.ScanOreFinderData && Main.tileOreFinderPriority[tile.type] != 0)
237 {
239 }
240 }
241 }
242 }
243 if (settings.VisualScanArea.HasValue)
244 {
245 Rectangle rectangle = WorldUtils.ClampToWorld(settings.VisualScanArea.Value);
246 for (int k = rectangle.Left; k < rectangle.Right; k++)
247 {
248 for (int l = rectangle.Top; l < rectangle.Bottom; l++)
249 {
250 Tile tile2 = Main.tile[k, l];
251 if (tile2 == null || !tile2.active())
252 {
253 continue;
254 }
255 if (tile2.type == 104)
256 {
257 HasClock = true;
258 }
259 switch (tile2.type)
260 {
261 case 139:
262 if (tile2.frameX >= 36)
263 {
264 ActiveMusicBox = tile2.frameY / 36;
265 }
266 break;
267 case 207:
268 if (tile2.frameY >= 72)
269 {
270 switch (tile2.frameX / 36)
271 {
272 case 0:
274 break;
275 case 1:
277 break;
278 case 2:
280 break;
281 case 3:
283 break;
284 case 4:
286 break;
287 case 5:
289 break;
290 case 6:
292 break;
293 case 7:
295 break;
296 case 8:
298 break;
299 case 9:
301 break;
302 default:
304 break;
305 }
306 }
307 break;
308 case 410:
309 if (tile2.frameY >= 56)
310 {
311 int activeMonolithType = tile2.frameX / 36;
313 }
314 break;
315 case 509:
316 if (tile2.frameY >= 56)
317 {
319 }
320 break;
321 case 480:
322 if (tile2.frameY >= 54)
323 {
324 BloodMoonMonolith = true;
325 }
326 break;
327 case 657:
328 if (tile2.frameY >= 54)
329 {
330 EchoMonolith = true;
331 }
332 break;
333 case 658:
334 {
335 int shimmerMonolithState = tile2.frameY / 54;
337 break;
338 }
339 }
340 }
341 }
342 }
343 WaterCandleCount = num;
348 if (settings.ScanOreFinderData)
349 {
351 }
352 }
bool ICollection< KeyValuePair< TKey, TValue > >. Contains(KeyValuePair< TKey, TValue > keyValuePair)
static BannerEffect[] BannerStrength
Definition ItemID.cs:1018
static bool[] isDesertBiomeSand
Definition TileID.cs:119
readonly int[] _liquidCounts
readonly List< Point > _oreFinderTileLocations
readonly int[] _tileCounts
static Rectangle ClampToWorld(Rectangle tileRectangle)
Definition WorldUtils.cs:8

References Terraria.SceneMetrics._liquidCounts, Terraria.SceneMetrics._oreFinderTileLocations, Terraria.SceneMetrics._tileCounts, Terraria.Tile.active(), Terraria.SceneMetrics.ActiveFountainColor, Terraria.SceneMetrics.ActiveMonolithType, Terraria.SceneMetrics.ActiveMusicBox, System.Collections.Generic.List< T >.Add(), Terraria.ID.ItemID.Sets.BannerStrength, Terraria.Item.BannerToItem(), Terraria.SceneMetricsScanSettings.BiomeScanCenterPositionInWorld, Terraria.SceneMetrics.BloodMoonMonolith, Terraria.Main.buffScanAreaHeight, Terraria.Main.buffScanAreaWidth, Terraria.SceneMetrics.CanPlayCreditsRoll, Terraria.WorldBuilding.WorldUtils.ClampToWorld(), System.Collections.Generic.List< T >.Clear(), System.Collections.Generic.Dictionary< TKey, TValue >.Contains(), Terraria.SceneMetrics.EchoMonolith, Terraria.SceneMetrics.ExportTileCountsToMain(), Terraria.Tile.frameX, Terraria.Tile.frameY, Terraria.SceneMetrics.hasBanner, Terraria.SceneMetrics.HasCampfire, Terraria.SceneMetrics.HasCatBast, Terraria.SceneMetrics.HasClock, Terraria.SceneMetrics.HasHeartLantern, Terraria.SceneMetrics.HasStarInBottle, Terraria.ID.TileID.Sets.isDesertBiomeSand, Terraria.Tile.liquid, Terraria.Tile.liquidType(), Terraria.SceneMetrics.NPCBannerBuff, Terraria.WorldGen.oceanDepths(), Terraria.SceneMetrics.PeaceCandleCount, Terraria.SceneMetrics.Reset(), Terraria.SceneMetricsScanSettings.ScanOreFinderData, Terraria.SceneMetrics.ShadowCandleCount, Terraria.SceneMetrics.ShimmerMonolithState, Terraria.Main.tile, Terraria.Main.tileOreFinderPriority, Terraria.Tile.type, Terraria.SceneMetrics.UpdateOreFinderData(), Terraria.SceneMetricsScanSettings.VisualScanArea, Terraria.SceneMetrics.WaterCandleCount, Microsoft.Xna.Framework.Point.X, and Microsoft.Xna.Framework.Point.Y.

Referenced by Terraria.GameContent.TeleportPylonsSystem.HandleTeleportRequest().