Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
TileDrawing.cs
Go to the documentation of this file.
1using System;
13using Terraria.ID;
15using Terraria.UI;
17
19
20public class TileDrawing
21{
39
40 private struct TileFlameData
41 {
43
44 public ulong flameSeed;
45
46 public int flameCount;
47
49
50 public int flameRangeXMin;
51
52 public int flameRangeXMax;
53
54 public int flameRangeYMin;
55
56 public int flameRangeYMax;
57
58 public float flameRangeMultX;
59
60 public float flameRangeMultY;
61 }
62
63 private const int MAX_SPECIALS = 9000;
64
65 private const int MAX_SPECIALS_LEGACY = 1000;
66
67 private const float FORCE_FOR_MIN_WIND = 0.08f;
68
69 private const float FORCE_FOR_MAX_WIND = 1.2f;
70
71 private int _leafFrequency = 100000;
72
73 private int[] _specialsCount = new int[13];
74
75 private Point[][] _specialPositions = new Point[13][];
76
78
80
82
84
86
88
90
91 private int _specialTilesCount;
92
93 private int[] _specialTileX = new int[1000];
94
95 private int[] _specialTileY = new int[1000];
96
98
99 private double _treeWindCounter;
100
101 private double _grassWindCounter;
102
103 private double _sunflowerWindCounter;
104
105 private double _vineWindCounter;
106
107 private WindGrid _windGrid = new WindGrid();
108
110
112
114
116
118
119 private Color _martianGlow = new Color(0, 0, 0, 0);
120
121 private Color _meteorGlow = new Color(100, 100, 100, 0);
122
123 private Color _lavaMossGlow = new Color(150, 100, 50, 0);
124
125 private Color _kryptonMossGlow = new Color(0, 200, 0, 0);
126
127 private Color _xenonMossGlow = new Color(0, 180, 250, 0);
128
129 private Color _argonMossGlow = new Color(225, 0, 125, 0);
130
131 private Color _violetMossGlow = new Color(150, 0, 250, 0);
132
134
135 private Player _localPlayer = new Player();
136
138
140
141 private static readonly Vector2 _zero;
142
144
146
148 {
149 Vector3.One,
150 Vector3.One,
151 Vector3.One,
152 Vector3.One,
153 Vector3.One,
154 Vector3.One,
155 Vector3.One,
156 Vector3.One,
157 Vector3.One
158 };
159
161
162 private bool[] _tileSolid => Main.tileSolid;
163
164 private bool[] _tileSolidTop => Main.tileSolidTop;
165
166 private Dust[] _dust => Main.dust;
167
168 private Gore[] _gore => Main.gore;
169
170 private void AddSpecialPoint(int x, int y, TileCounterType type)
171 {
172 _specialPositions[(int)type][_specialsCount[(int)type]++] = new Point(x, y);
173 }
174
176 {
178 _rand = new UnifiedRandom();
179 for (int i = 0; i < _specialPositions.Length; i++)
180 {
181 _specialPositions[i] = new Point[9000];
182 }
183 }
184
186 {
187 if (Main.GameUpdateCount % 6 == 0)
188 {
189 Vector2 unscaledPosition = Main.Camera.UnscaledPosition;
191 if (Main.drawToScreen)
192 {
194 }
195 GetScreenDrawArea(unscaledPosition, vector + (Main.Camera.UnscaledPosition - Main.Camera.ScaledPosition), out var firstTileX, out var lastTileX, out var firstTileY, out var lastTileY);
196 PrepareForAreaDrawing(firstTileX, lastTileX, firstTileY, lastTileY, prepareLazily: true);
197 }
198 }
199
200 public void PrepareForAreaDrawing(int firstTileX, int lastTileX, int firstTileY, int lastTileY, bool prepareLazily)
201 {
204 for (int i = firstTileY; i < lastTileY + 4; i++)
205 {
206 for (int j = firstTileX - 2; j < lastTileX + 2; j++)
207 {
208 Tile tile = Main.tile[j, i];
209 if (tile == null)
210 {
211 continue;
212 }
213 if (tile.active())
214 {
215 Main.instance.LoadTiles(tile.type);
216 lookupKey.TileType = tile.type;
217 lookupKey.PaintColor = tile.color();
218 int tileStyle = 0;
219 switch (tile.type)
220 {
221 case 5:
222 tileStyle = GetTreeBiome(j, i, tile.frameX, tile.frameY);
223 break;
224 case 323:
226 break;
227 }
228 lookupKey.TileStyle = tileStyle;
229 if (lookupKey.PaintColor != 0)
230 {
232 }
233 }
234 if (tile.wall != 0)
235 {
236 Main.instance.LoadWall(tile.wall);
237 lookupKey2.WallType = tile.wall;
238 lookupKey2.PaintColor = tile.wallColor();
239 if (lookupKey2.PaintColor != 0)
240 {
242 }
243 }
244 if (!prepareLazily)
245 {
246 MakeExtraPreparations(tile, j, i);
247 }
248 }
249 }
250 }
251
252 private void MakeExtraPreparations(Tile tile, int x, int y)
253 {
254 switch (tile.type)
255 {
256 case 5:
257 {
258 int treeFrame2 = 0;
259 int floorY2 = 0;
260 int topTextureFrameWidth2 = 0;
262 int treeStyle2 = 0;
263 int xoffset2 = (tile.frameX == 44).ToInt() - (tile.frameX == 66).ToInt();
265 {
267 treeFoliageVariantKey.TextureIndex = treeStyle2;
268 treeFoliageVariantKey.PaintColor = tile.color();
272 }
273 break;
274 }
275 case 583:
276 case 584:
277 case 585:
278 case 586:
279 case 587:
280 case 588:
281 case 589:
282 {
283 int treeFrame3 = 0;
284 int floorY3 = 0;
285 int topTextureFrameWidth3 = 0;
287 int treeStyle3 = 0;
288 int xoffset3 = (tile.frameX == 44).ToInt() - (tile.frameX == 66).ToInt();
290 {
292 treeFoliageVariantKey.TextureIndex = treeStyle3;
293 treeFoliageVariantKey.PaintColor = tile.color();
297 }
298 break;
299 }
300 case 596:
301 case 616:
302 {
303 int treeFrame = 0;
304 int floorY = 0;
305 int topTextureFrameWidth = 0;
306 int topTextureFrameHeight = 0;
307 int treeStyle = 0;
308 int xoffset = (tile.frameX == 44).ToInt() - (tile.frameX == 66).ToInt();
310 {
312 treeFoliageVariantKey.TextureIndex = treeStyle;
313 treeFoliageVariantKey.PaintColor = tile.color();
317 }
318 break;
319 }
320 case 634:
321 {
322 int treeFrame4 = 0;
323 int floorY4 = 0;
324 int topTextureFrameWidth4 = 0;
326 int treeStyle4 = 0;
327 int xoffset4 = (tile.frameX == 44).ToInt() - (tile.frameX == 66).ToInt();
329 {
331 treeFoliageVariantKey.TextureIndex = treeStyle4;
332 treeFoliageVariantKey.PaintColor = tile.color();
336 }
337 break;
338 }
339 case 323:
340 {
341 int textureIndex = 15;
343 {
344 textureIndex = 21;
345 }
347 treeFoliageVariantKey.TextureIndex = textureIndex;
348 treeFoliageVariantKey.PaintColor = tile.color();
352 break;
353 }
354 }
355 }
356
357 public void Update()
358 {
359 if (!Main.dedServ)
360 {
361 double num = Math.Abs(Main.WindForVisuals);
362 num = Utils.GetLerpValue(0.08f, 1.2f, (float)num, clamped: true);
363 _treeWindCounter += 1.0 / 240.0 + 1.0 / 240.0 * num * 2.0;
364 _grassWindCounter += 1.0 / 180.0 + 1.0 / 180.0 * num * 4.0;
365 _sunflowerWindCounter += 1.0 / 420.0 + 1.0 / 420.0 * num * 5.0;
366 _vineWindCounter += 1.0 / 120.0 + 1.0 / 120.0 * num * 0.4000000059604645;
372 {
374 Main.sectionManager.SetAllFramedSectionsAsNeedingRefresh();
375 }
376 }
377 }
378
380 {
381 Main.sectionManager.SetAllFramedSectionsAsNeedingRefresh();
382 }
383
385 {
387 if (!solidLayer && flag)
388 {
389 _specialsCount[5] = 0;
390 _specialsCount[4] = 0;
391 _specialsCount[8] = 0;
392 _specialsCount[6] = 0;
393 _specialsCount[3] = 0;
394 _specialsCount[12] = 0;
395 _specialsCount[0] = 0;
396 _specialsCount[9] = 0;
397 _specialsCount[10] = 0;
398 _specialsCount[11] = 0;
399 }
400 }
401
425
427 {
428 Vector2 unscaledPosition = Main.Camera.UnscaledPosition;
430 if (Main.drawToScreen)
431 {
433 }
434 GetScreenDrawArea(unscaledPosition, vector + (Main.Camera.UnscaledPosition - Main.Camera.ScaledPosition), out var firstTileX, out var lastTileX, out var firstTileY, out var lastTileY);
435 for (int i = firstTileY; i < lastTileY + 4; i++)
436 {
437 for (int j = firstTileX - 2; j < lastTileX + 2; j++)
438 {
439 Tile tile = Main.tile[j, i];
440 if (tile != null)
441 {
443 }
444 }
445 }
446 }
447
449 {
451 stopwatch.Start();
452 _isActiveAndNotPaused = !Main.gamePaused && Main.instance.IsActive;
454 Vector2 unscaledPosition = Main.Camera.UnscaledPosition;
456 if (Main.drawToScreen)
457 {
459 }
460 if (!solidLayer)
461 {
462 Main.critterCage = false;
463 }
467 if (flag)
468 {
470 }
471 float num = 255f * (1f - Main.gfxQuality) + 30f * Main.gfxQuality;
472 _highQualityLightingRequirement.R = (byte)num;
473 _highQualityLightingRequirement.G = (byte)((double)num * 1.1);
474 _highQualityLightingRequirement.B = (byte)((double)num * 1.2);
475 float num2 = 50f * (1f - Main.gfxQuality) + 2f * Main.gfxQuality;
476 _mediumQualityLightingRequirement.R = (byte)num2;
477 _mediumQualityLightingRequirement.G = (byte)((double)num2 * 1.1);
478 _mediumQualityLightingRequirement.B = (byte)((double)num2 * 1.2);
479 GetScreenDrawArea(unscaledPosition, vector + (Main.Camera.UnscaledPosition - Main.Camera.ScaledPosition), out var firstTileX, out var lastTileX, out var firstTileY, out var lastTileY);
480 byte b = (byte)(100f + 150f * Main.martianLight);
481 _martianGlow = new Color(b, b, b, 0);
483 for (int i = firstTileY; i < lastTileY + 4; i++)
484 {
485 for (int j = firstTileX - 2; j < lastTileX + 2; j++)
486 {
487 Tile tile = Main.tile[j, i];
488 if (tile == null)
489 {
490 tile = new Tile();
491 Main.tile[j, i] = tile;
492 Main.mapTime += 60;
493 }
494 else
495 {
496 if (!tile.active() || IsTileDrawLayerSolid(tile.type) != solidLayer)
497 {
498 continue;
499 }
500 if (solidLayer)
501 {
503 }
504 ushort type = tile.type;
505 short frameX = tile.frameX;
506 short frameY = tile.frameY;
507 if (!TextureAssets.Tile[type].IsLoaded)
508 {
509 Main.instance.LoadTiles(type);
510 }
511 switch (type)
512 {
513 case 52:
514 case 62:
515 case 115:
516 case 205:
517 case 382:
518 case 528:
519 case 636:
520 case 638:
521 if (flag)
522 {
524 }
525 continue;
526 case 549:
527 if (flag)
528 {
530 }
531 continue;
532 case 34:
533 if (frameX % 54 == 0 && frameY % 54 == 0 && flag)
534 {
535 AddSpecialPoint(j, i, TileCounterType.MultiTileVine);
536 }
537 continue;
538 case 454:
539 if (frameX % 72 == 0 && frameY % 54 == 0 && flag)
540 {
541 AddSpecialPoint(j, i, TileCounterType.MultiTileVine);
542 }
543 continue;
544 case 42:
545 case 270:
546 case 271:
547 case 572:
548 case 581:
549 case 660:
550 if (frameX % 18 == 0 && frameY % 36 == 0 && flag)
551 {
552 AddSpecialPoint(j, i, TileCounterType.MultiTileVine);
553 }
554 continue;
555 case 91:
556 if (frameX % 18 == 0 && frameY % 54 == 0 && flag)
557 {
558 AddSpecialPoint(j, i, TileCounterType.MultiTileVine);
559 }
560 continue;
561 case 95:
562 case 126:
563 case 444:
564 if (frameX % 36 == 0 && frameY % 36 == 0 && flag)
565 {
566 AddSpecialPoint(j, i, TileCounterType.MultiTileVine);
567 }
568 continue;
569 case 465:
570 case 591:
571 case 592:
572 if (frameX % 36 == 0 && frameY % 54 == 0 && flag)
573 {
574 AddSpecialPoint(j, i, TileCounterType.MultiTileVine);
575 }
576 continue;
577 case 27:
578 if (frameX % 36 == 0 && frameY == 0 && flag)
579 {
580 AddSpecialPoint(j, i, TileCounterType.MultiTileGrass);
581 }
582 continue;
583 case 236:
584 case 238:
585 if (frameX % 36 == 0 && frameY == 0 && flag)
586 {
587 AddSpecialPoint(j, i, TileCounterType.MultiTileGrass);
588 }
589 continue;
590 case 233:
591 if (frameY == 0 && frameX % 54 == 0 && flag)
592 {
593 AddSpecialPoint(j, i, TileCounterType.MultiTileGrass);
594 }
595 if (frameY == 34 && frameX % 36 == 0 && flag)
596 {
597 AddSpecialPoint(j, i, TileCounterType.MultiTileGrass);
598 }
599 continue;
600 case 652:
601 if (frameX % 36 == 0 && flag)
602 {
603 AddSpecialPoint(j, i, TileCounterType.MultiTileGrass);
604 }
605 continue;
606 case 651:
607 if (frameX % 54 == 0 && flag)
608 {
609 AddSpecialPoint(j, i, TileCounterType.MultiTileGrass);
610 }
611 continue;
612 case 530:
613 if (frameX < 270)
614 {
615 if (frameX % 54 == 0 && frameY == 0 && flag)
616 {
617 AddSpecialPoint(j, i, TileCounterType.MultiTileGrass);
618 }
619 continue;
620 }
621 break;
622 case 485:
623 case 489:
624 case 490:
625 if (frameY == 0 && frameX % 36 == 0 && flag)
626 {
627 AddSpecialPoint(j, i, TileCounterType.MultiTileGrass);
628 }
629 continue;
630 case 521:
631 case 522:
632 case 523:
633 case 524:
634 case 525:
635 case 526:
636 case 527:
637 if (frameY == 0 && frameX % 36 == 0 && flag)
638 {
639 AddSpecialPoint(j, i, TileCounterType.MultiTileGrass);
640 }
641 continue;
642 case 493:
643 if (frameY == 0 && frameX % 18 == 0 && flag)
644 {
645 AddSpecialPoint(j, i, TileCounterType.MultiTileGrass);
646 }
647 continue;
648 case 519:
649 if (frameX / 18 <= 4 && flag)
650 {
651 AddSpecialPoint(j, i, TileCounterType.MultiTileGrass);
652 }
653 continue;
654 case 373:
655 case 374:
656 case 375:
657 case 461:
658 EmitLiquidDrops(i, j, tile, type);
659 continue;
660 case 491:
661 if (flag && frameX == 18 && frameY == 18)
662 {
663 AddSpecialPoint(j, i, TileCounterType.VoidLens);
664 }
665 break;
666 case 597:
667 if (flag && frameX % 54 == 0 && frameY == 0)
668 {
669 AddSpecialPoint(j, i, TileCounterType.TeleportationPylon);
670 }
671 break;
672 case 617:
673 if (flag && frameX % 54 == 0 && frameY % 72 == 0)
674 {
675 AddSpecialPoint(j, i, TileCounterType.MasterTrophy);
676 }
677 break;
678 case 184:
679 if (flag)
680 {
681 AddSpecialPoint(j, i, TileCounterType.AnyDirectionalGrass);
682 }
683 continue;
684 default:
685 if (ShouldSwayInWind(j, i, tile))
686 {
687 if (flag)
688 {
689 AddSpecialPoint(j, i, TileCounterType.WindyGrass);
690 }
691 continue;
692 }
693 break;
694 }
696 }
697 }
698 }
699 if (solidLayer)
700 {
701 Main.instance.DrawTileCracks(1, Main.player[Main.myPlayer].hitReplace);
702 Main.instance.DrawTileCracks(1, Main.player[Main.myPlayer].hitTile);
703 }
706 {
707 Main.instance.LoadTiles(TileObject.objectPreview.Type);
709 }
710 if (solidLayer)
711 {
712 TimeLogger.DrawTime(0, stopwatch.Elapsed.TotalMilliseconds);
713 }
714 else
715 {
716 TimeLogger.DrawTime(1, stopwatch.Elapsed.TotalMilliseconds);
717 }
718 }
719
720 private void CrawlToTopOfVineAndAddSpecialPoint(int j, int i)
721 {
722 int y = j;
723 for (int num = j - 1; num > 0; num--)
724 {
725 Tile tile = Main.tile[i, num];
726 if (WorldGen.SolidTile(i, num) || !tile.active())
727 {
728 y = num + 1;
729 break;
730 }
731 }
732 Point item = new Point(i, y);
734 {
737 }
738 }
739
741 {
742 int y = j;
743 for (int k = j; k < Main.maxTilesY; k++)
744 {
745 Tile tile = Main.tile[i, k];
746 if (WorldGen.SolidTile(i, k) || !tile.active())
747 {
748 y = k - 1;
749 break;
750 }
751 }
752 Point item = new Point(i, y);
754 {
756 AddSpecialPoint(i, y, TileCounterType.ReverseVine);
757 }
758 }
759
761 {
762 drawData.tileCache = Main.tile[tileX, tileY];
763 drawData.typeCache = drawData.tileCache.type;
764 drawData.tileFrameX = drawData.tileCache.frameX;
765 drawData.tileFrameY = drawData.tileCache.frameY;
766 drawData.tileLight = Lighting.GetColor(tileX, tileY);
767 if (drawData.tileCache.liquid > 0 && drawData.tileCache.type == 518)
768 {
769 return;
770 }
771 GetTileDrawData(tileX, tileY, drawData.tileCache, drawData.typeCache, ref drawData.tileFrameX, ref drawData.tileFrameY, out drawData.tileWidth, out drawData.tileHeight, out drawData.tileTop, out drawData.halfBrickHeight, out drawData.addFrX, out drawData.addFrY, out drawData.tileSpriteEffect, out drawData.glowTexture, out drawData.glowSourceRect, out drawData.glowColor);
772 drawData.drawTexture = GetTileDrawTexture(drawData.tileCache, tileX, tileY);
776 if (TileID.Sets.HasOutlines[drawData.typeCache])
777 {
779 }
781 {
782 if (drawData.tileLight.R < byte.MaxValue)
783 {
784 drawData.tileLight.R = byte.MaxValue;
785 }
786 if (drawData.tileLight.G < 50)
787 {
788 drawData.tileLight.G = 50;
789 }
790 if (drawData.tileLight.B < 50)
791 {
792 drawData.tileLight.B = 50;
793 }
794 if (_isActiveAndNotPaused && _rand.Next(30) == 0)
795 {
796 int num = Dust.NewDust(new Vector2(tileX * 16, tileY * 16), 16, 16, 60, 0f, 0f, 100, default(Color), 0.3f);
797 _dust[num].fadeIn = 1f;
798 _dust[num].velocity *= 0.1f;
799 _dust[num].noLight = true;
800 _dust[num].noGravity = true;
801 }
802 }
803 if (_localPlayer.findTreasure && Main.IsTileSpelunkable(drawData.typeCache, drawData.tileFrameX, drawData.tileFrameY))
804 {
805 if (drawData.tileLight.R < 200)
806 {
807 drawData.tileLight.R = 200;
808 }
809 if (drawData.tileLight.G < 170)
810 {
811 drawData.tileLight.G = 170;
812 }
813 if (_isActiveAndNotPaused && _rand.Next(60) == 0)
814 {
815 int num2 = Dust.NewDust(new Vector2(tileX * 16, tileY * 16), 16, 16, 204, 0f, 0f, 150, default(Color), 0.3f);
816 _dust[num2].fadeIn = 1f;
817 _dust[num2].velocity *= 0.1f;
818 _dust[num2].noLight = true;
819 }
820 }
822 {
824 if (Main.IsTileBiomeSightable(drawData.typeCache, drawData.tileFrameX, drawData.tileFrameY, ref sightColor))
825 {
826 if (drawData.tileLight.R < sightColor.R)
827 {
828 drawData.tileLight.R = sightColor.R;
829 }
830 if (drawData.tileLight.G < sightColor.G)
831 {
832 drawData.tileLight.G = sightColor.G;
833 }
834 if (drawData.tileLight.B < sightColor.B)
835 {
836 drawData.tileLight.B = sightColor.B;
837 }
838 if (_isActiveAndNotPaused && _rand.Next(480) == 0)
839 {
841 int num3 = Dust.NewDust(new Vector2(tileX * 16, tileY * 16), 16, 16, 267, 0f, 0f, 150, newColor, 0.3f);
842 _dust[num3].noGravity = true;
843 _dust[num3].fadeIn = 1f;
844 _dust[num3].velocity *= 0.1f;
846 }
847 }
848 }
850 {
852 {
853 DrawTiles_EmitParticles(tileY, tileX, drawData.tileCache, drawData.typeCache, drawData.tileFrameX, drawData.tileFrameY, drawData.tileLight);
854 }
855 drawData.tileLight = DrawTiles_GetLightOverride(tileY, tileX, drawData.tileCache, drawData.typeCache, drawData.tileFrameX, drawData.tileFrameY, drawData.tileLight);
856 }
857 bool flag = false;
858 if (drawData.tileLight.R >= 1 || drawData.tileLight.G >= 1 || drawData.tileLight.B >= 1)
859 {
860 flag = true;
861 }
862 if (drawData.tileCache.wall > 0 && (drawData.tileCache.wall == 318 || drawData.tileCache.fullbrightWall()))
863 {
864 flag = true;
865 }
866 flag &= IsVisible(drawData.tileCache);
867 CacheSpecialDraws_Part1(tileX, tileY, drawData.typeCache, drawData.tileFrameX, drawData.tileFrameY, !flag);
869 if (drawData.typeCache == 72 && drawData.tileFrameX >= 36)
870 {
871 int num4 = 0;
872 if (drawData.tileFrameY == 18)
873 {
874 num4 = 1;
875 }
876 else if (drawData.tileFrameY == 36)
877 {
878 num4 = 2;
879 }
880 Main.spriteBatch.Draw(TextureAssets.ShroomCap.Value, new Vector2(tileX * 16 - (int)screenPosition.X - 22, tileY * 16 - (int)screenPosition.Y - 26) + screenOffset, new Rectangle(num4 * 62, 0, 60, 42), Lighting.GetColor(tileX, tileY), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
881 }
882 Rectangle rectangle = new Rectangle(drawData.tileFrameX + drawData.addFrX, drawData.tileFrameY + drawData.addFrY, drawData.tileWidth, drawData.tileHeight - drawData.halfBrickHeight);
883 Vector2 vector = new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f, tileY * 16 - (int)screenPosition.Y + drawData.tileTop + drawData.halfBrickHeight) + screenOffset;
884 if (!flag)
885 {
886 return;
887 }
888 drawData.colorTint = Color.White;
889 drawData.finalColor = GetFinalLight(drawData.tileCache, drawData.typeCache, drawData.tileLight, drawData.colorTint);
890 switch (drawData.typeCache)
891 {
892 case 136:
893 switch (drawData.tileFrameX / 18)
894 {
895 case 1:
896 vector.X += -2f;
897 break;
898 case 2:
899 vector.X += 2f;
900 break;
901 }
902 break;
903 case 442:
904 {
905 int num7 = drawData.tileFrameX / 22;
906 if (num7 == 3)
907 {
908 vector.X += 2f;
909 }
910 break;
911 }
912 case 51:
913 drawData.finalColor = drawData.tileLight * 0.5f;
914 break;
915 case 160:
916 case 692:
917 {
918 Color color = new Color(Main.DiscoR, Main.DiscoG, Main.DiscoB, 255);
919 if (drawData.tileCache.inActive())
920 {
921 color = drawData.tileCache.actColor(color);
922 }
923 drawData.finalColor = color;
924 break;
925 }
926 case 129:
927 {
928 drawData.finalColor = new Color(255, 255, 255, 100);
929 int num6 = 2;
930 if (drawData.tileFrameX >= 324)
931 {
932 drawData.finalColor = Color.Transparent;
933 }
934 if (drawData.tileFrameY < 36)
935 {
936 vector.Y += num6 * (drawData.tileFrameY == 0).ToDirectionInt();
937 }
938 else
939 {
940 vector.X += num6 * (drawData.tileFrameY == 36).ToDirectionInt();
941 }
942 break;
943 }
944 case 272:
945 {
946 int num5 = Main.tileFrame[drawData.typeCache];
947 num5 += tileX % 2;
948 num5 += tileY % 2;
949 num5 += tileX % 3;
950 num5 += tileY % 3;
951 num5 %= 2;
952 num5 *= 90;
953 drawData.addFrY += num5;
954 rectangle.Y += num5;
955 break;
956 }
957 case 80:
958 {
959 WorldGen.GetCactusType(tileX, tileY, drawData.tileFrameX, drawData.tileFrameY, out var evil, out var good, out var crimson);
960 if (evil)
961 {
962 rectangle.Y += 54;
963 }
964 if (good)
965 {
966 rectangle.Y += 108;
967 }
968 if (crimson)
969 {
970 rectangle.Y += 162;
971 }
972 break;
973 }
974 case 83:
975 drawData.drawTexture = GetTileDrawTexture(drawData.tileCache, tileX, tileY);
976 break;
977 case 323:
978 if (drawData.tileCache.frameX <= 132 && drawData.tileCache.frameX >= 88)
979 {
980 return;
981 }
982 vector.X += drawData.tileCache.frameY;
983 break;
984 case 114:
985 if (drawData.tileFrameY > 0)
986 {
987 rectangle.Height += 2;
988 }
989 break;
990 }
991 if (drawData.typeCache == 314)
992 {
994 }
995 else if (drawData.typeCache == 171)
996 {
997 DrawXmasTree(screenPosition, screenOffset, tileX, tileY, drawData);
998 }
999 else
1000 {
1002 }
1003 if (Main.tileGlowMask[drawData.tileCache.type] != -1)
1004 {
1005 short num8 = Main.tileGlowMask[drawData.tileCache.type];
1006 if (TextureAssets.GlowMask.IndexInRange(num8))
1007 {
1008 drawData.drawTexture = TextureAssets.GlowMask[num8].Value;
1009 }
1010 double num9 = Main.timeForVisualEffects * 0.08;
1012 bool flag2 = false;
1013 switch (drawData.tileCache.type)
1014 {
1015 case 633:
1016 color2 = Color.Lerp(Color.White, drawData.finalColor, 0.75f);
1017 break;
1018 case 659:
1019 case 667:
1021 break;
1022 case 350:
1023 color2 = new Color(new Vector4((float)((0.0 - Math.Cos(((int)(num9 / 6.283) % 3 == 1) ? num9 : 0.0)) * 0.2 + 0.2)));
1024 break;
1025 case 381:
1026 case 517:
1027 case 687:
1029 break;
1030 case 534:
1031 case 535:
1032 case 689:
1034 break;
1035 case 536:
1036 case 537:
1037 case 690:
1039 break;
1040 case 539:
1041 case 540:
1042 case 688:
1044 break;
1045 case 625:
1046 case 626:
1047 case 691:
1049 break;
1050 case 627:
1051 case 628:
1052 case 692:
1054 break;
1055 case 370:
1056 case 390:
1058 break;
1059 case 391:
1060 color2 = new Color(250, 250, 250, 200);
1061 break;
1062 case 209:
1063 color2 = PortalHelper.GetPortalColor(Main.myPlayer, (drawData.tileCache.frameX >= 288) ? 1 : 0);
1064 break;
1065 case 429:
1066 case 445:
1067 drawData.drawTexture = GetTileDrawTexture(drawData.tileCache, tileX, tileY);
1068 drawData.addFrY = 18;
1069 break;
1070 case 129:
1071 {
1072 if (drawData.tileFrameX < 324)
1073 {
1074 flag2 = true;
1075 break;
1076 }
1077 drawData.drawTexture = GetTileDrawTexture(drawData.tileCache, tileX, tileY);
1078 color2 = Main.hslToRgb(0.7f + (float)Math.Sin((float)Math.PI * 2f * Main.GlobalTimeWrappedHourly * 0.16f + (float)tileX * 0.3f + (float)tileY * 0.7f) * 0.16f, 1f, 0.5f);
1079 color2.A /= 2;
1080 color2 *= 0.3f;
1081 int num10 = 72;
1082 for (float num11 = 0f; num11 < (float)Math.PI * 2f; num11 += (float)Math.PI / 2f)
1083 {
1084 Main.spriteBatch.Draw(drawData.drawTexture, vector + num11.ToRotationVector2() * 2f, new Rectangle(drawData.tileFrameX + drawData.addFrX, drawData.tileFrameY + drawData.addFrY + num10, drawData.tileWidth, drawData.tileHeight), color2, 0f, Vector2.Zero, 1f, SpriteEffects.None, 0f);
1085 }
1086 color2 = new Color(255, 255, 255, 100);
1087 break;
1088 }
1089 }
1090 if (!flag2)
1091 {
1092 if (drawData.tileCache.slope() == 0 && !drawData.tileCache.halfBrick())
1093 {
1094 Main.spriteBatch.Draw(drawData.drawTexture, vector, new Rectangle(drawData.tileFrameX + drawData.addFrX, drawData.tileFrameY + drawData.addFrY, drawData.tileWidth, drawData.tileHeight), color2, 0f, Vector2.Zero, 1f, SpriteEffects.None, 0f);
1095 }
1096 else if (drawData.tileCache.halfBrick())
1097 {
1098 Main.spriteBatch.Draw(drawData.drawTexture, vector, rectangle, color2, 0f, _zero, 1f, SpriteEffects.None, 0f);
1099 }
1100 else if (TileID.Sets.Platforms[drawData.tileCache.type])
1101 {
1102 Main.spriteBatch.Draw(drawData.drawTexture, vector, rectangle, color2, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
1103 if (drawData.tileCache.slope() == 1 && Main.tile[tileX + 1, tileY + 1].active() && Main.tileSolid[Main.tile[tileX + 1, tileY + 1].type] && Main.tile[tileX + 1, tileY + 1].slope() != 2 && !Main.tile[tileX + 1, tileY + 1].halfBrick() && (!Main.tile[tileX, tileY + 1].active() || (Main.tile[tileX, tileY + 1].blockType() != 0 && Main.tile[tileX, tileY + 1].blockType() != 5) || (!TileID.Sets.BlocksStairs[Main.tile[tileX, tileY + 1].type] && !TileID.Sets.BlocksStairsAbove[Main.tile[tileX, tileY + 1].type])))
1104 {
1105 Rectangle value = new Rectangle(198, drawData.tileFrameY, 16, 16);
1106 if (TileID.Sets.Platforms[Main.tile[tileX + 1, tileY + 1].type] && Main.tile[tileX + 1, tileY + 1].slope() == 0)
1107 {
1108 value.X = 324;
1109 }
1110 Main.spriteBatch.Draw(drawData.drawTexture, vector + new Vector2(0f, 16f), value, color2, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
1111 }
1112 else if (drawData.tileCache.slope() == 2 && Main.tile[tileX - 1, tileY + 1].active() && Main.tileSolid[Main.tile[tileX - 1, tileY + 1].type] && Main.tile[tileX - 1, tileY + 1].slope() != 1 && !Main.tile[tileX - 1, tileY + 1].halfBrick() && (!Main.tile[tileX, tileY + 1].active() || (Main.tile[tileX, tileY + 1].blockType() != 0 && Main.tile[tileX, tileY + 1].blockType() != 4) || (!TileID.Sets.BlocksStairs[Main.tile[tileX, tileY + 1].type] && !TileID.Sets.BlocksStairsAbove[Main.tile[tileX, tileY + 1].type])))
1113 {
1114 Rectangle value2 = new Rectangle(162, drawData.tileFrameY, 16, 16);
1115 if (TileID.Sets.Platforms[Main.tile[tileX - 1, tileY + 1].type] && Main.tile[tileX - 1, tileY + 1].slope() == 0)
1116 {
1117 value2.X = 306;
1118 }
1119 Main.spriteBatch.Draw(drawData.drawTexture, vector + new Vector2(0f, 16f), value2, color2, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
1120 }
1121 }
1122 else if (TileID.Sets.HasSlopeFrames[drawData.tileCache.type])
1123 {
1124 Main.spriteBatch.Draw(drawData.drawTexture, vector, new Rectangle(drawData.tileFrameX + drawData.addFrX, drawData.tileFrameY + drawData.addFrY, 16, 16), color2, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
1125 }
1126 else
1127 {
1128 int num12 = drawData.tileCache.slope();
1129 int num13 = 2;
1130 for (int i = 0; i < 8; i++)
1131 {
1132 int num14 = i * -2;
1133 int num15 = 16 - i * 2;
1134 int num16 = 16 - num15;
1135 int num17;
1136 switch (num12)
1137 {
1138 case 1:
1139 num14 = 0;
1140 num17 = i * 2;
1141 num15 = 14 - i * 2;
1142 num16 = 0;
1143 break;
1144 case 2:
1145 num14 = 0;
1146 num17 = 16 - i * 2 - 2;
1147 num15 = 14 - i * 2;
1148 num16 = 0;
1149 break;
1150 case 3:
1151 num17 = i * 2;
1152 break;
1153 default:
1154 num17 = 16 - i * 2 - 2;
1155 break;
1156 }
1157 Main.spriteBatch.Draw(drawData.drawTexture, vector + new Vector2(num17, i * num13 + num14), new Rectangle(drawData.tileFrameX + drawData.addFrX + num17, drawData.tileFrameY + drawData.addFrY + num16, num13, num15), color2, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
1158 }
1159 int num18 = ((num12 <= 2) ? 14 : 0);
1160 Main.spriteBatch.Draw(drawData.drawTexture, vector + new Vector2(0f, num18), new Rectangle(drawData.tileFrameX + drawData.addFrX, drawData.tileFrameY + drawData.addFrY + num18, 16, 2), color2, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
1161 }
1162 }
1163 }
1164 if (drawData.glowTexture != null)
1165 {
1166 Vector2 position = new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f, tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + screenOffset;
1167 if (TileID.Sets.Platforms[drawData.typeCache])
1168 {
1169 position = vector;
1170 }
1171 Main.spriteBatch.Draw(drawData.glowTexture, position, drawData.glowSourceRect, drawData.glowColor, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
1172 }
1173 if (highlightTexture != null)
1174 {
1175 empty = new Rectangle(drawData.tileFrameX + drawData.addFrX, drawData.tileFrameY + drawData.addFrY, drawData.tileWidth, drawData.tileHeight);
1176 int num19 = 0;
1177 int num20 = 0;
1178 Main.spriteBatch.Draw(highlightTexture, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + (float)num19, tileY * 16 - (int)screenPosition.Y + drawData.tileTop + num20) + screenOffset, empty, highlightColor, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
1179 }
1180 }
1181
1182 private bool IsVisible(Tile tile)
1183 {
1184 bool flag = tile.invisibleBlock();
1185 switch (tile.type)
1186 {
1187 case 19:
1188 if (tile.frameY / 18 == 48)
1189 {
1190 flag = true;
1191 }
1192 break;
1193 case 541:
1194 case 631:
1195 flag = true;
1196 break;
1197 }
1198 if (flag)
1199 {
1201 }
1202 return true;
1203 }
1204
1206 {
1207 Texture2D result = TextureAssets.Tile[tile.type].Value;
1208 int tileStyle = 0;
1209 int num = tile.type;
1210 switch (tile.type)
1211 {
1212 case 5:
1214 break;
1215 case 323:
1217 break;
1218 case 83:
1219 if (IsAlchemyPlantHarvestable(tile.frameX / 18))
1220 {
1221 num = 84;
1222 }
1223 Main.instance.LoadTiles(num);
1224 break;
1225 }
1227 if (texture2D != null)
1228 {
1229 result = texture2D;
1230 }
1231 return result;
1232 }
1233
1235 {
1236 Texture2D result = TextureAssets.Tile[tile.type].Value;
1237 int tileStyle = 0;
1238 int num = tile.type;
1239 switch (tile.type)
1240 {
1241 case 5:
1243 break;
1244 case 323:
1246 break;
1247 case 83:
1248 if (IsAlchemyPlantHarvestable(tile.frameX / 18))
1249 {
1250 num = 84;
1251 }
1252 Main.instance.LoadTiles(num);
1253 break;
1254 }
1256 if (texture2D != null)
1257 {
1258 result = texture2D;
1259 }
1260 return result;
1261 }
1262
1264 {
1265 if (TileID.Sets.Platforms[drawData.typeCache] && WorldGen.IsRope(tileX, tileY) && Main.tile[tileX, tileY - 1] != null)
1266 {
1267 _ = Main.tile[tileX, tileY - 1].type;
1268 int y = (tileY + tileX) % 3 * 18;
1270 if (tileDrawTexture != null)
1271 {
1272 Main.spriteBatch.Draw(tileDrawTexture, new Vector2(tileX * 16 - (int)screenPosition.X, tileY * 16 - (int)screenPosition.Y) + screenOffset, new Rectangle(90, y, 16, 16), drawData.tileLight, 0f, default(Vector2), 1f, drawData.tileSpriteEffect, 0f);
1273 }
1274 }
1275 if (drawData.tileCache.slope() > 0)
1276 {
1277 if (TileID.Sets.Platforms[drawData.tileCache.type])
1278 {
1279 Main.spriteBatch.Draw(drawData.drawTexture, normalTilePosition, normalTileRect, drawData.finalColor, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
1280 if (drawData.tileCache.slope() == 1 && Main.tile[tileX + 1, tileY + 1].active() && Main.tileSolid[Main.tile[tileX + 1, tileY + 1].type] && Main.tile[tileX + 1, tileY + 1].slope() != 2 && !Main.tile[tileX + 1, tileY + 1].halfBrick() && (!Main.tile[tileX, tileY + 1].active() || (Main.tile[tileX, tileY + 1].blockType() != 0 && Main.tile[tileX, tileY + 1].blockType() != 5) || (!TileID.Sets.BlocksStairs[Main.tile[tileX, tileY + 1].type] && !TileID.Sets.BlocksStairsAbove[Main.tile[tileX, tileY + 1].type])))
1281 {
1282 Rectangle value = new Rectangle(198, drawData.tileFrameY, 16, 16);
1283 if (TileID.Sets.Platforms[Main.tile[tileX + 1, tileY + 1].type] && Main.tile[tileX + 1, tileY + 1].slope() == 0)
1284 {
1285 value.X = 324;
1286 }
1287 Main.spriteBatch.Draw(drawData.drawTexture, normalTilePosition + new Vector2(0f, 16f), value, drawData.finalColor, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
1288 }
1289 else if (drawData.tileCache.slope() == 2 && Main.tile[tileX - 1, tileY + 1].active() && Main.tileSolid[Main.tile[tileX - 1, tileY + 1].type] && Main.tile[tileX - 1, tileY + 1].slope() != 1 && !Main.tile[tileX - 1, tileY + 1].halfBrick() && (!Main.tile[tileX, tileY + 1].active() || (Main.tile[tileX, tileY + 1].blockType() != 0 && Main.tile[tileX, tileY + 1].blockType() != 4) || (!TileID.Sets.BlocksStairs[Main.tile[tileX, tileY + 1].type] && !TileID.Sets.BlocksStairsAbove[Main.tile[tileX, tileY + 1].type])))
1290 {
1291 Rectangle value2 = new Rectangle(162, drawData.tileFrameY, 16, 16);
1292 if (TileID.Sets.Platforms[Main.tile[tileX - 1, tileY + 1].type] && Main.tile[tileX - 1, tileY + 1].slope() == 0)
1293 {
1294 value2.X = 306;
1295 }
1296 Main.spriteBatch.Draw(drawData.drawTexture, normalTilePosition + new Vector2(0f, 16f), value2, drawData.finalColor, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
1297 }
1298 return;
1299 }
1300 if (TileID.Sets.HasSlopeFrames[drawData.tileCache.type])
1301 {
1302 Main.spriteBatch.Draw(drawData.drawTexture, normalTilePosition, new Rectangle(drawData.tileFrameX + drawData.addFrX, drawData.tileFrameY + drawData.addFrY, 16, 16), drawData.finalColor, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
1303 return;
1304 }
1305 int num = drawData.tileCache.slope();
1306 int num2 = 2;
1307 for (int i = 0; i < 8; i++)
1308 {
1309 int num3 = i * -2;
1310 int num4 = 16 - i * 2;
1311 int num5 = 16 - num4;
1312 int num6;
1313 switch (num)
1314 {
1315 case 1:
1316 num3 = 0;
1317 num6 = i * 2;
1318 num4 = 14 - i * 2;
1319 num5 = 0;
1320 break;
1321 case 2:
1322 num3 = 0;
1323 num6 = 16 - i * 2 - 2;
1324 num4 = 14 - i * 2;
1325 num5 = 0;
1326 break;
1327 case 3:
1328 num6 = i * 2;
1329 break;
1330 default:
1331 num6 = 16 - i * 2 - 2;
1332 break;
1333 }
1334 Main.spriteBatch.Draw(drawData.drawTexture, normalTilePosition + new Vector2(num6, i * num2 + num3), new Rectangle(drawData.tileFrameX + drawData.addFrX + num6, drawData.tileFrameY + drawData.addFrY + num5, num2, num4), drawData.finalColor, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
1335 }
1336 int num7 = ((num <= 2) ? 14 : 0);
1337 Main.spriteBatch.Draw(drawData.drawTexture, normalTilePosition + new Vector2(0f, num7), new Rectangle(drawData.tileFrameX + drawData.addFrX, drawData.tileFrameY + drawData.addFrY + num7, 16, 2), drawData.finalColor, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
1338 return;
1339 }
1340 if (!TileID.Sets.Platforms[drawData.typeCache] && !TileID.Sets.IgnoresNearbyHalfbricksWhenDrawn[drawData.typeCache] && _tileSolid[drawData.typeCache] && !TileID.Sets.NotReallySolid[drawData.typeCache] && !drawData.tileCache.halfBrick() && (Main.tile[tileX - 1, tileY].halfBrick() || Main.tile[tileX + 1, tileY].halfBrick()))
1341 {
1342 if (Main.tile[tileX - 1, tileY].halfBrick() && Main.tile[tileX + 1, tileY].halfBrick())
1343 {
1344 Main.spriteBatch.Draw(drawData.drawTexture, normalTilePosition + new Vector2(0f, 8f), new Rectangle(drawData.tileFrameX + drawData.addFrX, drawData.addFrY + drawData.tileFrameY + 8, drawData.tileWidth, 8), drawData.finalColor, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
1345 Rectangle value3 = new Rectangle(126 + drawData.addFrX, drawData.addFrY, 16, 8);
1346 if (Main.tile[tileX, tileY - 1].active() && !Main.tile[tileX, tileY - 1].bottomSlope() && Main.tile[tileX, tileY - 1].type == drawData.typeCache)
1347 {
1348 value3 = new Rectangle(90 + drawData.addFrX, drawData.addFrY, 16, 8);
1349 }
1350 Main.spriteBatch.Draw(drawData.drawTexture, normalTilePosition, value3, drawData.finalColor, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
1351 }
1352 else if (Main.tile[tileX - 1, tileY].halfBrick())
1353 {
1354 int num8 = 4;
1356 {
1357 num8 = 2;
1358 }
1359 Main.spriteBatch.Draw(drawData.drawTexture, normalTilePosition + new Vector2(0f, 8f), new Rectangle(drawData.tileFrameX + drawData.addFrX, drawData.addFrY + drawData.tileFrameY + 8, drawData.tileWidth, 8), drawData.finalColor, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
1360 Main.spriteBatch.Draw(drawData.drawTexture, normalTilePosition + new Vector2(num8, 0f), new Rectangle(drawData.tileFrameX + num8 + drawData.addFrX, drawData.addFrY + drawData.tileFrameY, drawData.tileWidth - num8, drawData.tileHeight), drawData.finalColor, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
1361 Main.spriteBatch.Draw(drawData.drawTexture, normalTilePosition, new Rectangle(144 + drawData.addFrX, drawData.addFrY, num8, 8), drawData.finalColor, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
1362 if (num8 == 2)
1363 {
1364 Main.spriteBatch.Draw(drawData.drawTexture, normalTilePosition, new Rectangle(148 + drawData.addFrX, drawData.addFrY, 2, 2), drawData.finalColor, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
1365 }
1366 }
1367 else if (Main.tile[tileX + 1, tileY].halfBrick())
1368 {
1369 int num9 = 4;
1371 {
1372 num9 = 2;
1373 }
1374 Main.spriteBatch.Draw(drawData.drawTexture, normalTilePosition + new Vector2(0f, 8f), new Rectangle(drawData.tileFrameX + drawData.addFrX, drawData.addFrY + drawData.tileFrameY + 8, drawData.tileWidth, 8), drawData.finalColor, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
1375 Main.spriteBatch.Draw(drawData.drawTexture, normalTilePosition, new Rectangle(drawData.tileFrameX + drawData.addFrX, drawData.addFrY + drawData.tileFrameY, drawData.tileWidth - num9, drawData.tileHeight), drawData.finalColor, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
1376 Main.spriteBatch.Draw(drawData.drawTexture, normalTilePosition + new Vector2(16 - num9, 0f), new Rectangle(144 + (16 - num9), 0, num9, 8), drawData.finalColor, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
1377 if (num9 == 2)
1378 {
1379 Main.spriteBatch.Draw(drawData.drawTexture, normalTilePosition + new Vector2(14f, 0f), new Rectangle(156, 0, 2, 2), drawData.finalColor, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
1380 }
1381 }
1382 return;
1383 }
1384 if (Lighting.NotRetro && _tileSolid[drawData.typeCache] && !drawData.tileCache.halfBrick() && !TileID.Sets.DontDrawTileSliced[drawData.tileCache.type])
1385 {
1387 return;
1388 }
1389 if (drawData.halfBrickHeight == 8 && (!Main.tile[tileX, tileY + 1].active() || !_tileSolid[Main.tile[tileX, tileY + 1].type] || Main.tile[tileX, tileY + 1].halfBrick()))
1390 {
1391 if (TileID.Sets.Platforms[drawData.typeCache])
1392 {
1393 Main.spriteBatch.Draw(drawData.drawTexture, normalTilePosition, normalTileRect, drawData.finalColor, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
1394 }
1395 else
1396 {
1397 Main.spriteBatch.Draw(drawData.drawTexture, normalTilePosition, normalTileRect.Modified(0, 0, 0, -4), drawData.finalColor, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
1398 Main.spriteBatch.Draw(drawData.drawTexture, normalTilePosition + new Vector2(0f, 4f), new Rectangle(144 + drawData.addFrX, 66 + drawData.addFrY, drawData.tileWidth, 4), drawData.finalColor, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
1399 }
1400 }
1401 else if (TileID.Sets.CritterCageLidStyle[drawData.typeCache] >= 0)
1402 {
1403 int num10 = TileID.Sets.CritterCageLidStyle[drawData.typeCache];
1404 if ((num10 < 3 && normalTileRect.Y % 54 == 0) || (num10 >= 3 && normalTileRect.Y % 36 == 0))
1405 {
1406 Vector2 position = normalTilePosition;
1407 position.Y += 8f;
1409 value4.Y += 8;
1410 value4.Height -= 8;
1411 Main.spriteBatch.Draw(drawData.drawTexture, position, value4, drawData.finalColor, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
1412 position = normalTilePosition;
1413 position.Y -= 2f;
1415 value4.Y = 0;
1416 value4.Height = 10;
1417 Main.spriteBatch.Draw(TextureAssets.CageTop[num10].Value, position, value4, drawData.finalColor, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
1418 }
1419 else
1420 {
1421 Main.spriteBatch.Draw(drawData.drawTexture, normalTilePosition, normalTileRect, drawData.finalColor, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
1422 }
1423 }
1424 else
1425 {
1426 Main.spriteBatch.Draw(drawData.drawTexture, normalTilePosition, normalTileRect, drawData.finalColor, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
1427 }
1429 }
1430
1431 private int GetPalmTreeBiome(int tileX, int tileY)
1432 {
1433 int i;
1434 for (i = tileY; Main.tile[tileX, i].active() && Main.tile[tileX, i].type == 323; i++)
1435 {
1436 }
1437 return GetPalmTreeVariant(tileX, i);
1438 }
1439
1440 private static int GetTreeBiome(int tileX, int tileY, int tileFrameX, int tileFrameY)
1441 {
1442 int num = tileX;
1443 int i = tileY;
1444 int type = Main.tile[num, i].type;
1445 if (tileFrameX == 66 && tileFrameY <= 45)
1446 {
1447 num++;
1448 }
1449 if (tileFrameX == 88 && tileFrameY >= 66 && tileFrameY <= 110)
1450 {
1451 num--;
1452 }
1453 if (tileFrameY >= 198)
1454 {
1455 switch (tileFrameX)
1456 {
1457 case 66:
1458 num--;
1459 break;
1460 case 44:
1461 num++;
1462 break;
1463 }
1464 }
1465 else if (tileFrameY >= 132)
1466 {
1467 switch (tileFrameX)
1468 {
1469 case 22:
1470 num--;
1471 break;
1472 case 44:
1473 num++;
1474 break;
1475 }
1476 }
1477 for (; Main.tile[num, i].active() && Main.tile[num, i].type == type; i++)
1478 {
1479 }
1480 return GetTreeVariant(num, i);
1481 }
1482
1483 public static int GetTreeVariant(int x, int y)
1484 {
1485 if (Main.tile[x, y] == null || !Main.tile[x, y].active())
1486 {
1487 return -1;
1488 }
1489 switch (Main.tile[x, y].type)
1490 {
1491 case 23:
1492 case 661:
1493 return 0;
1494 case 60:
1495 if (!((double)y > Main.worldSurface))
1496 {
1497 return 1;
1498 }
1499 return 5;
1500 case 70:
1501 return 6;
1502 case 109:
1503 case 492:
1504 return 2;
1505 case 147:
1506 return 3;
1507 case 199:
1508 case 662:
1509 return 4;
1510 default:
1511 return -1;
1512 }
1513 }
1514
1515 private TileFlameData GetTileFlameData(int tileX, int tileY, int type, int tileFrameY)
1516 {
1517 switch (type)
1518 {
1519 case 270:
1520 {
1522 tileFlameData.flameTexture = TextureAssets.FireflyJar.Value;
1523 tileFlameData.flameColor = new Color(200, 200, 200, 0);
1524 tileFlameData.flameCount = 1;
1525 return tileFlameData;
1526 }
1527 case 271:
1528 {
1530 tileFlameData.flameTexture = TextureAssets.LightningbugJar.Value;
1531 tileFlameData.flameColor = new Color(200, 200, 200, 0);
1532 tileFlameData.flameCount = 1;
1533 return tileFlameData;
1534 }
1535 case 581:
1536 {
1538 tileFlameData.flameTexture = TextureAssets.GlowMask[291].Value;
1539 tileFlameData.flameColor = new Color(200, 100, 100, 0);
1540 tileFlameData.flameCount = 1;
1541 return tileFlameData;
1542 }
1543 default:
1544 {
1545 if (!Main.tileFlame[type])
1546 {
1547 return default(TileFlameData);
1548 }
1549 ulong flameSeed = Main.TileFrameSeed ^ (ulong)(((long)tileX << 32) | (uint)tileY);
1550 int num = 0;
1551 switch (type)
1552 {
1553 case 4:
1554 num = 0;
1555 break;
1556 case 33:
1557 case 174:
1558 num = 1;
1559 break;
1560 case 100:
1561 case 173:
1562 num = 2;
1563 break;
1564 case 34:
1565 num = 3;
1566 break;
1567 case 93:
1568 num = 4;
1569 break;
1570 case 49:
1571 num = 5;
1572 break;
1573 case 372:
1574 num = 16;
1575 break;
1576 case 646:
1577 num = 17;
1578 break;
1579 case 98:
1580 num = 6;
1581 break;
1582 case 35:
1583 num = 7;
1584 break;
1585 case 42:
1586 num = 13;
1587 break;
1588 }
1590 tileFlameData.flameTexture = TextureAssets.Flames[num].Value;
1591 tileFlameData.flameSeed = flameSeed;
1593 switch (num)
1594 {
1595 case 7:
1596 result.flameCount = 4;
1597 result.flameColor = new Color(50, 50, 50, 0);
1598 result.flameRangeXMin = -10;
1599 result.flameRangeXMax = 11;
1600 result.flameRangeYMin = -10;
1601 result.flameRangeYMax = 10;
1602 result.flameRangeMultX = 0f;
1603 result.flameRangeMultY = 0f;
1604 break;
1605 case 1:
1606 switch (Main.tile[tileX, tileY].frameY / 22)
1607 {
1608 case 5:
1609 case 6:
1610 case 7:
1611 case 10:
1612 result.flameCount = 7;
1613 result.flameColor = new Color(50, 50, 50, 0);
1614 result.flameRangeXMin = -10;
1615 result.flameRangeXMax = 11;
1616 result.flameRangeYMin = -10;
1617 result.flameRangeYMax = 11;
1618 result.flameRangeMultX = 0.075f;
1619 result.flameRangeMultY = 0.075f;
1620 break;
1621 case 8:
1622 result.flameCount = 7;
1623 result.flameColor = new Color(50, 50, 50, 0);
1624 result.flameRangeXMin = -10;
1625 result.flameRangeXMax = 11;
1626 result.flameRangeYMin = -10;
1627 result.flameRangeYMax = 11;
1628 result.flameRangeMultX = 0.3f;
1629 result.flameRangeMultY = 0.3f;
1630 break;
1631 case 12:
1632 result.flameCount = 7;
1633 result.flameColor = new Color(50, 50, 50, 0);
1634 result.flameRangeXMin = -10;
1635 result.flameRangeXMax = 11;
1636 result.flameRangeYMin = -10;
1637 result.flameRangeYMax = 1;
1638 result.flameRangeMultX = 0.1f;
1639 result.flameRangeMultY = 0.15f;
1640 break;
1641 case 14:
1642 result.flameCount = 8;
1643 result.flameColor = new Color(75, 75, 75, 0);
1644 result.flameRangeXMin = -10;
1645 result.flameRangeXMax = 11;
1646 result.flameRangeYMin = -10;
1647 result.flameRangeYMax = 11;
1648 result.flameRangeMultX = 0.1f;
1649 result.flameRangeMultY = 0.1f;
1650 break;
1651 case 16:
1652 result.flameCount = 4;
1653 result.flameColor = new Color(75, 75, 75, 0);
1654 result.flameRangeXMin = -10;
1655 result.flameRangeXMax = 11;
1656 result.flameRangeYMin = -10;
1657 result.flameRangeYMax = 11;
1658 result.flameRangeMultX = 0.15f;
1659 result.flameRangeMultY = 0.15f;
1660 break;
1661 case 27:
1662 case 28:
1663 result.flameCount = 1;
1664 result.flameColor = new Color(75, 75, 75, 0);
1665 result.flameRangeXMin = -10;
1666 result.flameRangeXMax = 11;
1667 result.flameRangeYMin = -10;
1668 result.flameRangeYMax = 11;
1669 result.flameRangeMultX = 0f;
1670 result.flameRangeMultY = 0f;
1671 break;
1672 default:
1673 result.flameCount = 7;
1674 result.flameColor = new Color(100, 100, 100, 0);
1675 result.flameRangeXMin = -10;
1676 result.flameRangeXMax = 11;
1677 result.flameRangeYMin = -10;
1678 result.flameRangeYMax = 1;
1679 result.flameRangeMultX = 0.15f;
1680 result.flameRangeMultY = 0.35f;
1681 break;
1682 }
1683 break;
1684 case 2:
1685 switch (Main.tile[tileX, tileY].frameY / 36)
1686 {
1687 case 3:
1688 result.flameCount = 3;
1689 result.flameColor = new Color(50, 50, 50, 0);
1690 result.flameRangeXMin = -10;
1691 result.flameRangeXMax = 11;
1692 result.flameRangeYMin = -10;
1693 result.flameRangeYMax = 11;
1694 result.flameRangeMultX = 0.05f;
1695 result.flameRangeMultY = 0.15f;
1696 break;
1697 case 6:
1698 result.flameCount = 5;
1699 result.flameColor = new Color(75, 75, 75, 0);
1700 result.flameRangeXMin = -10;
1701 result.flameRangeXMax = 11;
1702 result.flameRangeYMin = -10;
1703 result.flameRangeYMax = 11;
1704 result.flameRangeMultX = 0.15f;
1705 result.flameRangeMultY = 0.15f;
1706 break;
1707 case 9:
1708 result.flameCount = 7;
1709 result.flameColor = new Color(100, 100, 100, 0);
1710 result.flameRangeXMin = -10;
1711 result.flameRangeXMax = 11;
1712 result.flameRangeYMin = -10;
1713 result.flameRangeYMax = 11;
1714 result.flameRangeMultX = 0.3f;
1715 result.flameRangeMultY = 0.3f;
1716 break;
1717 case 11:
1718 result.flameCount = 7;
1719 result.flameColor = new Color(50, 50, 50, 0);
1720 result.flameRangeXMin = -10;
1721 result.flameRangeXMax = 11;
1722 result.flameRangeYMin = -10;
1723 result.flameRangeYMax = 1;
1724 result.flameRangeMultX = 0.1f;
1725 result.flameRangeMultY = 0.15f;
1726 break;
1727 case 13:
1728 result.flameCount = 8;
1729 result.flameColor = new Color(75, 75, 75, 0);
1730 result.flameRangeXMin = -10;
1731 result.flameRangeXMax = 11;
1732 result.flameRangeYMin = -10;
1733 result.flameRangeYMax = 11;
1734 result.flameRangeMultX = 0.1f;
1735 result.flameRangeMultY = 0.1f;
1736 break;
1737 case 28:
1738 case 29:
1739 result.flameCount = 1;
1740 result.flameColor = new Color(75, 75, 75, 0);
1741 result.flameRangeXMin = -10;
1742 result.flameRangeXMax = 11;
1743 result.flameRangeYMin = -10;
1744 result.flameRangeYMax = 1;
1745 result.flameRangeMultX = 0f;
1746 result.flameRangeMultY = 0f;
1747 break;
1748 default:
1749 result.flameCount = 7;
1750 result.flameColor = new Color(100, 100, 100, 0);
1751 result.flameRangeXMin = -10;
1752 result.flameRangeXMax = 11;
1753 result.flameRangeYMin = -10;
1754 result.flameRangeYMax = 1;
1755 result.flameRangeMultX = 0.15f;
1756 result.flameRangeMultY = 0.35f;
1757 break;
1758 }
1759 break;
1760 case 3:
1761 switch (Main.tile[tileX, tileY].frameY / 54)
1762 {
1763 case 8:
1764 result.flameCount = 7;
1765 result.flameColor = new Color(50, 50, 50, 0);
1766 result.flameRangeXMin = -10;
1767 result.flameRangeXMax = 11;
1768 result.flameRangeYMin = -10;
1769 result.flameRangeYMax = 11;
1770 result.flameRangeMultX = 0.075f;
1771 result.flameRangeMultY = 0.075f;
1772 break;
1773 case 9:
1774 result.flameCount = 3;
1775 result.flameColor = new Color(50, 50, 50, 0);
1776 result.flameRangeXMin = -10;
1777 result.flameRangeXMax = 11;
1778 result.flameRangeYMin = -10;
1779 result.flameRangeYMax = 11;
1780 result.flameRangeMultX = 0.05f;
1781 result.flameRangeMultY = 0.15f;
1782 break;
1783 case 11:
1784 result.flameCount = 7;
1785 result.flameColor = new Color(50, 50, 50, 0);
1786 result.flameRangeXMin = -10;
1787 result.flameRangeXMax = 11;
1788 result.flameRangeYMin = -10;
1789 result.flameRangeYMax = 11;
1790 result.flameRangeMultX = 0.3f;
1791 result.flameRangeMultY = 0.3f;
1792 break;
1793 case 15:
1794 result.flameCount = 7;
1795 result.flameColor = new Color(50, 50, 50, 0);
1796 result.flameRangeXMin = -10;
1797 result.flameRangeXMax = 11;
1798 result.flameRangeYMin = -10;
1799 result.flameRangeYMax = 1;
1800 result.flameRangeMultX = 0.1f;
1801 result.flameRangeMultY = 0.15f;
1802 break;
1803 case 17:
1804 case 20:
1805 result.flameCount = 7;
1806 result.flameColor = new Color(50, 50, 50, 0);
1807 result.flameRangeXMin = -10;
1808 result.flameRangeXMax = 11;
1809 result.flameRangeYMin = -10;
1810 result.flameRangeYMax = 11;
1811 result.flameRangeMultX = 0.075f;
1812 result.flameRangeMultY = 0.075f;
1813 break;
1814 case 18:
1815 result.flameCount = 8;
1816 result.flameColor = new Color(75, 75, 75, 0);
1817 result.flameRangeXMin = -10;
1818 result.flameRangeXMax = 11;
1819 result.flameRangeYMin = -10;
1820 result.flameRangeYMax = 11;
1821 result.flameRangeMultX = 0.1f;
1822 result.flameRangeMultY = 0.1f;
1823 break;
1824 case 34:
1825 case 35:
1826 result.flameCount = 1;
1827 result.flameColor = new Color(75, 75, 75, 0);
1828 result.flameRangeXMin = -10;
1829 result.flameRangeXMax = 11;
1830 result.flameRangeYMin = -10;
1831 result.flameRangeYMax = 11;
1832 result.flameRangeMultX = 0f;
1833 result.flameRangeMultY = 0f;
1834 break;
1835 default:
1836 result.flameCount = 7;
1837 result.flameColor = new Color(100, 100, 100, 0);
1838 result.flameRangeXMin = -10;
1839 result.flameRangeXMax = 11;
1840 result.flameRangeYMin = -10;
1841 result.flameRangeYMax = 1;
1842 result.flameRangeMultX = 0.15f;
1843 result.flameRangeMultY = 0.35f;
1844 break;
1845 }
1846 break;
1847 case 4:
1848 switch (Main.tile[tileX, tileY].frameY / 54)
1849 {
1850 case 1:
1851 result.flameCount = 3;
1852 result.flameColor = new Color(50, 50, 50, 0);
1853 result.flameRangeXMin = -10;
1854 result.flameRangeXMax = 11;
1855 result.flameRangeYMin = -10;
1856 result.flameRangeYMax = 11;
1857 result.flameRangeMultX = 0.15f;
1858 result.flameRangeMultY = 0.15f;
1859 break;
1860 case 2:
1861 case 4:
1862 result.flameCount = 7;
1863 result.flameColor = new Color(50, 50, 50, 0);
1864 result.flameRangeXMin = -10;
1865 result.flameRangeXMax = 11;
1866 result.flameRangeYMin = -10;
1867 result.flameRangeYMax = 11;
1868 result.flameRangeMultX = 0.075f;
1869 result.flameRangeMultY = 0.075f;
1870 break;
1871 case 3:
1872 result.flameCount = 7;
1873 result.flameColor = new Color(100, 100, 100, 0);
1874 result.flameRangeXMin = -10;
1875 result.flameRangeXMax = 11;
1876 result.flameRangeYMin = -20;
1877 result.flameRangeYMax = 1;
1878 result.flameRangeMultX = 0.2f;
1879 result.flameRangeMultY = 0.35f;
1880 break;
1881 case 5:
1882 result.flameCount = 7;
1883 result.flameColor = new Color(50, 50, 50, 0);
1884 result.flameRangeXMin = -10;
1885 result.flameRangeXMax = 11;
1886 result.flameRangeYMin = -10;
1887 result.flameRangeYMax = 11;
1888 result.flameRangeMultX = 0.3f;
1889 result.flameRangeMultY = 0.3f;
1890 break;
1891 case 9:
1892 result.flameCount = 7;
1893 result.flameColor = new Color(50, 50, 50, 0);
1894 result.flameRangeXMin = -10;
1895 result.flameRangeXMax = 11;
1896 result.flameRangeYMin = -10;
1897 result.flameRangeYMax = 1;
1898 result.flameRangeMultX = 0.1f;
1899 result.flameRangeMultY = 0.15f;
1900 break;
1901 case 13:
1902 result.flameCount = 8;
1903 result.flameColor = new Color(50, 50, 50, 0);
1904 result.flameRangeXMin = -10;
1905 result.flameRangeXMax = 11;
1906 result.flameRangeYMin = -10;
1907 result.flameRangeYMax = 11;
1908 result.flameRangeMultX = 0.1f;
1909 result.flameRangeMultY = 0.1f;
1910 break;
1911 case 12:
1912 result.flameCount = 1;
1913 result.flameColor = new Color(100, 100, 100, 0);
1914 result.flameRangeXMin = -10;
1915 result.flameRangeXMax = 11;
1916 result.flameRangeYMin = -10;
1917 result.flameRangeYMax = 11;
1918 result.flameRangeMultX = 0.01f;
1919 result.flameRangeMultY = 0.01f;
1920 break;
1921 case 28:
1922 case 29:
1923 result.flameCount = 1;
1924 result.flameColor = new Color(75, 75, 75, 0);
1925 result.flameRangeXMin = -10;
1926 result.flameRangeXMax = 11;
1927 result.flameRangeYMin = -10;
1928 result.flameRangeYMax = 11;
1929 result.flameRangeMultX = 0f;
1930 result.flameRangeMultY = 0f;
1931 break;
1932 default:
1933 result.flameCount = 7;
1934 result.flameColor = new Color(100, 100, 100, 0);
1935 result.flameRangeXMin = -10;
1936 result.flameRangeXMax = 11;
1937 result.flameRangeYMin = -10;
1938 result.flameRangeYMax = 1;
1939 result.flameRangeMultX = 0.15f;
1940 result.flameRangeMultY = 0.35f;
1941 break;
1942 }
1943 break;
1944 case 13:
1945 switch (tileFrameY / 36)
1946 {
1947 case 1:
1948 case 3:
1949 case 6:
1950 case 8:
1951 case 19:
1952 case 27:
1953 case 29:
1954 case 30:
1955 case 31:
1956 case 32:
1957 case 36:
1958 case 39:
1959 result.flameCount = 7;
1960 result.flameColor = new Color(100, 100, 100, 0);
1961 result.flameRangeXMin = -10;
1962 result.flameRangeXMax = 11;
1963 result.flameRangeYMin = -10;
1964 result.flameRangeYMax = 1;
1965 result.flameRangeMultX = 0.15f;
1966 result.flameRangeMultY = 0.35f;
1967 break;
1968 case 2:
1969 case 16:
1970 case 25:
1971 result.flameCount = 7;
1972 result.flameColor = new Color(50, 50, 50, 0);
1973 result.flameRangeXMin = -10;
1974 result.flameRangeXMax = 11;
1975 result.flameRangeYMin = -10;
1976 result.flameRangeYMax = 1;
1977 result.flameRangeMultX = 0.15f;
1978 result.flameRangeMultY = 0.1f;
1979 break;
1980 case 11:
1981 result.flameCount = 7;
1982 result.flameColor = new Color(50, 50, 50, 0);
1983 result.flameRangeXMin = -10;
1984 result.flameRangeXMax = 11;
1985 result.flameRangeYMin = -10;
1986 result.flameRangeYMax = 11;
1987 result.flameRangeMultX = 0.075f;
1988 result.flameRangeMultY = 0.075f;
1989 break;
1990 case 34:
1991 case 35:
1992 result.flameCount = 1;
1993 result.flameColor = new Color(75, 75, 75, 0);
1994 result.flameRangeXMin = -10;
1995 result.flameRangeXMax = 11;
1996 result.flameRangeYMin = -10;
1997 result.flameRangeYMax = 1;
1998 result.flameRangeMultX = 0f;
1999 result.flameRangeMultY = 0f;
2000 break;
2001 case 44:
2002 result.flameCount = 7;
2003 result.flameColor = new Color(100, 100, 100, 0);
2004 result.flameRangeXMin = -10;
2005 result.flameRangeXMax = 11;
2006 result.flameRangeYMin = -10;
2007 result.flameRangeYMax = 1;
2008 result.flameRangeMultX = 0.15f;
2009 result.flameRangeMultY = 0.35f;
2010 break;
2011 default:
2012 result.flameCount = 0;
2013 break;
2014 }
2015 break;
2016 default:
2017 result.flameCount = 7;
2018 result.flameColor = new Color(100, 100, 100, 0);
2019 if (tileFrameY / 22 == 14)
2020 {
2021 result.flameColor = new Color((float)Main.DiscoR / 255f, (float)Main.DiscoG / 255f, (float)Main.DiscoB / 255f, 0f);
2022 }
2023 result.flameRangeXMin = -10;
2024 result.flameRangeXMax = 11;
2025 result.flameRangeYMin = -10;
2026 result.flameRangeYMax = 1;
2027 result.flameRangeMultX = 0.15f;
2028 result.flameRangeMultY = 0.35f;
2029 break;
2030 }
2031 return result;
2032 }
2033 }
2034 }
2035
2037 {
2038 if (drawData.typeCache == 548 && drawData.tileFrameX / 54 > 6)
2039 {
2040 Main.spriteBatch.Draw(TextureAssets.GlowMask[297].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f, tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + screenOffset, new Rectangle(drawData.tileFrameX + drawData.addFrX, drawData.tileFrameY + drawData.addFrY, drawData.tileWidth, drawData.tileHeight), Color.White, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2041 }
2042 if (drawData.typeCache == 613)
2043 {
2044 Main.spriteBatch.Draw(TextureAssets.GlowMask[298].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f, tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + screenOffset, new Rectangle(drawData.tileFrameX + drawData.addFrX, drawData.tileFrameY + drawData.addFrY, drawData.tileWidth, drawData.tileHeight), Color.White, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2045 }
2046 if (drawData.typeCache == 614)
2047 {
2048 Main.spriteBatch.Draw(TextureAssets.GlowMask[299].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f, tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + screenOffset, new Rectangle(drawData.tileFrameX + drawData.addFrX, drawData.tileFrameY + drawData.addFrY, drawData.tileWidth, drawData.tileHeight), Color.White, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2049 }
2050 if (drawData.typeCache == 593)
2051 {
2052 Main.spriteBatch.Draw(TextureAssets.GlowMask[295].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f, tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + screenOffset, new Rectangle(drawData.tileFrameX + drawData.addFrX, drawData.tileFrameY + drawData.addFrY, drawData.tileWidth, drawData.tileHeight), Color.White, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2053 }
2054 if (drawData.typeCache == 594)
2055 {
2056 Main.spriteBatch.Draw(TextureAssets.GlowMask[296].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f, tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + screenOffset, new Rectangle(drawData.tileFrameX + drawData.addFrX, drawData.tileFrameY + drawData.addFrY, drawData.tileWidth, drawData.tileHeight), Color.White, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2057 }
2058 if (drawData.typeCache == 215 && drawData.tileFrameY < 36)
2059 {
2060 int num = 15;
2061 Color color = new Color(255, 255, 255, 0);
2062 switch (drawData.tileFrameX / 54)
2063 {
2064 case 5:
2065 color = new Color((float)Main.DiscoR / 255f, (float)Main.DiscoG / 255f, (float)Main.DiscoB / 255f, 0f);
2066 break;
2067 case 14:
2068 color = new Color(50, 50, 100, 20);
2069 break;
2070 case 15:
2071 color = new Color(255, 255, 255, 200);
2072 break;
2073 }
2074 Main.spriteBatch.Draw(TextureAssets.Flames[num].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f, tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY + drawData.addFrY, drawData.tileWidth, drawData.tileHeight), color, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2075 }
2076 if (drawData.typeCache == 85)
2077 {
2079 if (graveyardVisualIntensity > 0f)
2080 {
2081 ulong num2 = Main.TileFrameSeed ^ (ulong)(((long)tileX << 32) | (uint)tileY);
2083 if (num2 == 0L)
2084 {
2085 num2 = tileFlameData.flameSeed;
2086 }
2087 tileFlameData.flameSeed = num2;
2088 Vector2 vector = new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f, tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + screenOffset;
2089 Rectangle value = new Rectangle(drawData.tileFrameX + drawData.addFrX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight);
2090 for (int i = 0; i < tileFlameData.flameCount; i++)
2091 {
2092 Color color2 = tileFlameData.flameColor * graveyardVisualIntensity;
2093 float x = (float)Utils.RandomInt(ref tileFlameData.flameSeed, tileFlameData.flameRangeXMin, tileFlameData.flameRangeXMax) * tileFlameData.flameRangeMultX;
2094 float y = (float)Utils.RandomInt(ref tileFlameData.flameSeed, tileFlameData.flameRangeYMin, tileFlameData.flameRangeYMax) * tileFlameData.flameRangeMultY;
2095 for (float num3 = 0f; num3 < 1f; num3 += 0.25f)
2096 {
2097 Main.spriteBatch.Draw(tileFlameData.flameTexture, vector + new Vector2(x, y) + Vector2.UnitX.RotatedBy(num3 * ((float)Math.PI * 2f)) * 2f, value, color2, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2098 }
2099 Main.spriteBatch.Draw(tileFlameData.flameTexture, vector, value, Color.White * graveyardVisualIntensity, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2100 }
2101 }
2102 }
2103 if (drawData.typeCache == 356 && Main.sundialCooldown == 0)
2104 {
2106 Rectangle value3 = new Rectangle(drawData.tileFrameX, drawData.tileFrameY + drawData.addFrY, drawData.tileWidth, drawData.tileHeight);
2107 Color color3 = new Color(100, 100, 100, 0);
2108 int num4 = tileX - drawData.tileFrameX / 18;
2109 int num5 = tileY - drawData.tileFrameY / 18;
2110 ulong seed = Main.TileFrameSeed ^ (ulong)(((long)num4 << 32) | (uint)num5);
2111 for (int j = 0; j < 7; j++)
2112 {
2113 float num6 = (float)Utils.RandomInt(ref seed, -10, 11) * 0.15f;
2114 float num7 = (float)Utils.RandomInt(ref seed, -10, 1) * 0.35f;
2115 Main.spriteBatch.Draw(value2, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + num6, (float)(tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + num7) + screenOffset, value3, color3, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2116 }
2117 }
2118 if (drawData.typeCache == 663 && Main.moondialCooldown == 0)
2119 {
2121 Rectangle value5 = new Rectangle(drawData.tileFrameX, drawData.tileFrameY + drawData.addFrY, drawData.tileWidth, drawData.tileHeight);
2122 value5.Y += 54 * Main.moonPhase;
2123 Main.spriteBatch.Draw(value4, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f, tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + screenOffset, value5, Color.White * ((float)(int)Main.mouseTextColor / 255f), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2124 }
2125 if (drawData.typeCache == 286)
2126 {
2127 Main.spriteBatch.Draw(TextureAssets.GlowSnail.Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f, tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + screenOffset, new Rectangle(drawData.tileFrameX + drawData.addFrX, drawData.tileFrameY + drawData.addFrY, drawData.tileWidth, drawData.tileHeight), new Color(75, 100, 255, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2128 }
2129 if (drawData.typeCache == 582)
2130 {
2131 Main.spriteBatch.Draw(TextureAssets.GlowMask[293].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f, tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + screenOffset, new Rectangle(drawData.tileFrameX + drawData.addFrX, drawData.tileFrameY + drawData.addFrY, drawData.tileWidth, drawData.tileHeight), new Color(200, 100, 100, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2132 }
2133 if (drawData.typeCache == 391)
2134 {
2135 Main.spriteBatch.Draw(TextureAssets.GlowMask[131].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f, tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + screenOffset, new Rectangle(drawData.tileFrameX + drawData.addFrX, drawData.tileFrameY + drawData.addFrY, drawData.tileWidth, drawData.tileHeight), new Color(250, 250, 250, 200), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2136 }
2137 if (drawData.typeCache == 619)
2138 {
2139 Main.spriteBatch.Draw(TextureAssets.GlowMask[300].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f, tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + screenOffset, new Rectangle(drawData.tileFrameX + drawData.addFrX, drawData.tileFrameY + drawData.addFrY, drawData.tileWidth, drawData.tileHeight), new Color(75, 100, 255, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2140 }
2141 if (drawData.typeCache == 270)
2142 {
2143 Main.spriteBatch.Draw(TextureAssets.FireflyJar.Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f, tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + screenOffset, new Rectangle(drawData.tileFrameX + drawData.addFrX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(200, 200, 200, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2144 }
2145 if (drawData.typeCache == 271)
2146 {
2147 Main.spriteBatch.Draw(TextureAssets.LightningbugJar.Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f, tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + screenOffset, new Rectangle(drawData.tileFrameX + drawData.addFrX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(200, 200, 200, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2148 }
2149 if (drawData.typeCache == 581)
2150 {
2151 Main.spriteBatch.Draw(TextureAssets.GlowMask[291].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f, tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + screenOffset, new Rectangle(drawData.tileFrameX + drawData.addFrX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(200, 200, 200, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2152 }
2153 if (drawData.typeCache == 316 || drawData.typeCache == 317 || drawData.typeCache == 318)
2154 {
2155 int num8 = tileX - drawData.tileFrameX / 18;
2156 int num9 = tileY - drawData.tileFrameY / 18;
2157 int num10 = num8 / 2 * (num9 / 3);
2159 Main.spriteBatch.Draw(TextureAssets.JellyfishBowl[drawData.typeCache - 316].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f, tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + screenOffset, new Rectangle(drawData.tileFrameX + drawData.addFrX, drawData.tileFrameY + Main.jellyfishCageFrame[drawData.typeCache - 316, num10] * 36, drawData.tileWidth, drawData.tileHeight), new Color(200, 200, 200, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2160 }
2161 if (drawData.typeCache == 149 && drawData.tileFrameX < 54)
2162 {
2163 Main.spriteBatch.Draw(TextureAssets.XmasLight.Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f, tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(200, 200, 200, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2164 }
2165 if (drawData.typeCache == 300 || drawData.typeCache == 302 || drawData.typeCache == 303 || drawData.typeCache == 306)
2166 {
2167 int num11 = 9;
2168 if (drawData.typeCache == 302)
2169 {
2170 num11 = 10;
2171 }
2172 if (drawData.typeCache == 303)
2173 {
2174 num11 = 11;
2175 }
2176 if (drawData.typeCache == 306)
2177 {
2178 num11 = 12;
2179 }
2180 Main.spriteBatch.Draw(TextureAssets.Flames[num11].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f, tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY + drawData.addFrY, drawData.tileWidth, drawData.tileHeight), new Color(200, 200, 200, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2181 }
2182 else if (Main.tileFlame[drawData.typeCache])
2183 {
2184 ulong seed2 = Main.TileFrameSeed ^ (ulong)(((long)tileX << 32) | (uint)tileY);
2185 int typeCache = drawData.typeCache;
2186 int num12 = 0;
2187 switch (typeCache)
2188 {
2189 case 4:
2190 num12 = 0;
2191 break;
2192 case 33:
2193 case 174:
2194 num12 = 1;
2195 break;
2196 case 100:
2197 case 173:
2198 num12 = 2;
2199 break;
2200 case 34:
2201 num12 = 3;
2202 break;
2203 case 93:
2204 num12 = 4;
2205 break;
2206 case 49:
2207 num12 = 5;
2208 break;
2209 case 372:
2210 num12 = 16;
2211 break;
2212 case 646:
2213 num12 = 17;
2214 break;
2215 case 98:
2216 num12 = 6;
2217 break;
2218 case 35:
2219 num12 = 7;
2220 break;
2221 case 42:
2222 num12 = 13;
2223 break;
2224 }
2225 switch (num12)
2226 {
2227 case 7:
2228 {
2229 for (int num92 = 0; num92 < 4; num92++)
2230 {
2231 float num93 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.15f;
2232 float num94 = (float)Utils.RandomInt(ref seed2, -10, 10) * 0.15f;
2233 num93 = 0f;
2234 num94 = 0f;
2235 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + num93, (float)(tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + num94) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(50, 50, 50, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2236 }
2237 break;
2238 }
2239 case 1:
2240 switch (Main.tile[tileX, tileY].frameY / 22)
2241 {
2242 case 5:
2243 case 6:
2244 case 7:
2245 case 10:
2246 {
2247 for (int num65 = 0; num65 < 7; num65++)
2248 {
2249 float num66 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.075f;
2250 float num67 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.075f;
2251 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + num66, (float)(tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + num67) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(50, 50, 50, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2252 }
2253 break;
2254 }
2255 case 8:
2256 {
2257 for (int num71 = 0; num71 < 7; num71++)
2258 {
2259 float num72 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.3f;
2260 float num73 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.3f;
2261 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + num72, (float)(tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + num73) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(50, 50, 50, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2262 }
2263 break;
2264 }
2265 case 12:
2266 {
2267 for (int num59 = 0; num59 < 7; num59++)
2268 {
2269 float num60 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.1f;
2270 float num61 = (float)Utils.RandomInt(ref seed2, -10, 1) * 0.15f;
2271 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + num60, (float)(tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + num61) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(50, 50, 50, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2272 }
2273 break;
2274 }
2275 case 14:
2276 {
2277 for (int num68 = 0; num68 < 8; num68++)
2278 {
2279 float num69 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.1f;
2280 float num70 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.1f;
2281 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + num69, (float)(tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + num70) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(75, 75, 75, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2282 }
2283 break;
2284 }
2285 case 16:
2286 {
2287 for (int num62 = 0; num62 < 4; num62++)
2288 {
2289 float num63 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.15f;
2290 float num64 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.15f;
2291 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + num63, (float)(tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + num64) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(75, 75, 75, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2292 }
2293 break;
2294 }
2295 case 27:
2296 case 28:
2297 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f, tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(75, 75, 75, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2298 break;
2299 default:
2300 {
2301 for (int num56 = 0; num56 < 7; num56++)
2302 {
2303 float num57 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.15f;
2304 float num58 = (float)Utils.RandomInt(ref seed2, -10, 1) * 0.35f;
2305 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + num57, (float)(tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + num58) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(100, 100, 100, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2306 }
2307 break;
2308 }
2309 }
2310 break;
2311 case 2:
2312 switch (Main.tile[tileX, tileY].frameY / 36)
2313 {
2314 case 3:
2315 {
2316 for (int num83 = 0; num83 < 3; num83++)
2317 {
2318 float num84 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.05f;
2319 float num85 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.15f;
2320 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + num84, (float)(tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + num85) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(50, 50, 50, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2321 }
2322 break;
2323 }
2324 case 6:
2325 {
2326 for (int num89 = 0; num89 < 5; num89++)
2327 {
2328 float num90 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.15f;
2329 float num91 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.15f;
2330 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + num90, (float)(tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + num91) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(75, 75, 75, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2331 }
2332 break;
2333 }
2334 case 9:
2335 {
2336 for (int num77 = 0; num77 < 7; num77++)
2337 {
2338 float num78 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.3f;
2339 float num79 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.3f;
2340 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + num78, (float)(tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + num79) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(100, 100, 100, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2341 }
2342 break;
2343 }
2344 case 11:
2345 {
2346 for (int num86 = 0; num86 < 7; num86++)
2347 {
2348 float num87 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.1f;
2349 float num88 = (float)Utils.RandomInt(ref seed2, -10, 1) * 0.15f;
2350 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + num87, (float)(tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + num88) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(50, 50, 50, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2351 }
2352 break;
2353 }
2354 case 13:
2355 {
2356 for (int num80 = 0; num80 < 8; num80++)
2357 {
2358 float num81 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.1f;
2359 float num82 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.1f;
2360 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + num81, (float)(tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + num82) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(75, 75, 75, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2361 }
2362 break;
2363 }
2364 case 28:
2365 case 29:
2366 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f, tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(75, 75, 75, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2367 break;
2368 default:
2369 {
2370 for (int num74 = 0; num74 < 7; num74++)
2371 {
2372 float num75 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.15f;
2373 float num76 = (float)Utils.RandomInt(ref seed2, -10, 1) * 0.35f;
2374 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + num75, (float)(tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + num76) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(100, 100, 100, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2375 }
2376 break;
2377 }
2378 }
2379 break;
2380 case 3:
2381 switch (Main.tile[tileX, tileY].frameY / 54)
2382 {
2383 case 8:
2384 {
2385 for (int num27 = 0; num27 < 7; num27++)
2386 {
2387 float num28 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.075f;
2388 float num29 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.075f;
2389 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + num28, (float)(tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + num29) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(50, 50, 50, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2390 }
2391 break;
2392 }
2393 case 9:
2394 {
2395 for (int m = 0; m < 3; m++)
2396 {
2397 float num17 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.05f;
2398 float num18 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.15f;
2399 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + num17, (float)(tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + num18) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(50, 50, 50, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2400 }
2401 break;
2402 }
2403 case 11:
2404 {
2405 for (int num21 = 0; num21 < 7; num21++)
2406 {
2407 float num22 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.3f;
2408 float num23 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.3f;
2409 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + num22, (float)(tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + num23) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(50, 50, 50, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2410 }
2411 break;
2412 }
2413 case 15:
2414 {
2415 for (int num30 = 0; num30 < 7; num30++)
2416 {
2417 float num31 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.1f;
2418 float num32 = (float)Utils.RandomInt(ref seed2, -10, 1) * 0.15f;
2419 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + num31, (float)(tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + num32) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(50, 50, 50, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2420 }
2421 break;
2422 }
2423 case 17:
2424 case 20:
2425 {
2426 for (int num24 = 0; num24 < 7; num24++)
2427 {
2428 float num25 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.075f;
2429 float num26 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.075f;
2430 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + num25, (float)(tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + num26) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(50, 50, 50, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2431 }
2432 break;
2433 }
2434 case 18:
2435 {
2436 for (int n = 0; n < 8; n++)
2437 {
2438 float num19 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.1f;
2439 float num20 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.1f;
2440 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + num19, (float)(tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + num20) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(75, 75, 75, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2441 }
2442 break;
2443 }
2444 case 34:
2445 case 35:
2446 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f, tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(75, 75, 75, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2447 break;
2448 default:
2449 {
2450 for (int l = 0; l < 7; l++)
2451 {
2452 float num15 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.15f;
2453 float num16 = (float)Utils.RandomInt(ref seed2, -10, 1) * 0.35f;
2454 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + num15, (float)(tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + num16) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(100, 100, 100, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2455 }
2456 break;
2457 }
2458 }
2459 break;
2460 case 4:
2461 switch (Main.tile[tileX, tileY].frameY / 54)
2462 {
2463 case 1:
2464 {
2465 for (int num50 = 0; num50 < 3; num50++)
2466 {
2467 float num51 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.15f;
2468 float num52 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.15f;
2469 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + num51, (float)(tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + num52) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(50, 50, 50, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2470 }
2471 break;
2472 }
2473 case 2:
2474 case 4:
2475 {
2476 for (int num36 = 0; num36 < 7; num36++)
2477 {
2478 float num37 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.075f;
2479 float num38 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.075f;
2480 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + num37, (float)(tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + num38) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(50, 50, 50, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2481 }
2482 break;
2483 }
2484 case 3:
2485 {
2486 for (int num44 = 0; num44 < 7; num44++)
2487 {
2488 float num45 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.2f;
2489 float num46 = (float)Utils.RandomInt(ref seed2, -20, 1) * 0.35f;
2490 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + num45, (float)(tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + num46) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(100, 100, 100, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2491 }
2492 break;
2493 }
2494 case 5:
2495 {
2496 for (int num53 = 0; num53 < 7; num53++)
2497 {
2498 float num54 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.3f;
2499 float num55 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.3f;
2500 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + num54, (float)(tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + num55) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(50, 50, 50, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2501 }
2502 break;
2503 }
2504 case 9:
2505 {
2506 for (int num47 = 0; num47 < 7; num47++)
2507 {
2508 float num48 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.1f;
2509 float num49 = (float)Utils.RandomInt(ref seed2, -10, 1) * 0.15f;
2510 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + num48, (float)(tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + num49) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(50, 50, 50, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2511 }
2512 break;
2513 }
2514 case 13:
2515 {
2516 for (int num41 = 0; num41 < 8; num41++)
2517 {
2518 float num42 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.1f;
2519 float num43 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.1f;
2520 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + num42, (float)(tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + num43) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(75, 75, 75, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2521 }
2522 break;
2523 }
2524 case 12:
2525 {
2526 float num39 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.01f;
2527 float num40 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.01f;
2528 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + num39, (float)(tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + num40) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(Utils.RandomInt(ref seed2, 90, 111), Utils.RandomInt(ref seed2, 90, 111), Utils.RandomInt(ref seed2, 90, 111), 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2529 break;
2530 }
2531 case 28:
2532 case 29:
2533 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f, tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(75, 75, 75, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2534 break;
2535 default:
2536 {
2537 for (int num33 = 0; num33 < 7; num33++)
2538 {
2539 float num34 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.15f;
2540 float num35 = (float)Utils.RandomInt(ref seed2, -10, 1) * 0.35f;
2541 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + num34, (float)(tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + num35) + screenOffset, new Rectangle(drawData.tileFrameX + drawData.addFrX, drawData.tileFrameY + drawData.addFrY, drawData.tileWidth, drawData.tileHeight), new Color(100, 100, 100, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2542 }
2543 break;
2544 }
2545 }
2546 break;
2547 case 13:
2548 {
2549 int num95 = drawData.tileFrameY / 36;
2550 switch (num95)
2551 {
2552 case 1:
2553 case 3:
2554 case 6:
2555 case 8:
2556 case 19:
2557 case 27:
2558 case 29:
2559 case 30:
2560 case 31:
2561 case 32:
2562 case 36:
2563 case 39:
2564 {
2565 for (int num102 = 0; num102 < 7; num102++)
2566 {
2567 float num103 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.15f;
2568 float num104 = (float)Utils.RandomInt(ref seed2, -10, 1) * 0.35f;
2569 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + num103, (float)(tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + num104) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(100, 100, 100, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2570 }
2571 break;
2572 }
2573 case 2:
2574 case 16:
2575 case 25:
2576 {
2577 for (int num99 = 0; num99 < 7; num99++)
2578 {
2579 float num100 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.15f;
2580 float num101 = (float)Utils.RandomInt(ref seed2, -10, 1) * 0.1f;
2581 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + num100, (float)(tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + num101) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(50, 50, 50, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2582 }
2583 break;
2584 }
2585 default:
2586 switch (num95)
2587 {
2588 case 29:
2589 {
2590 for (int num96 = 0; num96 < 7; num96++)
2591 {
2592 float num97 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.15f;
2593 float num98 = (float)Utils.RandomInt(ref seed2, -10, 1) * 0.15f;
2594 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + num97, (float)(tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + num98) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(25, 25, 25, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2595 }
2596 break;
2597 }
2598 case 34:
2599 case 35:
2600 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f, tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(75, 75, 75, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2601 break;
2602 }
2603 break;
2604 }
2605 break;
2606 }
2607 default:
2608 {
2609 Color color4 = new Color(100, 100, 100, 0);
2610 if (drawData.tileCache.type == 4)
2611 {
2612 switch (drawData.tileCache.frameY / 22)
2613 {
2614 case 14:
2615 color4 = new Color((float)Main.DiscoR / 255f, (float)Main.DiscoG / 255f, (float)Main.DiscoB / 255f, 0f);
2616 break;
2617 case 22:
2618 color4 = new Color(50, 50, 100, 20);
2619 break;
2620 case 23:
2621 color4 = new Color(255, 255, 255, 200);
2622 break;
2623 }
2624 }
2625 if (drawData.tileCache.type == 646)
2626 {
2627 color4 = new Color(100, 100, 100, 150);
2628 }
2629 for (int k = 0; k < 7; k++)
2630 {
2631 float num13 = (float)Utils.RandomInt(ref seed2, -10, 11) * 0.15f;
2632 float num14 = (float)Utils.RandomInt(ref seed2, -10, 1) * 0.35f;
2633 Main.spriteBatch.Draw(TextureAssets.Flames[num12].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f + num13, (float)(tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + num14) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), color4, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2634 }
2635 break;
2636 }
2637 }
2638 }
2639 if (drawData.typeCache == 144)
2640 {
2641 Main.spriteBatch.Draw(TextureAssets.Timer.Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f, tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(200, 200, 200, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2642 }
2643 if (drawData.typeCache == 237)
2644 {
2645 Main.spriteBatch.Draw(TextureAssets.SunAltar.Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f, tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + screenOffset, new Rectangle(drawData.tileFrameX, drawData.tileFrameY, drawData.tileWidth, drawData.tileHeight), new Color(Main.mouseTextColor / 2, Main.mouseTextColor / 2, Main.mouseTextColor / 2, 0), 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2646 }
2647 if (drawData.typeCache != 658 || drawData.tileFrameX % 36 != 0 || drawData.tileFrameY % 54 != 0)
2648 {
2649 return;
2650 }
2651 int num105 = drawData.tileFrameY / 54;
2652 if (num105 != 2)
2653 {
2655 Vector2 vector2 = new Vector2(0f, -10f);
2656 Vector2 position = new Vector2((float)(tileX * 16 - (int)screenPosition.X) - (float)drawData.tileWidth / 2f, tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + screenOffset + vector2;
2657 Rectangle value7 = value6.Frame();
2659 if (num105 == 0)
2660 {
2661 color5 *= 0.75f;
2662 }
2663 Main.spriteBatch.Draw(value6, position, value7, color5, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2664 }
2665 }
2666
2667 private int GetPalmTreeVariant(int x, int y)
2668 {
2669 int num = -1;
2670 if (Main.tile[x, y].active() && Main.tile[x, y].type == 53)
2671 {
2672 num = 0;
2673 }
2674 if (Main.tile[x, y].active() && Main.tile[x, y].type == 234)
2675 {
2676 num = 1;
2677 }
2678 if (Main.tile[x, y].active() && Main.tile[x, y].type == 116)
2679 {
2680 num = 2;
2681 }
2682 if (Main.tile[x, y].active() && Main.tile[x, y].type == 112)
2683 {
2684 num = 3;
2685 }
2687 {
2688 num += 4;
2689 }
2690 return num;
2691 }
2692
2694 {
2695 Color color = default(Color);
2696 Vector2 origin = default(Vector2);
2697 Rectangle value = default(Rectangle);
2698 Vector3 tileLight = default(Vector3);
2699 Vector2 position = default(Vector2);
2701 {
2702 Vector3[] slices = drawData.colorSlices;
2704 Vector3 vector = drawData.tileLight.ToVector3();
2705 Vector3 tint = drawData.colorTint.ToVector3();
2706 if (drawData.tileCache.fullbrightBlock())
2707 {
2709 }
2710 for (int i = 0; i < 9; i++)
2711 {
2712 value.X = 0;
2713 value.Y = 0;
2714 value.Width = 4;
2715 value.Height = 4;
2716 switch (i)
2717 {
2718 case 1:
2719 value.Width = 8;
2720 value.X = 4;
2721 break;
2722 case 2:
2723 value.X = 12;
2724 break;
2725 case 3:
2726 value.Height = 8;
2727 value.Y = 4;
2728 break;
2729 case 4:
2730 value.Width = 8;
2731 value.Height = 8;
2732 value.X = 4;
2733 value.Y = 4;
2734 break;
2735 case 5:
2736 value.X = 12;
2737 value.Y = 4;
2738 value.Height = 8;
2739 break;
2740 case 6:
2741 value.Y = 12;
2742 break;
2743 case 7:
2744 value.Width = 8;
2745 value.Height = 4;
2746 value.X = 4;
2747 value.Y = 12;
2748 break;
2749 case 8:
2750 value.X = 12;
2751 value.Y = 12;
2752 break;
2753 }
2754 tileLight.X = (slices[i].X + vector.X) * 0.5f;
2755 tileLight.Y = (slices[i].Y + vector.Y) * 0.5f;
2756 tileLight.Z = (slices[i].Z + vector.Z) * 0.5f;
2757 GetFinalLight(drawData.tileCache, drawData.typeCache, ref tileLight, ref tint);
2758 position.X = normalTilePosition.X + (float)value.X;
2759 position.Y = normalTilePosition.Y + (float)value.Y;
2760 value.X += drawData.tileFrameX + drawData.addFrX;
2761 value.Y += drawData.tileFrameY + drawData.addFrY;
2762 int num = (int)(tileLight.X * 255f);
2763 int num2 = (int)(tileLight.Y * 255f);
2764 int num3 = (int)(tileLight.Z * 255f);
2765 if (num > 255)
2766 {
2767 num = 255;
2768 }
2769 if (num2 > 255)
2770 {
2771 num2 = 255;
2772 }
2773 if (num3 > 255)
2774 {
2775 num3 = 255;
2776 }
2777 num3 <<= 16;
2778 num2 <<= 8;
2779 color.PackedValue = (uint)(num | num2 | num3) | 0xFF000000u;
2780 Main.spriteBatch.Draw(drawData.drawTexture, position, value, color, 0f, origin, 1f, drawData.tileSpriteEffect, 0f);
2781 }
2782 }
2784 {
2785 Vector3[] slices2 = drawData.colorSlices;
2787 Vector3 vector2 = drawData.tileLight.ToVector3();
2788 Vector3 tint2 = drawData.colorTint.ToVector3();
2789 if (drawData.tileCache.fullbrightBlock())
2790 {
2792 }
2793 value.Width = 8;
2794 value.Height = 8;
2795 for (int j = 0; j < 4; j++)
2796 {
2797 value.X = 0;
2798 value.Y = 0;
2799 switch (j)
2800 {
2801 case 1:
2802 value.X = 8;
2803 break;
2804 case 2:
2805 value.Y = 8;
2806 break;
2807 case 3:
2808 value.X = 8;
2809 value.Y = 8;
2810 break;
2811 }
2812 tileLight.X = (slices2[j].X + vector2.X) * 0.5f;
2813 tileLight.Y = (slices2[j].Y + vector2.Y) * 0.5f;
2814 tileLight.Z = (slices2[j].Z + vector2.Z) * 0.5f;
2815 GetFinalLight(drawData.tileCache, drawData.typeCache, ref tileLight, ref tint2);
2816 position.X = normalTilePosition.X + (float)value.X;
2817 position.Y = normalTilePosition.Y + (float)value.Y;
2818 value.X += drawData.tileFrameX + drawData.addFrX;
2819 value.Y += drawData.tileFrameY + drawData.addFrY;
2820 int num4 = (int)(tileLight.X * 255f);
2821 int num5 = (int)(tileLight.Y * 255f);
2822 int num6 = (int)(tileLight.Z * 255f);
2823 if (num4 > 255)
2824 {
2825 num4 = 255;
2826 }
2827 if (num5 > 255)
2828 {
2829 num5 = 255;
2830 }
2831 if (num6 > 255)
2832 {
2833 num6 = 255;
2834 }
2835 num6 <<= 16;
2836 num5 <<= 8;
2837 color.PackedValue = (uint)(num4 | num5 | num6) | 0xFF000000u;
2838 Main.spriteBatch.Draw(drawData.drawTexture, position, value, color, 0f, origin, 1f, drawData.tileSpriteEffect, 0f);
2839 }
2840 }
2841 else
2842 {
2843 Main.spriteBatch.Draw(drawData.drawTexture, normalTilePosition, new Rectangle(drawData.tileFrameX + drawData.addFrX, drawData.tileFrameY + drawData.addFrY, drawData.tileWidth, drawData.tileHeight), drawData.finalColor, 0f, _zero, 1f, drawData.tileSpriteEffect, 0f);
2844 }
2845 }
2846
2847 private void DrawXmasTree(Vector2 screenPosition, Vector2 screenOffset, int tileX, int tileY, TileDrawInfo drawData)
2848 {
2849 if (tileY - drawData.tileFrameY > 0 && drawData.tileFrameY == 7 && Main.tile[tileX, tileY - drawData.tileFrameY] != null)
2850 {
2851 drawData.tileTop -= 16 * drawData.tileFrameY;
2852 drawData.tileFrameX = Main.tile[tileX, tileY - drawData.tileFrameY].frameX;
2853 drawData.tileFrameY = Main.tile[tileX, tileY - drawData.tileFrameY].frameY;
2854 }
2855 if (drawData.tileFrameX < 10)
2856 {
2857 return;
2858 }
2859 int num = 0;
2860 if ((drawData.tileFrameY & 1) == 1)
2861 {
2862 num++;
2863 }
2864 if ((drawData.tileFrameY & 2) == 2)
2865 {
2866 num += 2;
2867 }
2868 if ((drawData.tileFrameY & 4) == 4)
2869 {
2870 num += 4;
2871 }
2872 int num2 = 0;
2873 if ((drawData.tileFrameY & 8) == 8)
2874 {
2875 num2++;
2876 }
2877 if ((drawData.tileFrameY & 0x10) == 16)
2878 {
2879 num2 += 2;
2880 }
2881 if ((drawData.tileFrameY & 0x20) == 32)
2882 {
2883 num2 += 4;
2884 }
2885 int num3 = 0;
2886 if ((drawData.tileFrameY & 0x40) == 64)
2887 {
2888 num3++;
2889 }
2890 if ((drawData.tileFrameY & 0x80) == 128)
2891 {
2892 num3 += 2;
2893 }
2894 if ((drawData.tileFrameY & 0x100) == 256)
2895 {
2896 num3 += 4;
2897 }
2898 if ((drawData.tileFrameY & 0x200) == 512)
2899 {
2900 num3 += 8;
2901 }
2902 int num4 = 0;
2903 if ((drawData.tileFrameY & 0x400) == 1024)
2904 {
2905 num4++;
2906 }
2907 if ((drawData.tileFrameY & 0x800) == 2048)
2908 {
2909 num4 += 2;
2910 }
2911 if ((drawData.tileFrameY & 0x1000) == 4096)
2912 {
2913 num4 += 4;
2914 }
2915 if ((drawData.tileFrameY & 0x2000) == 8192)
2916 {
2917 num4 += 8;
2918 }
2919 Color color = Lighting.GetColor(tileX + 1, tileY - 3);
2920 Main.spriteBatch.Draw(TextureAssets.XmasTree[0].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f, tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + screenOffset, new Rectangle(0, 0, 64, 128), color, 0f, _zero, 1f, SpriteEffects.None, 0f);
2921 if (num > 0)
2922 {
2923 num--;
2924 Color color2 = color;
2925 if (num != 3)
2926 {
2927 color2 = new Color(255, 255, 255, 255);
2928 }
2929 Main.spriteBatch.Draw(TextureAssets.XmasTree[3].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f, tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + screenOffset, new Rectangle(66 * num, 0, 64, 128), color2, 0f, _zero, 1f, SpriteEffects.None, 0f);
2930 }
2931 if (num2 > 0)
2932 {
2933 num2--;
2934 Main.spriteBatch.Draw(TextureAssets.XmasTree[1].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f, tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + screenOffset, new Rectangle(66 * num2, 0, 64, 128), color, 0f, _zero, 1f, SpriteEffects.None, 0f);
2935 }
2936 if (num3 > 0)
2937 {
2938 num3--;
2939 Main.spriteBatch.Draw(TextureAssets.XmasTree[2].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f, tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + screenOffset, new Rectangle(66 * num3, 0, 64, 128), color, 0f, _zero, 1f, SpriteEffects.None, 0f);
2940 }
2941 if (num4 > 0)
2942 {
2943 num4--;
2944 Main.spriteBatch.Draw(TextureAssets.XmasTree[4].Value, new Vector2((float)(tileX * 16 - (int)screenPosition.X) - ((float)drawData.tileWidth - 16f) / 2f, tileY * 16 - (int)screenPosition.Y + drawData.tileTop) + screenOffset, new Rectangle(66 * num4, 130 * Main.tileFrame[171], 64, 128), new Color(255, 255, 255, 255), 0f, _zero, 1f, SpriteEffects.None, 0f);
2945 }
2946 }
2947
2949 {
2950 drawData.tileLight = GetFinalLight(drawData.tileCache, drawData.typeCache, drawData.tileLight, drawData.colorTint);
2951 Minecart.TrackColors(tileX, tileY, drawData.tileCache, out var frontColor, out var backColor);
2952 drawData.drawTexture = GetTileDrawTexture(drawData.tileCache, tileX, tileY, frontColor);
2954 if (WorldGen.IsRope(tileX, tileY) && Main.tile[tileX, tileY - 1] != null)
2955 {
2956 _ = Main.tile[tileX, tileY - 1].type;
2957 int y = (tileY + tileX) % 3 * 18;
2959 Main.spriteBatch.Draw(tileDrawTexture2, new Vector2(tileX * 16 - (int)screenPosition.X, tileY * 16 - (int)screenPosition.Y) + screenOffset, new Rectangle(90, y, 16, 16), drawData.tileLight, 0f, default(Vector2), 1f, drawData.tileSpriteEffect, 0f);
2960 }
2961 drawData.tileCache.frameNumber();
2962 if (drawData.tileFrameY != -1)
2963 {
2964 Main.spriteBatch.Draw(tileDrawTexture, new Vector2(tileX * 16 - (int)screenPosition.X, tileY * 16 - (int)screenPosition.Y) + screenOffset, Minecart.GetSourceRect(drawData.tileFrameY, Main.tileFrame[314]), drawData.tileLight, 0f, default(Vector2), 1f, drawData.tileSpriteEffect, 0f);
2965 }
2966 Main.spriteBatch.Draw(drawData.drawTexture, new Vector2(tileX * 16 - (int)screenPosition.X, tileY * 16 - (int)screenPosition.Y) + screenOffset, Minecart.GetSourceRect(drawData.tileFrameX, Main.tileFrame[314]), drawData.tileLight, 0f, default(Vector2), 1f, drawData.tileSpriteEffect, 0f);
2967 if (Minecart.DrawLeftDecoration(drawData.tileFrameY))
2968 {
2969 Main.spriteBatch.Draw(tileDrawTexture, new Vector2(tileX * 16 - (int)screenPosition.X, (tileY + 1) * 16 - (int)screenPosition.Y) + screenOffset, Minecart.GetSourceRect(36), drawData.tileLight, 0f, default(Vector2), 1f, drawData.tileSpriteEffect, 0f);
2970 }
2971 if (Minecart.DrawLeftDecoration(drawData.tileFrameX))
2972 {
2973 Main.spriteBatch.Draw(drawData.drawTexture, new Vector2(tileX * 16 - (int)screenPosition.X, (tileY + 1) * 16 - (int)screenPosition.Y) + screenOffset, Minecart.GetSourceRect(36), drawData.tileLight, 0f, default(Vector2), 1f, drawData.tileSpriteEffect, 0f);
2974 }
2975 if (Minecart.DrawRightDecoration(drawData.tileFrameY))
2976 {
2977 Main.spriteBatch.Draw(tileDrawTexture, new Vector2(tileX * 16 - (int)screenPosition.X, (tileY + 1) * 16 - (int)screenPosition.Y) + screenOffset, Minecart.GetSourceRect(37, Main.tileFrame[314]), drawData.tileLight, 0f, default(Vector2), 1f, drawData.tileSpriteEffect, 0f);
2978 }
2979 if (Minecart.DrawRightDecoration(drawData.tileFrameX))
2980 {
2981 Main.spriteBatch.Draw(drawData.drawTexture, new Vector2(tileX * 16 - (int)screenPosition.X, (tileY + 1) * 16 - (int)screenPosition.Y) + screenOffset, Minecart.GetSourceRect(37), drawData.tileLight, 0f, default(Vector2), 1f, drawData.tileSpriteEffect, 0f);
2982 }
2983 if (Minecart.DrawBumper(drawData.tileFrameX))
2984 {
2985 Main.spriteBatch.Draw(drawData.drawTexture, new Vector2(tileX * 16 - (int)screenPosition.X, (tileY - 1) * 16 - (int)screenPosition.Y) + screenOffset, Minecart.GetSourceRect(39), drawData.tileLight, 0f, default(Vector2), 1f, drawData.tileSpriteEffect, 0f);
2986 }
2987 else if (Minecart.DrawBouncyBumper(drawData.tileFrameX))
2988 {
2989 Main.spriteBatch.Draw(drawData.drawTexture, new Vector2(tileX * 16 - (int)screenPosition.X, (tileY - 1) * 16 - (int)screenPosition.Y) + screenOffset, Minecart.GetSourceRect(38), drawData.tileLight, 0f, default(Vector2), 1f, drawData.tileSpriteEffect, 0f);
2990 }
2991 }
2992
2993 private void DrawTile_LiquidBehindTile(bool solidLayer, bool inFrontOfPlayers, int waterStyleOverride, Vector2 screenPosition, Vector2 screenOffset, int tileX, int tileY, Tile tileCache)
2994 {
2995 Tile tile = Main.tile[tileX + 1, tileY];
2996 Tile tile2 = Main.tile[tileX - 1, tileY];
2997 Tile tile3 = Main.tile[tileX, tileY - 1];
2998 Tile tile4 = Main.tile[tileX, tileY + 1];
2999 if (tile == null)
3000 {
3001 tile = new Tile();
3002 Main.tile[tileX + 1, tileY] = tile;
3003 }
3004 if (tile2 == null)
3005 {
3006 tile2 = new Tile();
3007 Main.tile[tileX - 1, tileY] = tile2;
3008 }
3009 if (tile3 == null)
3010 {
3011 tile3 = new Tile();
3012 Main.tile[tileX, tileY - 1] = tile3;
3013 }
3014 if (tile4 == null)
3015 {
3016 tile4 = new Tile();
3017 Main.tile[tileX, tileY + 1] = tile4;
3018 }
3019 if (!tileCache.active() || tileCache.inActive() || _tileSolidTop[tileCache.type] || (tileCache.halfBrick() && (tile2.liquid > 160 || tile.liquid > 160) && Main.instance.waterfallManager.CheckForWaterfall(tileX, tileY)) || (TileID.Sets.BlocksWaterDrawingBehindSelf[tileCache.type] && tileCache.slope() == 0))
3020 {
3021 return;
3022 }
3023 int num = 0;
3024 bool flag = false;
3025 bool flag2 = false;
3026 bool flag3 = false;
3027 bool flag4 = false;
3028 bool flag5 = false;
3029 int num2 = 0;
3030 bool flag6 = false;
3031 int num3 = tileCache.slope();
3032 int num4 = tileCache.blockType();
3033 if (tileCache.type == 546 && tileCache.liquid > 0)
3034 {
3035 flag5 = true;
3036 flag4 = true;
3037 flag = true;
3038 flag2 = true;
3039 switch (tileCache.liquidType())
3040 {
3041 case 0:
3042 flag6 = true;
3043 break;
3044 case 1:
3045 num2 = 1;
3046 break;
3047 case 2:
3048 num2 = 11;
3049 break;
3050 case 3:
3051 num2 = 14;
3052 break;
3053 }
3054 num = tileCache.liquid;
3055 }
3056 else
3057 {
3058 if (tileCache.liquid > 0 && num4 != 0 && (num4 != 1 || tileCache.liquid > 160))
3059 {
3060 flag5 = true;
3061 switch (tileCache.liquidType())
3062 {
3063 case 0:
3064 flag6 = true;
3065 break;
3066 case 1:
3067 num2 = 1;
3068 break;
3069 case 2:
3070 num2 = 11;
3071 break;
3072 case 3:
3073 num2 = 14;
3074 break;
3075 }
3076 if (tileCache.liquid > num)
3077 {
3078 num = tileCache.liquid;
3079 }
3080 }
3081 if (tile2.liquid > 0 && num3 != 1 && num3 != 3)
3082 {
3083 flag = true;
3084 switch (tile2.liquidType())
3085 {
3086 case 0:
3087 flag6 = true;
3088 break;
3089 case 1:
3090 num2 = 1;
3091 break;
3092 case 2:
3093 num2 = 11;
3094 break;
3095 case 3:
3096 num2 = 14;
3097 break;
3098 }
3099 if (tile2.liquid > num)
3100 {
3101 num = tile2.liquid;
3102 }
3103 }
3104 if (tile.liquid > 0 && num3 != 2 && num3 != 4)
3105 {
3106 flag2 = true;
3107 switch (tile.liquidType())
3108 {
3109 case 0:
3110 flag6 = true;
3111 break;
3112 case 1:
3113 num2 = 1;
3114 break;
3115 case 2:
3116 num2 = 11;
3117 break;
3118 case 3:
3119 num2 = 14;
3120 break;
3121 }
3122 if (tile.liquid > num)
3123 {
3124 num = tile.liquid;
3125 }
3126 }
3127 if (tile3.liquid > 0 && num3 != 3 && num3 != 4)
3128 {
3129 flag3 = true;
3130 switch (tile3.liquidType())
3131 {
3132 case 0:
3133 flag6 = true;
3134 break;
3135 case 1:
3136 num2 = 1;
3137 break;
3138 case 2:
3139 num2 = 11;
3140 break;
3141 case 3:
3142 num2 = 14;
3143 break;
3144 }
3145 }
3146 if (tile4.liquid > 0 && num3 != 1 && num3 != 2)
3147 {
3148 if (tile4.liquid > 240)
3149 {
3150 flag4 = true;
3151 }
3152 switch (tile4.liquidType())
3153 {
3154 case 0:
3155 flag6 = true;
3156 break;
3157 case 1:
3158 num2 = 1;
3159 break;
3160 case 2:
3161 num2 = 11;
3162 break;
3163 case 3:
3164 num2 = 14;
3165 break;
3166 }
3167 }
3168 }
3169 if (!flag3 && !flag4 && !flag && !flag2 && !flag5)
3170 {
3171 return;
3172 }
3173 if (waterStyleOverride != -1)
3174 {
3175 Main.waterStyle = waterStyleOverride;
3176 }
3177 if (num2 == 0)
3178 {
3180 }
3182 Vector2 vector = new Vector2(tileX * 16, tileY * 16);
3183 Rectangle liquidSize = new Rectangle(0, 4, 16, 16);
3184 if (flag4 && (flag || flag2))
3185 {
3186 flag = true;
3187 flag2 = true;
3188 }
3189 if (tileCache.active() && (Main.tileSolidTop[tileCache.type] || !Main.tileSolid[tileCache.type]))
3190 {
3191 return;
3192 }
3193 if ((!flag3 || !(flag || flag2)) && !(flag4 && flag3))
3194 {
3195 if (flag3)
3196 {
3197 liquidSize = new Rectangle(0, 4, 16, 4);
3198 if (tileCache.halfBrick() || tileCache.slope() != 0)
3199 {
3200 liquidSize = new Rectangle(0, 4, 16, 12);
3201 }
3202 }
3203 else if (flag4 && !flag && !flag2)
3204 {
3205 vector = new Vector2(tileX * 16, tileY * 16 + 12);
3206 liquidSize = new Rectangle(0, 4, 16, 4);
3207 }
3208 else
3209 {
3210 float num5 = (float)(256 - num) / 32f;
3211 int y = 4;
3212 if (tile3.liquid == 0 && (num4 != 0 || !WorldGen.SolidTile(tileX, tileY - 1)))
3213 {
3214 y = 0;
3215 }
3216 int num6 = (int)num5 * 2;
3217 if (tileCache.slope() != 0)
3218 {
3219 vector = new Vector2(tileX * 16, tileY * 16 + num6);
3220 liquidSize = new Rectangle(0, num6, 16, 16 - num6);
3221 }
3222 else if ((flag && flag2) || tileCache.halfBrick())
3223 {
3224 vector = new Vector2(tileX * 16, tileY * 16 + num6);
3225 liquidSize = new Rectangle(0, y, 16, 16 - num6);
3226 }
3227 else if (flag)
3228 {
3229 vector = new Vector2(tileX * 16, tileY * 16 + num6);
3230 liquidSize = new Rectangle(0, y, 4, 16 - num6);
3231 }
3232 else
3233 {
3234 vector = new Vector2(tileX * 16 + 12, tileY * 16 + num6);
3235 liquidSize = new Rectangle(0, y, 4, 16 - num6);
3236 }
3237 }
3238 }
3239 Vector2 position = vector - screenPosition + screenOffset;
3240 float num7 = 0.5f;
3241 switch (num2)
3242 {
3243 case 1:
3244 num7 = 1f;
3245 break;
3246 case 11:
3247 num7 = Math.Max(num7 * 1.7f, 1f);
3248 break;
3249 }
3251 {
3252 num7 = 1f;
3253 if (tileCache.wall == 21)
3254 {
3255 num7 = 0.9f;
3256 }
3257 else if (tileCache.wall > 0)
3258 {
3259 num7 = 0.6f;
3260 }
3261 }
3262 if (tileCache.halfBrick() && tile3.liquid > 0 && tileCache.wall > 0)
3263 {
3264 num7 = 0f;
3265 }
3266 if (num3 == 4 && tile2.liquid == 0 && !WorldGen.SolidTile(tileX - 1, tileY))
3267 {
3268 num7 = 0f;
3269 }
3270 if (num3 == 3 && tile.liquid == 0 && !WorldGen.SolidTile(tileX + 1, tileY))
3271 {
3272 num7 = 0f;
3273 }
3274 vertices.BottomLeftColor *= num7;
3275 vertices.BottomRightColor *= num7;
3276 vertices.TopLeftColor *= num7;
3277 vertices.TopRightColor *= num7;
3278 bool flag7 = false;
3279 if (flag6)
3280 {
3281 for (int i = 0; i < 15; i++)
3282 {
3283 if (Main.IsLiquidStyleWater(i) && Main.liquidAlpha[i] > 0f && i != num2)
3284 {
3285 DrawPartialLiquid(!solidLayer, tileCache, ref position, ref liquidSize, i, ref vertices);
3286 flag7 = true;
3287 break;
3288 }
3289 }
3290 }
3291 VertexColors colors = vertices;
3292 float num8 = (flag7 ? Main.liquidAlpha[num2] : 1f);
3293 colors.BottomLeftColor *= num8;
3294 colors.BottomRightColor *= num8;
3295 colors.TopLeftColor *= num8;
3296 colors.TopRightColor *= num8;
3297 if (num2 == 14)
3298 {
3300 }
3301 DrawPartialLiquid(!solidLayer, tileCache, ref position, ref liquidSize, num2, ref colors);
3302 }
3303
3304 private void CacheSpecialDraws_Part1(int tileX, int tileY, int tileType, int drawDataTileFrameX, int drawDataTileFrameY, bool skipDraw)
3305 {
3306 if (tileType == 395)
3307 {
3308 Point point = new Point(tileX, tileY);
3309 if (drawDataTileFrameX % 36 != 0)
3310 {
3311 point.X--;
3312 }
3313 if (drawDataTileFrameY % 36 != 0)
3314 {
3315 point.Y--;
3316 }
3318 {
3319 _itemFrameTileEntityPositions[point] = TEItemFrame.Find(point.X, point.Y);
3320 if (_itemFrameTileEntityPositions[point] != -1)
3321 {
3322 AddSpecialLegacyPoint(point);
3323 }
3324 }
3325 }
3326 if (tileType == 520)
3327 {
3328 Point point2 = new Point(tileX, tileY);
3330 {
3333 {
3335 }
3336 }
3337 }
3338 if (tileType == 471)
3339 {
3340 Point point3 = new Point(tileX, tileY);
3341 point3.X -= drawDataTileFrameX % 54 / 18;
3342 point3.Y -= drawDataTileFrameY % 54 / 18;
3344 {
3347 {
3349 }
3350 }
3351 }
3352 if (tileType == 470)
3353 {
3354 Point point4 = new Point(tileX, tileY);
3355 point4.X -= drawDataTileFrameX % 36 / 18;
3356 point4.Y -= drawDataTileFrameY % 54 / 18;
3358 {
3361 {
3363 }
3364 }
3365 }
3366 if (tileType == 475)
3367 {
3368 Point point5 = new Point(tileX, tileY);
3369 point5.X -= drawDataTileFrameX % 54 / 18;
3370 point5.Y -= drawDataTileFrameY % 72 / 18;
3372 {
3375 {
3377 }
3378 }
3379 }
3380 if (tileType == 412 && drawDataTileFrameX == 0 && drawDataTileFrameY == 0)
3381 {
3383 }
3384 if (tileType == 620 && drawDataTileFrameX == 0 && drawDataTileFrameY == 0)
3385 {
3387 }
3388 if (tileType == 237 && drawDataTileFrameX == 18 && drawDataTileFrameY == 0)
3389 {
3391 }
3392 if (skipDraw)
3393 {
3394 return;
3395 }
3396 switch (tileType)
3397 {
3398 case 323:
3400 {
3402 }
3403 break;
3404 case 5:
3405 case 583:
3406 case 584:
3407 case 585:
3408 case 586:
3409 case 587:
3410 case 588:
3411 case 589:
3412 case 596:
3413 case 616:
3414 case 634:
3415 if (drawDataTileFrameY >= 198 && drawDataTileFrameX >= 22)
3416 {
3418 }
3419 break;
3420 }
3421 }
3422
3423 private void CacheSpecialDraws_Part2(int tileX, int tileY, TileDrawInfo drawData, bool skipDraw)
3424 {
3425 if (TileID.Sets.BasicChest[drawData.typeCache])
3426 {
3427 Point key = new Point(tileX, tileY);
3428 if (drawData.tileFrameX % 36 != 0)
3429 {
3430 key.X--;
3431 }
3432 if (drawData.tileFrameY % 36 != 0)
3433 {
3434 key.Y--;
3435 }
3437 {
3439 }
3440 int num = drawData.tileFrameX / 18;
3441 int num2 = drawData.tileFrameY / 18;
3442 int num3 = drawData.tileFrameX / 36;
3443 int num4 = num * 18;
3444 drawData.addFrX = num4 - drawData.tileFrameX;
3445 int num5 = num2 * 18;
3446 if (_chestPositions[key] != -1)
3447 {
3448 int frame = Main.chest[_chestPositions[key]].frame;
3449 if (frame == 1)
3450 {
3451 num5 += 38;
3452 }
3453 if (frame == 2)
3454 {
3455 num5 += 76;
3456 }
3457 }
3458 drawData.addFrY = num5 - drawData.tileFrameY;
3459 if (num2 != 0)
3460 {
3461 drawData.tileHeight = 18;
3462 }
3463 if (drawData.typeCache == 21 && (num3 == 48 || num3 == 49))
3464 {
3465 drawData.glowSourceRect = new Rectangle(16 * (num % 2), drawData.tileFrameY + drawData.addFrY, drawData.tileWidth, drawData.tileHeight);
3466 }
3467 }
3468 if (drawData.typeCache != 378)
3469 {
3470 return;
3471 }
3472 Point key2 = new Point(tileX, tileY);
3473 if (drawData.tileFrameX % 36 != 0)
3474 {
3475 key2.X--;
3476 }
3477 if (drawData.tileFrameY % 54 != 0)
3478 {
3479 key2.Y -= drawData.tileFrameY / 18;
3480 }
3482 {
3484 }
3486 {
3488 if (npc != -1)
3489 {
3490 int num6 = Main.npc[npc].frame.Y / 55;
3491 num6 *= 54;
3492 num6 += drawData.tileFrameY;
3493 drawData.addFrY = num6 - drawData.tileFrameY;
3494 }
3495 }
3496 }
3497
3498 private static Color GetFinalLight(Tile tileCache, ushort typeCache, Color tileLight, Color tint)
3499 {
3500 int num = (int)((float)(tileLight.R * tint.R) / 255f);
3501 int num2 = (int)((float)(tileLight.G * tint.G) / 255f);
3502 int num3 = (int)((float)(tileLight.B * tint.B) / 255f);
3503 if (num > 255)
3504 {
3505 num = 255;
3506 }
3507 if (num2 > 255)
3508 {
3509 num2 = 255;
3510 }
3511 if (num3 > 255)
3512 {
3513 num3 = 255;
3514 }
3515 num3 <<= 16;
3516 num2 <<= 8;
3517 tileLight.PackedValue = (uint)(num | num2 | num3) | 0xFF000000u;
3518 if (tileCache.fullbrightBlock())
3519 {
3520 tileLight = Color.White;
3521 }
3522 if (tileCache.inActive())
3523 {
3524 tileLight = tileCache.actColor(tileLight);
3525 }
3526 else if (ShouldTileShine(typeCache, tileCache.frameX))
3527 {
3528 tileLight = Main.shine(tileLight, typeCache);
3529 }
3530 return tileLight;
3531 }
3532
3533 private static void GetFinalLight(Tile tileCache, ushort typeCache, ref Vector3 tileLight, ref Vector3 tint)
3534 {
3535 tileLight *= tint;
3536 if (tileCache.inActive())
3537 {
3538 tileCache.actColor(ref tileLight);
3539 }
3540 else if (ShouldTileShine(typeCache, tileCache.frameX))
3541 {
3542 Main.shine(ref tileLight, typeCache);
3543 }
3544 }
3545
3546 private static bool ShouldTileShine(ushort type, short frameX)
3547 {
3548 if ((Main.shimmerAlpha > 0f && Main.tileSolid[type]) || type == 165)
3549 {
3550 return true;
3551 }
3552 if (!Main.tileShine2[type])
3553 {
3554 return false;
3555 }
3556 switch (type)
3557 {
3558 case 467:
3559 case 468:
3560 if (frameX >= 144)
3561 {
3562 return frameX < 178;
3563 }
3564 return false;
3565 case 21:
3566 case 441:
3567 if (frameX >= 36)
3568 {
3569 return frameX < 178;
3570 }
3571 return false;
3572 default:
3573 return true;
3574 }
3575 }
3576
3577 private static bool IsTileDangerous(Player localPlayer, Tile tileCache, ushort typeCache)
3578 {
3579 bool flag = false || typeCache == 135 || typeCache == 137 || TileID.Sets.Boulders[typeCache] || typeCache == 141 || typeCache == 210 || typeCache == 442 || typeCache == 443 || typeCache == 444 || typeCache == 411 || typeCache == 485 || typeCache == 85 || typeCache == 654 || (typeCache == 314 && Minecart.IsPressurePlate(tileCache));
3580 flag |= Main.getGoodWorld && typeCache == 230;
3581 flag |= Main.dontStarveWorld && typeCache == 80;
3582 if (tileCache.slope() == 0 && !tileCache.inActive())
3583 {
3584 flag = flag || typeCache == 32 || typeCache == 69 || typeCache == 48 || typeCache == 232 || typeCache == 352 || typeCache == 483 || typeCache == 482 || typeCache == 481 || typeCache == 51 || typeCache == 229;
3585 if (!localPlayer.fireWalk)
3586 {
3587 flag = flag || typeCache == 37 || typeCache == 58 || typeCache == 76;
3588 }
3589 if (!localPlayer.iceSkate)
3590 {
3591 flag = flag || typeCache == 162;
3592 }
3593 }
3594 return flag;
3595 }
3596
3597 private bool IsTileDrawLayerSolid(ushort typeCache)
3598 {
3599 if (TileID.Sets.DrawTileInSolidLayer[typeCache].HasValue)
3600 {
3601 return TileID.Sets.DrawTileInSolidLayer[typeCache].Value;
3602 }
3603 return _tileSolid[typeCache];
3604 }
3605
3606 private void GetTileOutlineInfo(int x, int y, ushort typeCache, ref Color tileLight, ref Texture2D highlightTexture, ref Color highlightColor)
3607 {
3609 {
3610 int num = (tileLight.R + tileLight.G + tileLight.B) / 3;
3611 if (num > 10)
3612 {
3613 highlightTexture = TextureAssets.HighlightMask[typeCache].Value;
3615 }
3616 }
3617 }
3618
3619 private void DrawPartialLiquid(bool behindBlocks, Tile tileCache, ref Vector2 position, ref Rectangle liquidSize, int liquidType, ref VertexColors colors)
3620 {
3621 int num = tileCache.slope();
3622 bool flag = !TileID.Sets.BlocksWaterDrawingBehindSelf[tileCache.type];
3623 if (!behindBlocks)
3624 {
3625 flag = false;
3626 }
3627 if (flag || num == 0)
3628 {
3629 Main.tileBatch.Draw(TextureAssets.Liquid[liquidType].Value, position, liquidSize, colors, default(Vector2), 1f, SpriteEffects.None);
3630 return;
3631 }
3632 liquidSize.X += 18 * (num - 1);
3633 switch (num)
3634 {
3635 case 1:
3636 Main.tileBatch.Draw(TextureAssets.LiquidSlope[liquidType].Value, position, liquidSize, colors, Vector2.Zero, 1f, SpriteEffects.None);
3637 break;
3638 case 2:
3639 Main.tileBatch.Draw(TextureAssets.LiquidSlope[liquidType].Value, position, liquidSize, colors, Vector2.Zero, 1f, SpriteEffects.None);
3640 break;
3641 case 3:
3642 Main.tileBatch.Draw(TextureAssets.LiquidSlope[liquidType].Value, position, liquidSize, colors, Vector2.Zero, 1f, SpriteEffects.None);
3643 break;
3644 case 4:
3645 Main.tileBatch.Draw(TextureAssets.LiquidSlope[liquidType].Value, position, liquidSize, colors, Vector2.Zero, 1f, SpriteEffects.None);
3646 break;
3647 }
3648 }
3649
3650 private bool InAPlaceWithWind(int x, int y, int width, int height)
3651 {
3652 return WorldGen.InAPlaceWithWind(x, y, width, height);
3653 }
3654
3655 private void GetTileDrawData(int x, int y, Tile tileCache, ushort typeCache, ref short tileFrameX, ref short tileFrameY, out int tileWidth, out int tileHeight, out int tileTop, out int halfBrickHeight, out int addFrX, out int addFrY, out SpriteEffects tileSpriteEffect, out Texture2D glowTexture, out Rectangle glowSourceRect, out Color glowColor)
3656 {
3657 tileTop = 0;
3658 tileWidth = 16;
3659 tileHeight = 16;
3660 halfBrickHeight = 0;
3661 addFrY = Main.tileFrame[typeCache] * 38;
3662 addFrX = 0;
3663 tileSpriteEffect = SpriteEffects.None;
3664 glowTexture = null;
3665 glowSourceRect = Rectangle.Empty;
3666 glowColor = Color.Transparent;
3667 Color color = Lighting.GetColor(x, y);
3668 switch (typeCache)
3669 {
3670 case 443:
3671 if (tileFrameX / 36 >= 2)
3672 {
3673 tileTop = -2;
3674 }
3675 else
3676 {
3677 tileTop = 2;
3678 }
3679 break;
3680 case 571:
3681 if (x % 2 == 0)
3682 {
3683 tileSpriteEffect = SpriteEffects.FlipHorizontally;
3684 }
3685 tileTop = 2;
3686 break;
3687 case 136:
3688 if (tileFrameX == 0)
3689 {
3690 tileTop = 2;
3691 }
3692 break;
3693 case 561:
3694 tileTop -= 2;
3695 tileHeight = 20;
3696 addFrY = tileFrameY / 18 * 4;
3697 break;
3698 case 518:
3699 {
3700 int num27 = tileCache.liquid / 16;
3701 num27 -= 3;
3702 if (WorldGen.SolidTile(x, y - 1) && num27 > 8)
3703 {
3704 num27 = 8;
3705 }
3706 if (tileCache.liquid == 0)
3707 {
3709 if (tileSafely.nactive())
3710 {
3711 switch (tileSafely.blockType())
3712 {
3713 case 1:
3714 num27 = -16 + Math.Max(8, tileSafely.liquid / 16);
3715 break;
3716 case 2:
3717 case 3:
3718 num27 -= 4;
3719 break;
3720 }
3721 }
3722 }
3723 tileTop -= num27;
3724 break;
3725 }
3726 case 330:
3727 case 331:
3728 case 332:
3729 case 333:
3730 tileTop += 2;
3731 break;
3732 case 129:
3733 addFrY = 0;
3734 if (tileFrameX >= 324)
3735 {
3736 int num22 = (tileFrameX - 324) / 18;
3737 int num23 = (num22 + Main.tileFrame[typeCache]) % 6 - num22;
3738 addFrX = num23 * 18;
3739 }
3740 break;
3741 case 5:
3742 {
3743 tileWidth = 20;
3744 tileHeight = 20;
3745 int treeBiome = GetTreeBiome(x, y, tileFrameX, tileFrameY);
3746 tileFrameX += (short)(176 * (treeBiome + 1));
3747 break;
3748 }
3749 case 583:
3750 case 584:
3751 case 585:
3752 case 586:
3753 case 587:
3754 case 588:
3755 case 589:
3756 case 596:
3757 case 616:
3758 case 634:
3759 tileWidth = 20;
3760 tileHeight = 20;
3761 break;
3762 case 476:
3763 tileWidth = 20;
3764 tileHeight = 18;
3765 break;
3766 case 323:
3767 {
3768 tileWidth = 20;
3769 tileHeight = 20;
3770 int palmTreeBiome = GetPalmTreeBiome(x, y);
3771 tileFrameY = (short)(22 * palmTreeBiome);
3772 break;
3773 }
3774 case 4:
3775 tileWidth = 20;
3776 tileHeight = 20;
3777 if (WorldGen.SolidTile(x, y - 1))
3778 {
3779 tileTop = 4;
3780 }
3781 break;
3782 case 78:
3783 case 85:
3784 case 100:
3785 case 133:
3786 case 134:
3787 case 173:
3788 case 210:
3789 case 233:
3790 case 254:
3791 case 283:
3792 case 378:
3793 case 457:
3794 case 466:
3795 case 520:
3796 case 651:
3797 case 652:
3798 tileTop = 2;
3799 break;
3800 case 530:
3801 {
3802 int num48 = y - tileFrameY % 36 / 18 + 2;
3803 int num49 = x - tileFrameX % 54 / 18;
3805 int num50 = corruptCount2;
3806 if (num50 < crimsonCount2)
3807 {
3809 }
3810 if (num50 < hallowedCount2)
3811 {
3813 }
3814 int num51 = 0;
3815 num51 = ((corruptCount2 != 0 || crimsonCount2 != 0 || hallowedCount2 != 0) ? ((hallowedCount2 == num50) ? 1 : ((crimsonCount2 != num50) ? 3 : 2)) : 0);
3816 addFrY += 36 * num51;
3817 tileTop = 2;
3818 break;
3819 }
3820 case 485:
3821 {
3822 tileTop = 2;
3823 int num39 = Main.tileFrameCounter[typeCache];
3824 num39 /= 5;
3825 int num40 = y - tileFrameY / 18;
3826 int num41 = x - tileFrameX / 18;
3827 num39 += num40 + num41;
3828 num39 %= 4;
3829 addFrY = num39 * 36;
3830 break;
3831 }
3832 case 489:
3833 {
3834 tileTop = 2;
3835 int num28 = y - tileFrameY / 18;
3836 int num29 = x - tileFrameX / 18;
3837 if (InAPlaceWithWind(num29, num28, 2, 3))
3838 {
3839 int num30 = Main.tileFrameCounter[typeCache];
3840 num30 /= 5;
3841 num30 += num28 + num29;
3842 num30 %= 16;
3843 addFrY = num30 * 54;
3844 }
3845 break;
3846 }
3847 case 490:
3848 {
3849 tileTop = 2;
3850 int y2 = y - tileFrameY / 18;
3851 int x2 = x - tileFrameX / 18;
3852 bool num24 = InAPlaceWithWind(x2, y2, 2, 2);
3853 int num25 = (num24 ? Main.tileFrame[typeCache] : 0);
3854 int num26 = 0;
3855 if (num24)
3856 {
3857 if (Math.Abs(Main.WindForVisuals) > 0.5f)
3858 {
3859 switch (Main.weatherVaneBobframe)
3860 {
3861 case 0:
3862 num26 = 0;
3863 break;
3864 case 1:
3865 num26 = 1;
3866 break;
3867 case 2:
3868 num26 = 2;
3869 break;
3870 case 3:
3871 num26 = 1;
3872 break;
3873 case 4:
3874 num26 = 0;
3875 break;
3876 case 5:
3877 num26 = -1;
3878 break;
3879 case 6:
3880 num26 = -2;
3881 break;
3882 case 7:
3883 num26 = -1;
3884 break;
3885 }
3886 }
3887 else
3888 {
3889 switch (Main.weatherVaneBobframe)
3890 {
3891 case 0:
3892 num26 = 0;
3893 break;
3894 case 1:
3895 num26 = 1;
3896 break;
3897 case 2:
3898 num26 = 0;
3899 break;
3900 case 3:
3901 num26 = -1;
3902 break;
3903 case 4:
3904 num26 = 0;
3905 break;
3906 case 5:
3907 num26 = 1;
3908 break;
3909 case 6:
3910 num26 = 0;
3911 break;
3912 case 7:
3913 num26 = -1;
3914 break;
3915 }
3916 }
3917 }
3918 num25 += num26;
3919 if (num25 < 0)
3920 {
3921 num25 += 12;
3922 }
3923 num25 %= 12;
3924 addFrY = num25 * 36;
3925 break;
3926 }
3927 case 33:
3928 case 49:
3929 case 174:
3930 case 372:
3931 case 646:
3932 tileHeight = 20;
3933 tileTop = -4;
3934 break;
3935 case 529:
3936 {
3937 int num18 = y + 1;
3939 int num19 = corruptCount;
3940 if (num19 < crimsonCount)
3941 {
3943 }
3944 if (num19 < hallowedCount)
3945 {
3947 }
3948 int num20 = 0;
3950 addFrY += 34 * num20 - tileFrameY;
3951 tileHeight = 32;
3952 tileTop = -14;
3953 if (x % 2 == 0)
3954 {
3955 tileSpriteEffect = SpriteEffects.FlipHorizontally;
3956 }
3957 break;
3958 }
3959 case 3:
3960 case 24:
3961 case 61:
3962 case 71:
3963 case 110:
3964 case 201:
3965 case 637:
3966 tileHeight = 20;
3967 if (x % 2 == 0)
3968 {
3969 tileSpriteEffect = SpriteEffects.FlipHorizontally;
3970 }
3971 break;
3972 case 20:
3973 case 590:
3974 case 595:
3975 tileHeight = 18;
3976 if (x % 2 == 0)
3977 {
3978 tileSpriteEffect = SpriteEffects.FlipHorizontally;
3979 }
3980 break;
3981 case 615:
3982 tileHeight = 18;
3983 if (x % 2 == 0)
3984 {
3985 tileSpriteEffect = SpriteEffects.FlipHorizontally;
3986 }
3987 break;
3988 case 16:
3989 case 17:
3990 case 18:
3991 case 26:
3992 case 32:
3993 case 69:
3994 case 72:
3995 case 77:
3996 case 79:
3997 case 124:
3998 case 137:
3999 case 138:
4000 case 352:
4001 case 462:
4002 case 487:
4003 case 488:
4004 case 574:
4005 case 575:
4006 case 576:
4007 case 577:
4008 case 578:
4009 case 664:
4010 tileHeight = 18;
4011 break;
4012 case 654:
4013 tileTop += 2;
4014 break;
4015 case 14:
4016 case 21:
4017 case 411:
4018 case 467:
4019 case 469:
4020 if (tileFrameY == 18)
4021 {
4022 tileHeight = 18;
4023 }
4024 break;
4025 case 15:
4026 case 497:
4027 if (tileFrameY % 40 == 18)
4028 {
4029 tileHeight = 18;
4030 }
4031 break;
4032 case 172:
4033 case 376:
4034 if (tileFrameY % 38 == 18)
4035 {
4036 tileHeight = 18;
4037 }
4038 break;
4039 case 27:
4040 if (tileFrameY % 74 == 54)
4041 {
4042 tileHeight = 18;
4043 }
4044 break;
4045 case 132:
4046 case 135:
4047 tileTop = 2;
4048 tileHeight = 18;
4049 break;
4050 case 82:
4051 case 83:
4052 case 84:
4053 tileHeight = 20;
4054 tileTop = -2;
4055 if (x % 2 == 0)
4056 {
4057 tileSpriteEffect = SpriteEffects.FlipHorizontally;
4058 }
4059 break;
4060 case 324:
4061 tileWidth = 20;
4062 tileHeight = 20;
4063 tileTop = -2;
4064 if (x % 2 == 0)
4065 {
4066 tileSpriteEffect = SpriteEffects.FlipHorizontally;
4067 }
4068 break;
4069 case 494:
4070 tileTop = 2;
4071 break;
4072 case 52:
4073 case 62:
4074 case 115:
4075 case 205:
4076 case 382:
4077 case 528:
4078 case 636:
4079 case 638:
4080 tileTop = -2;
4081 if (x % 2 == 0)
4082 {
4083 tileSpriteEffect = SpriteEffects.FlipHorizontally;
4084 }
4085 break;
4086 case 80:
4087 case 142:
4088 case 143:
4089 tileTop = 2;
4090 break;
4091 case 139:
4092 {
4093 tileTop = 2;
4094 int num31 = tileFrameY / 2016;
4095 addFrY -= 2016 * num31;
4096 addFrX += 72 * num31;
4097 break;
4098 }
4099 case 73:
4100 case 74:
4101 case 113:
4102 tileTop = -12;
4103 tileHeight = 32;
4104 if (x % 2 == 0)
4105 {
4106 tileSpriteEffect = SpriteEffects.FlipHorizontally;
4107 }
4108 break;
4109 case 388:
4110 case 389:
4111 {
4112 TileObjectData.GetTileData(typeCache, tileFrameX / 18);
4113 int num17 = 94;
4114 tileTop = -2;
4115 if (tileFrameY == num17 - 20 || tileFrameY == num17 * 2 - 20 || tileFrameY == 0 || tileFrameY == num17)
4116 {
4117 tileHeight = 18;
4118 }
4119 if (tileFrameY != 0 && tileFrameY != num17)
4120 {
4121 tileTop = 0;
4122 }
4123 break;
4124 }
4125 case 227:
4126 tileWidth = 32;
4127 tileHeight = 38;
4128 if (tileFrameX == 238)
4129 {
4130 tileTop -= 6;
4131 }
4132 else
4133 {
4134 tileTop -= 20;
4135 }
4136 if (tileFrameX == 204)
4137 {
4138 WorldGen.GetCactusType(x, y, tileFrameX, tileFrameY, out var evil, out var good, out var crimson);
4139 if (good)
4140 {
4141 tileFrameX += 238;
4142 }
4143 if (evil)
4144 {
4145 tileFrameX += 204;
4146 }
4147 if (crimson)
4148 {
4149 tileFrameX += 272;
4150 }
4151 }
4152 if (x % 2 == 0)
4153 {
4154 tileSpriteEffect = SpriteEffects.FlipHorizontally;
4155 }
4156 break;
4157 case 624:
4158 tileWidth = 20;
4159 tileHeight = 16;
4160 tileTop += 2;
4161 if (x % 2 == 0)
4162 {
4163 tileSpriteEffect = SpriteEffects.FlipHorizontally;
4164 }
4165 break;
4166 case 656:
4167 tileWidth = 24;
4168 tileHeight = 34;
4169 tileTop -= 16;
4170 if (x % 2 == 0)
4171 {
4172 tileSpriteEffect = SpriteEffects.FlipHorizontally;
4173 }
4174 break;
4175 case 579:
4176 {
4177 tileWidth = 20;
4178 tileHeight = 20;
4179 tileTop -= 2;
4180 bool flag = (float)(x * 16 + 8) > Main.LocalPlayer.Center.X;
4181 if (tileFrameX > 0)
4182 {
4183 if (flag)
4184 {
4185 addFrY = 22;
4186 }
4187 else
4188 {
4189 addFrY = 0;
4190 }
4191 }
4192 else if (flag)
4193 {
4194 addFrY = 0;
4195 }
4196 else
4197 {
4198 addFrY = 22;
4199 }
4200 break;
4201 }
4202 case 567:
4203 tileWidth = 26;
4204 tileHeight = 18;
4205 if (tileFrameY == 0)
4206 {
4207 tileTop = -2;
4208 }
4209 if (x % 2 == 0)
4210 {
4211 tileSpriteEffect = SpriteEffects.FlipHorizontally;
4212 }
4213 break;
4214 case 185:
4215 case 186:
4216 case 187:
4217 tileTop = 2;
4218 switch (typeCache)
4219 {
4220 case 185:
4221 if (tileFrameY == 18 && tileFrameX >= 576 && tileFrameX <= 882)
4222 {
4223 Main.tileShine2[185] = true;
4224 }
4225 else
4226 {
4227 Main.tileShine2[185] = false;
4228 }
4229 if (tileFrameY == 18)
4230 {
4231 int num37 = tileFrameX / 1908;
4232 addFrX -= 1908 * num37;
4233 addFrY += 18 * num37;
4234 }
4235 break;
4236 case 186:
4237 if (tileFrameX >= 864 && tileFrameX <= 1170)
4238 {
4239 Main.tileShine2[186] = true;
4240 }
4241 else
4242 {
4243 Main.tileShine2[186] = false;
4244 }
4245 break;
4246 case 187:
4247 {
4248 int num36 = tileFrameX / 1890;
4249 addFrX -= 1890 * num36;
4250 addFrY += 36 * num36;
4251 break;
4252 }
4253 }
4254 break;
4255 case 650:
4256 tileTop = 2;
4257 break;
4258 case 649:
4259 {
4260 tileTop = 2;
4261 int num35 = tileFrameX / 1908;
4262 addFrX -= 1908 * num35;
4263 addFrY += 18 * num35;
4264 break;
4265 }
4266 case 647:
4267 tileTop = 2;
4268 break;
4269 case 648:
4270 {
4271 tileTop = 2;
4272 int num34 = tileFrameX / 1890;
4273 addFrX -= 1890 * num34;
4274 addFrY += 36 * num34;
4275 break;
4276 }
4277 case 178:
4278 if (tileFrameY <= 36)
4279 {
4280 tileTop = 2;
4281 }
4282 break;
4283 case 184:
4284 tileWidth = 20;
4285 if (tileFrameY <= 36)
4286 {
4287 tileTop = 2;
4288 }
4289 else if (tileFrameY <= 108)
4290 {
4291 tileTop = -2;
4292 }
4293 break;
4294 case 519:
4295 tileTop = 2;
4296 if (x % 2 == 0)
4297 {
4298 tileSpriteEffect = SpriteEffects.FlipHorizontally;
4299 }
4300 break;
4301 case 493:
4302 if (tileFrameY == 0)
4303 {
4304 int num13 = Main.tileFrameCounter[typeCache];
4305 float num14 = Math.Abs(Main.WindForVisuals);
4306 int num15 = y - tileFrameY / 18;
4307 int num16 = x - tileFrameX / 18;
4308 if (!InAPlaceWithWind(x, num15, 1, 1))
4309 {
4310 num14 = 0f;
4311 }
4312 if (!(num14 < 0.1f))
4313 {
4314 if (num14 < 0.5f)
4315 {
4316 num13 /= 20;
4317 num13 += num15 + num16;
4318 num13 %= 6;
4319 num13 = ((!(Main.WindForVisuals < 0f)) ? (num13 + 1) : (6 - num13));
4320 addFrY = num13 * 36;
4321 }
4322 else
4323 {
4324 num13 /= 10;
4325 num13 += num15 + num16;
4326 num13 %= 6;
4327 num13 = ((!(Main.WindForVisuals < 0f)) ? (num13 + 7) : (12 - num13));
4328 addFrY = num13 * 36;
4329 }
4330 }
4331 }
4332 tileTop = 2;
4333 break;
4334 case 28:
4335 case 105:
4336 case 470:
4337 case 475:
4338 case 506:
4339 case 547:
4340 case 548:
4341 case 552:
4342 case 560:
4343 case 597:
4344 case 613:
4345 case 621:
4346 case 622:
4347 case 623:
4348 case 653:
4349 tileTop = 2;
4350 break;
4351 case 617:
4352 tileTop = 2;
4353 tileFrameY %= 144;
4354 tileFrameX %= 54;
4355 break;
4356 case 614:
4357 addFrX = Main.tileFrame[typeCache] * 54;
4358 addFrY = 0;
4359 tileTop = 2;
4360 break;
4361 case 81:
4362 tileTop -= 8;
4363 tileHeight = 26;
4364 tileWidth = 24;
4365 if (x % 2 == 0)
4366 {
4367 tileSpriteEffect = SpriteEffects.FlipHorizontally;
4368 }
4369 break;
4370 case 272:
4371 addFrY = 0;
4372 break;
4373 case 106:
4374 addFrY = Main.tileFrame[typeCache] * 54;
4375 break;
4376 case 300:
4377 case 301:
4378 case 302:
4379 case 303:
4380 case 304:
4381 case 305:
4382 case 306:
4383 case 307:
4384 case 308:
4385 case 354:
4386 case 355:
4387 case 499:
4388 addFrY = Main.tileFrame[typeCache] * 54;
4389 tileTop = 2;
4390 break;
4391 case 377:
4392 addFrY = Main.tileFrame[typeCache] * 38;
4393 tileTop = 2;
4394 break;
4395 case 463:
4396 case 464:
4397 addFrY = Main.tileFrame[typeCache] * 72;
4398 tileTop = 2;
4399 break;
4400 case 491:
4401 tileTop = 2;
4402 addFrX = 54;
4403 break;
4404 case 379:
4405 addFrY = Main.tileFrame[typeCache] * 90;
4406 break;
4407 case 349:
4408 {
4409 tileTop = 2;
4410 int num6 = tileFrameX % 36;
4411 int num7 = tileFrameY % 54;
4412 if (Animation.GetTemporaryFrame(x - num6 / 18, y - num7 / 18, out var frameData2))
4413 {
4414 tileFrameX = (short)(36 * frameData2 + num6);
4415 }
4416 break;
4417 }
4418 case 441:
4419 case 468:
4420 {
4421 if (tileFrameY == 18)
4422 {
4423 tileHeight = 18;
4424 }
4425 int num3 = tileFrameX % 36;
4426 int num4 = tileFrameY % 38;
4427 if (Animation.GetTemporaryFrame(x - num3 / 18, y - num4 / 18, out var frameData))
4428 {
4429 tileFrameY = (short)(38 * frameData + num4);
4430 }
4431 break;
4432 }
4433 case 390:
4434 addFrY = Main.tileFrame[typeCache] * 36;
4435 break;
4436 case 412:
4437 addFrY = 0;
4438 tileTop = 2;
4439 break;
4440 case 406:
4441 {
4442 tileHeight = 16;
4443 if (tileFrameY % 54 >= 36)
4444 {
4445 tileHeight = 18;
4446 }
4447 int num53 = Main.tileFrame[typeCache];
4448 if (tileFrameY >= 108)
4449 {
4450 num53 = 6 - tileFrameY / 54;
4451 }
4452 else if (tileFrameY >= 54)
4453 {
4454 num53 = Main.tileFrame[typeCache] - 1;
4455 }
4456 addFrY = num53 * 56;
4457 addFrY += tileFrameY / 54 * 2;
4458 break;
4459 }
4460 case 452:
4461 {
4462 int num52 = Main.tileFrame[typeCache];
4463 if (tileFrameX >= 54)
4464 {
4465 num52 = 0;
4466 }
4467 addFrY = num52 * 54;
4468 break;
4469 }
4470 case 455:
4471 {
4472 addFrY = 0;
4473 tileTop = 2;
4474 int num47 = 1 + Main.tileFrame[typeCache];
4476 {
4477 num47 = 0;
4478 }
4479 addFrY = num47 * 54;
4480 break;
4481 }
4482 case 454:
4483 addFrY = Main.tileFrame[typeCache] * 54;
4484 break;
4485 case 453:
4486 {
4487 int num45 = Main.tileFrameCounter[typeCache];
4488 num45 /= 20;
4489 int num46 = y - tileFrameY / 18;
4490 num45 += num46 + x;
4491 num45 %= 3;
4492 addFrY = num45 * 54;
4493 break;
4494 }
4495 case 456:
4496 {
4497 int num42 = Main.tileFrameCounter[typeCache];
4498 num42 /= 20;
4499 int num43 = y - tileFrameY / 18;
4500 int num44 = x - tileFrameX / 18;
4501 num42 += num43 + num44;
4502 num42 %= 4;
4503 addFrY = num42 * 54;
4504 break;
4505 }
4506 case 405:
4507 {
4508 tileHeight = 16;
4509 if (tileFrameY > 0)
4510 {
4511 tileHeight = 18;
4512 }
4513 int num38 = Main.tileFrame[typeCache];
4514 if (tileFrameX >= 54)
4515 {
4516 num38 = 0;
4517 }
4518 addFrY = num38 * 38;
4519 break;
4520 }
4521 case 12:
4522 case 31:
4523 case 96:
4524 case 639:
4525 case 665:
4526 addFrY = Main.tileFrame[typeCache] * 36;
4527 break;
4528 case 238:
4529 tileTop = 2;
4530 addFrY = Main.tileFrame[typeCache] * 36;
4531 break;
4532 case 593:
4533 {
4534 if (tileFrameX >= 18)
4535 {
4536 addFrX = -18;
4537 }
4538 tileTop = 2;
4540 {
4541 addFrY = (short)(18 * frameData4);
4542 }
4543 else if (tileFrameX < 18)
4544 {
4545 addFrY = Main.tileFrame[typeCache] * 18;
4546 }
4547 else
4548 {
4549 addFrY = 0;
4550 }
4551 break;
4552 }
4553 case 594:
4554 {
4555 if (tileFrameX >= 36)
4556 {
4557 addFrX = -36;
4558 }
4559 tileTop = 2;
4560 int num32 = tileFrameX % 36;
4561 int num33 = tileFrameY % 36;
4562 if (Animation.GetTemporaryFrame(x - num32 / 18, y - num33 / 18, out var frameData3))
4563 {
4564 addFrY = (short)(36 * frameData3);
4565 }
4566 else if (tileFrameX < 36)
4567 {
4568 addFrY = Main.tileFrame[typeCache] * 36;
4569 }
4570 else
4571 {
4572 addFrY = 0;
4573 }
4574 break;
4575 }
4576 case 215:
4577 if (tileFrameY < 36)
4578 {
4579 addFrY = Main.tileFrame[typeCache] * 36;
4580 }
4581 else
4582 {
4583 addFrY = 252;
4584 }
4585 tileTop = 2;
4586 break;
4587 case 592:
4588 addFrY = Main.tileFrame[typeCache] * 54;
4589 break;
4590 case 228:
4591 case 231:
4592 case 243:
4593 case 247:
4594 tileTop = 2;
4595 addFrY = Main.tileFrame[typeCache] * 54;
4596 break;
4597 case 244:
4598 tileTop = 2;
4599 if (tileFrameX < 54)
4600 {
4601 addFrY = Main.tileFrame[typeCache] * 36;
4602 }
4603 else
4604 {
4605 addFrY = 0;
4606 }
4607 break;
4608 case 565:
4609 tileTop = 2;
4610 if (tileFrameX < 36)
4611 {
4612 addFrY = Main.tileFrame[typeCache] * 36;
4613 }
4614 else
4615 {
4616 addFrY = 0;
4617 }
4618 break;
4619 case 235:
4620 addFrY = Main.tileFrame[typeCache] * 18;
4621 break;
4622 case 217:
4623 case 218:
4624 case 564:
4625 addFrY = Main.tileFrame[typeCache] * 36;
4626 tileTop = 2;
4627 break;
4628 case 219:
4629 case 220:
4630 case 642:
4631 addFrY = Main.tileFrame[typeCache] * 54;
4632 tileTop = 2;
4633 break;
4634 case 270:
4635 case 271:
4636 case 581:
4637 {
4638 int num21 = Main.tileFrame[typeCache] + x % 6;
4639 if (x % 2 == 0)
4640 {
4641 num21 += 3;
4642 }
4643 if (x % 3 == 0)
4644 {
4645 num21 += 3;
4646 }
4647 if (x % 4 == 0)
4648 {
4649 num21 += 3;
4650 }
4651 while (num21 > 5)
4652 {
4653 num21 -= 6;
4654 }
4655 addFrX = num21 * 18;
4656 addFrY = 0;
4657 if (x % 2 == 0)
4658 {
4659 tileSpriteEffect = SpriteEffects.FlipHorizontally;
4660 }
4661 break;
4662 }
4663 case 660:
4664 {
4665 int num12 = Main.tileFrame[typeCache] + x % 5;
4666 if (x % 2 == 0)
4667 {
4668 num12 += 3;
4669 }
4670 if (x % 3 == 0)
4671 {
4672 num12 += 3;
4673 }
4674 if (x % 4 == 0)
4675 {
4676 num12 += 3;
4677 }
4678 while (num12 > 4)
4679 {
4680 num12 -= 5;
4681 }
4682 addFrX = num12 * 18;
4683 addFrY = 0;
4684 if (x % 2 == 0)
4685 {
4686 tileSpriteEffect = SpriteEffects.FlipHorizontally;
4687 }
4688 break;
4689 }
4690 case 572:
4691 {
4692 int num11;
4693 for (num11 = Main.tileFrame[typeCache] + x % 4; num11 > 3; num11 -= 4)
4694 {
4695 }
4696 addFrX = num11 * 18;
4697 addFrY = 0;
4698 if (x % 2 == 0)
4699 {
4700 tileSpriteEffect = SpriteEffects.FlipHorizontally;
4701 }
4702 break;
4703 }
4704 case 428:
4705 tileTop += 4;
4706 if (PressurePlateHelper.PressurePlatesPressed.ContainsKey(new Point(x, y)))
4707 {
4708 addFrX += 18;
4709 }
4710 break;
4711 case 442:
4712 tileWidth = 20;
4713 tileHeight = 20;
4714 switch (tileFrameX / 22)
4715 {
4716 case 1:
4717 tileTop = -4;
4718 break;
4719 case 2:
4720 tileTop = -2;
4721 tileWidth = 24;
4722 break;
4723 case 3:
4724 tileTop = -2;
4725 break;
4726 }
4727 break;
4728 case 426:
4729 case 430:
4730 case 431:
4731 case 432:
4732 case 433:
4733 case 434:
4734 addFrY = 90;
4735 break;
4736 case 275:
4737 case 276:
4738 case 277:
4739 case 278:
4740 case 279:
4741 case 280:
4742 case 281:
4743 case 296:
4744 case 297:
4745 case 309:
4746 case 358:
4747 case 359:
4748 case 413:
4749 case 414:
4750 case 542:
4751 case 550:
4752 case 551:
4753 case 553:
4754 case 554:
4755 case 558:
4756 case 559:
4757 case 599:
4758 case 600:
4759 case 601:
4760 case 602:
4761 case 603:
4762 case 604:
4763 case 605:
4764 case 606:
4765 case 607:
4766 case 608:
4767 case 609:
4768 case 610:
4769 case 611:
4770 case 612:
4771 case 632:
4772 case 640:
4773 case 643:
4774 case 644:
4775 case 645:
4776 {
4777 tileTop = 2;
4778 Main.critterCage = true;
4779 int bigAnimalCageFrame = GetBigAnimalCageFrame(x, y, tileFrameX, tileFrameY);
4780 switch (typeCache)
4781 {
4782 case 275:
4783 case 359:
4784 case 599:
4785 case 600:
4786 case 601:
4787 case 602:
4788 case 603:
4789 case 604:
4790 case 605:
4791 addFrY = Main.bunnyCageFrame[bigAnimalCageFrame] * 54;
4792 break;
4793 case 550:
4794 case 551:
4796 break;
4797 case 542:
4798 addFrY = Main.owlCageFrame[bigAnimalCageFrame] * 54;
4799 break;
4800 case 276:
4801 case 413:
4802 case 414:
4803 case 606:
4804 case 607:
4805 case 608:
4806 case 609:
4807 case 610:
4808 case 611:
4809 case 612:
4811 break;
4812 case 277:
4814 break;
4815 case 278:
4816 addFrY = Main.duckCageFrame[bigAnimalCageFrame] * 54;
4817 break;
4818 case 553:
4819 addFrY = Main.grebeCageFrame[bigAnimalCageFrame] * 54;
4820 break;
4821 case 554:
4823 break;
4824 case 279:
4825 case 358:
4826 addFrY = Main.birdCageFrame[bigAnimalCageFrame] * 54;
4827 break;
4828 case 280:
4830 break;
4831 case 281:
4833 break;
4834 case 632:
4835 case 640:
4836 case 643:
4837 case 644:
4838 case 645:
4839 addFrY = Main.macawCageFrame[bigAnimalCageFrame] * 54;
4840 break;
4841 case 296:
4842 case 297:
4843 addFrY = Main.scorpionCageFrame[0, bigAnimalCageFrame] * 54;
4844 break;
4845 case 309:
4847 break;
4848 case 558:
4849 case 559:
4851 break;
4852 }
4853 break;
4854 }
4855 case 285:
4856 case 286:
4857 case 298:
4858 case 299:
4859 case 310:
4860 case 339:
4861 case 361:
4862 case 362:
4863 case 363:
4864 case 364:
4865 case 391:
4866 case 392:
4867 case 393:
4868 case 394:
4869 case 532:
4870 case 533:
4871 case 538:
4872 case 544:
4873 case 555:
4874 case 556:
4875 case 582:
4876 case 619:
4877 case 629:
4878 {
4879 tileTop = 2;
4880 Main.critterCage = true;
4881 int smallAnimalCageFrame2 = GetSmallAnimalCageFrame(x, y, tileFrameX, tileFrameY);
4882 switch (typeCache)
4883 {
4884 case 285:
4886 break;
4887 case 286:
4888 case 582:
4890 break;
4891 case 298:
4892 case 361:
4894 break;
4895 case 339:
4896 case 362:
4898 break;
4899 case 299:
4900 case 363:
4902 break;
4903 case 310:
4904 case 364:
4905 case 391:
4906 case 619:
4908 break;
4909 case 392:
4910 case 393:
4911 case 394:
4912 addFrY = Main.slugCageFrame[typeCache - 392, smallAnimalCageFrame2] * 36;
4913 break;
4914 case 532:
4916 break;
4917 case 533:
4919 break;
4920 case 538:
4921 case 544:
4922 case 629:
4924 break;
4925 case 555:
4926 case 556:
4928 break;
4929 }
4930 break;
4931 }
4932 case 282:
4933 case 505:
4934 case 543:
4935 {
4936 tileTop = 2;
4937 Main.critterCage = true;
4938 int waterAnimalCageFrame5 = GetWaterAnimalCageFrame(x, y, tileFrameX, tileFrameY);
4940 break;
4941 }
4942 case 598:
4943 {
4944 tileTop = 2;
4945 Main.critterCage = true;
4946 int waterAnimalCageFrame4 = GetWaterAnimalCageFrame(x, y, tileFrameX, tileFrameY);
4948 break;
4949 }
4950 case 568:
4951 case 569:
4952 case 570:
4953 {
4954 tileTop = 2;
4955 Main.critterCage = true;
4956 int waterAnimalCageFrame3 = GetWaterAnimalCageFrame(x, y, tileFrameX, tileFrameY);
4958 break;
4959 }
4960 case 288:
4961 case 289:
4962 case 290:
4963 case 291:
4964 case 292:
4965 case 293:
4966 case 294:
4967 case 295:
4968 case 360:
4969 case 580:
4970 case 620:
4971 {
4972 tileTop = 2;
4973 Main.critterCage = true;
4974 int waterAnimalCageFrame2 = GetWaterAnimalCageFrame(x, y, tileFrameX, tileFrameY);
4975 int num10 = typeCache - 288;
4976 if (typeCache == 360 || typeCache == 580 || typeCache == 620)
4977 {
4978 num10 = 8;
4979 }
4981 break;
4982 }
4983 case 521:
4984 case 522:
4985 case 523:
4986 case 524:
4987 case 525:
4988 case 526:
4989 case 527:
4990 {
4991 tileTop = 2;
4992 Main.critterCage = true;
4993 int waterAnimalCageFrame = GetWaterAnimalCageFrame(x, y, tileFrameX, tileFrameY);
4994 int num9 = typeCache - 521;
4996 break;
4997 }
4998 case 316:
4999 case 317:
5000 case 318:
5001 {
5002 tileTop = 2;
5003 Main.critterCage = true;
5004 int smallAnimalCageFrame = GetSmallAnimalCageFrame(x, y, tileFrameX, tileFrameY);
5005 int num8 = typeCache - 316;
5007 break;
5008 }
5009 case 207:
5010 tileTop = 2;
5011 if (tileFrameY >= 72)
5012 {
5013 addFrY = Main.tileFrame[typeCache];
5014 int num5 = x;
5015 if (tileFrameX % 36 != 0)
5016 {
5017 num5--;
5018 }
5019 addFrY += num5 % 6;
5020 if (addFrY >= 6)
5021 {
5022 addFrY -= 6;
5023 }
5024 addFrY *= 72;
5025 }
5026 else
5027 {
5028 addFrY = 0;
5029 }
5030 break;
5031 case 410:
5032 if (tileFrameY == 36)
5033 {
5034 tileHeight = 18;
5035 }
5036 if (tileFrameY >= 56)
5037 {
5038 addFrY = Main.tileFrame[typeCache];
5039 addFrY *= 56;
5040 }
5041 else
5042 {
5043 addFrY = 0;
5044 }
5045 break;
5046 case 480:
5047 case 509:
5048 case 657:
5049 tileTop = 2;
5050 if (tileFrameY >= 54)
5051 {
5052 addFrY = Main.tileFrame[typeCache];
5053 addFrY *= 54;
5054 }
5055 else
5056 {
5057 addFrY = 0;
5058 }
5059 break;
5060 case 658:
5061 tileTop = 2;
5062 switch (tileFrameY / 54)
5063 {
5064 default:
5065 addFrY = Main.tileFrame[typeCache];
5066 addFrY *= 54;
5067 break;
5068 case 1:
5069 addFrY = Main.tileFrame[typeCache];
5070 addFrY *= 54;
5071 addFrY += 486;
5072 break;
5073 case 2:
5074 addFrY = Main.tileFrame[typeCache];
5075 addFrY *= 54;
5076 addFrY += 972;
5077 break;
5078 }
5079 break;
5080 case 326:
5081 case 327:
5082 case 328:
5083 case 329:
5084 case 345:
5085 case 351:
5086 case 421:
5087 case 422:
5088 case 458:
5089 case 459:
5090 addFrY = Main.tileFrame[typeCache] * 90;
5091 break;
5092 case 541:
5093 addFrY = ((!_shouldShowInvisibleBlocks) ? 90 : 0);
5094 break;
5095 case 507:
5096 case 508:
5097 {
5098 int num = 20;
5099 int num2 = (Main.tileFrameCounter[typeCache] + x * 11 + y * 27) % (num * 8);
5100 addFrY = 90 * (num2 / num);
5101 break;
5102 }
5103 case 336:
5104 case 340:
5105 case 341:
5106 case 342:
5107 case 343:
5108 case 344:
5109 addFrY = Main.tileFrame[typeCache] * 90;
5110 tileTop = 2;
5111 break;
5112 case 89:
5113 tileTop = 2;
5114 break;
5115 case 102:
5116 tileTop = 2;
5117 break;
5118 }
5119 if (tileCache.halfBrick())
5120 {
5121 halfBrickHeight = 8;
5122 }
5123 switch (typeCache)
5124 {
5125 case 657:
5126 if (tileFrameY >= 54)
5127 {
5128 glowTexture = TextureAssets.GlowMask[330].Value;
5129 glowSourceRect = new Rectangle(tileFrameX, tileFrameY + addFrY, tileWidth, tileHeight);
5130 glowColor = Color.White;
5131 }
5132 break;
5133 case 656:
5134 glowTexture = TextureAssets.GlowMask[329].Value;
5135 glowSourceRect = new Rectangle(tileFrameX, tileFrameY + addFrY, tileWidth, tileHeight);
5136 glowColor = new Color(255, 255, 255, 0) * ((float)(int)Main.mouseTextColor / 255f);
5137 break;
5138 case 634:
5139 glowTexture = TextureAssets.GlowMask[315].Value;
5140 glowSourceRect = new Rectangle(tileFrameX, tileFrameY + addFrY, tileWidth, tileHeight);
5141 glowColor = Color.White;
5142 break;
5143 case 637:
5144 glowTexture = TextureAssets.Tile[637].Value;
5145 glowSourceRect = new Rectangle(tileFrameX + addFrX, tileFrameY + addFrY, tileWidth, tileHeight);
5146 glowColor = Color.Lerp(Color.White, color, 0.75f);
5147 break;
5148 case 638:
5149 glowTexture = TextureAssets.GlowMask[327].Value;
5150 glowSourceRect = new Rectangle(tileFrameX + addFrX, tileFrameY + addFrY, tileWidth, tileHeight - halfBrickHeight);
5151 glowColor = Color.Lerp(Color.White, color, 0.75f);
5152 break;
5153 case 568:
5154 glowTexture = TextureAssets.GlowMask[268].Value;
5155 glowSourceRect = new Rectangle(tileFrameX, tileFrameY + addFrY, tileWidth, tileHeight);
5156 glowColor = Color.White;
5157 break;
5158 case 569:
5159 glowTexture = TextureAssets.GlowMask[269].Value;
5160 glowSourceRect = new Rectangle(tileFrameX, tileFrameY + addFrY, tileWidth, tileHeight);
5161 glowColor = Color.White;
5162 break;
5163 case 570:
5164 glowTexture = TextureAssets.GlowMask[270].Value;
5165 glowSourceRect = new Rectangle(tileFrameX, tileFrameY + addFrY, tileWidth, tileHeight);
5166 glowColor = Color.White;
5167 break;
5168 case 580:
5169 glowTexture = TextureAssets.GlowMask[289].Value;
5170 glowSourceRect = new Rectangle(tileFrameX, tileFrameY + addFrY, tileWidth, tileHeight);
5171 glowColor = new Color(225, 110, 110, 0);
5172 break;
5173 case 564:
5174 if (tileCache.frameX < 36)
5175 {
5176 glowTexture = TextureAssets.GlowMask[267].Value;
5177 glowSourceRect = new Rectangle(tileFrameX, tileFrameY + addFrY, tileWidth, tileHeight);
5178 glowColor = new Color(200, 200, 200, 0) * ((float)(int)Main.mouseTextColor / 255f);
5179 }
5180 addFrY = 0;
5181 break;
5182 case 184:
5183 if (tileCache.frameX == 110)
5184 {
5185 glowTexture = TextureAssets.GlowMask[127].Value;
5186 glowSourceRect = new Rectangle(tileFrameX, tileFrameY, tileWidth, tileHeight);
5187 glowColor = _lavaMossGlow;
5188 }
5189 if (tileCache.frameX == 132)
5190 {
5191 glowTexture = TextureAssets.GlowMask[127].Value;
5192 glowSourceRect = new Rectangle(tileFrameX, tileFrameY, tileWidth, tileHeight);
5193 glowColor = _kryptonMossGlow;
5194 }
5195 if (tileCache.frameX == 154)
5196 {
5197 glowTexture = TextureAssets.GlowMask[127].Value;
5198 glowSourceRect = new Rectangle(tileFrameX, tileFrameY, tileWidth, tileHeight);
5199 glowColor = _xenonMossGlow;
5200 }
5201 if (tileCache.frameX == 176)
5202 {
5203 glowTexture = TextureAssets.GlowMask[127].Value;
5204 glowSourceRect = new Rectangle(tileFrameX, tileFrameY, tileWidth, tileHeight);
5205 glowColor = _argonMossGlow;
5206 }
5207 if (tileCache.frameX == 198)
5208 {
5209 glowTexture = TextureAssets.GlowMask[127].Value;
5210 glowSourceRect = new Rectangle(tileFrameX, tileFrameY, tileWidth, tileHeight);
5211 glowColor = _violetMossGlow;
5212 }
5213 if (tileCache.frameX == 220)
5214 {
5215 glowTexture = TextureAssets.GlowMask[127].Value;
5216 glowSourceRect = new Rectangle(tileFrameX, tileFrameY, tileWidth, tileHeight);
5217 glowColor = new Color(Main.DiscoR, Main.DiscoG, Main.DiscoB);
5218 }
5219 break;
5220 case 463:
5221 glowTexture = TextureAssets.GlowMask[243].Value;
5222 glowSourceRect = new Rectangle(tileFrameX, tileFrameY + addFrY, tileWidth, tileHeight);
5223 glowColor = new Color(127, 127, 127, 0);
5224 break;
5225 case 19:
5226 {
5227 int num73 = tileFrameY / 18;
5228 if (num73 == 26)
5229 {
5230 glowTexture = TextureAssets.GlowMask[65].Value;
5231 glowSourceRect = new Rectangle(tileFrameX, tileFrameY % 18, tileWidth, tileHeight);
5232 glowColor = _martianGlow;
5233 }
5234 if (num73 == 27)
5235 {
5236 glowTexture = TextureAssets.GlowMask[112].Value;
5237 glowSourceRect = new Rectangle(tileFrameX, tileFrameY % 18, tileWidth, tileHeight);
5238 glowColor = _meteorGlow;
5239 }
5240 break;
5241 }
5242 case 90:
5243 {
5244 int num67 = tileFrameY / 36;
5245 if (num67 == 27)
5246 {
5247 glowTexture = TextureAssets.GlowMask[52].Value;
5248 glowSourceRect = new Rectangle(tileFrameX, tileFrameY % 36, tileWidth, tileHeight);
5249 glowColor = _martianGlow;
5250 }
5251 if (num67 == 28)
5252 {
5253 glowTexture = TextureAssets.GlowMask[113].Value;
5254 glowSourceRect = new Rectangle(tileFrameX, tileFrameY % 36, tileWidth, tileHeight);
5255 glowColor = _meteorGlow;
5256 }
5257 break;
5258 }
5259 case 79:
5260 {
5261 int num63 = tileFrameY / 36;
5262 if (num63 == 27)
5263 {
5264 glowTexture = TextureAssets.GlowMask[53].Value;
5265 glowSourceRect = new Rectangle(tileFrameX, tileFrameY % 36, tileWidth, tileHeight);
5266 glowColor = _martianGlow;
5267 }
5268 if (num63 == 28)
5269 {
5270 glowTexture = TextureAssets.GlowMask[114].Value;
5271 glowSourceRect = new Rectangle(tileFrameX, tileFrameY % 36, tileWidth, tileHeight);
5272 glowColor = _meteorGlow;
5273 }
5274 break;
5275 }
5276 case 89:
5277 {
5278 int num56 = tileFrameX / 54;
5279 int num57 = tileFrameX / 1998;
5280 addFrX -= 1998 * num57;
5281 addFrY += 36 * num57;
5282 if (num56 == 29)
5283 {
5284 glowTexture = TextureAssets.GlowMask[66].Value;
5285 glowSourceRect = new Rectangle(tileFrameX % 54, tileFrameY, tileWidth, tileHeight);
5286 glowColor = _martianGlow;
5287 }
5288 if (num56 == 30)
5289 {
5290 glowTexture = TextureAssets.GlowMask[123].Value;
5291 glowSourceRect = new Rectangle(tileFrameX % 54, tileFrameY, tileWidth, tileHeight);
5292 glowColor = _meteorGlow;
5293 }
5294 break;
5295 }
5296 case 100:
5297 if (tileFrameX / 36 == 0 && tileFrameY / 36 == 27)
5298 {
5299 glowTexture = TextureAssets.GlowMask[68].Value;
5300 glowSourceRect = new Rectangle(tileFrameX, tileFrameY % 36, tileWidth, tileHeight);
5301 glowColor = _martianGlow;
5302 }
5303 break;
5304 case 33:
5305 if (tileFrameX / 18 == 0 && tileFrameY / 22 == 26)
5306 {
5307 glowTexture = TextureAssets.GlowMask[61].Value;
5308 glowSourceRect = new Rectangle(tileFrameX, tileFrameY % 22, tileWidth, tileHeight);
5309 glowColor = _martianGlow;
5310 }
5311 break;
5312 case 15:
5313 {
5314 int num70 = tileFrameY / 40;
5315 if (num70 == 32)
5316 {
5317 glowTexture = TextureAssets.GlowMask[54].Value;
5318 glowSourceRect = new Rectangle(tileFrameX, tileFrameY % 40, tileWidth, tileHeight);
5319 glowColor = _martianGlow;
5320 }
5321 if (num70 == 33)
5322 {
5323 glowTexture = TextureAssets.GlowMask[116].Value;
5324 glowSourceRect = new Rectangle(tileFrameX, tileFrameY % 40, tileWidth, tileHeight);
5325 glowColor = _meteorGlow;
5326 }
5327 break;
5328 }
5329 case 34:
5330 if (tileFrameX / 54 == 0 && tileFrameY / 54 == 33)
5331 {
5332 glowTexture = TextureAssets.GlowMask[55].Value;
5333 glowSourceRect = new Rectangle(tileFrameX, tileFrameY % 54, tileWidth, tileHeight);
5334 glowColor = _martianGlow;
5335 }
5336 break;
5337 case 21:
5338 case 467:
5339 {
5340 int num62 = tileFrameX / 36;
5341 if (num62 == 48)
5342 {
5343 glowTexture = TextureAssets.GlowMask[56].Value;
5344 glowSourceRect = new Rectangle(tileFrameX % 36, tileFrameY, tileWidth, tileHeight);
5345 glowColor = _martianGlow;
5346 }
5347 if (num62 == 49)
5348 {
5349 glowTexture = TextureAssets.GlowMask[117].Value;
5350 glowSourceRect = new Rectangle(tileFrameX % 36, tileFrameY, tileWidth, tileHeight);
5351 glowColor = _meteorGlow;
5352 }
5353 break;
5354 }
5355 case 441:
5356 case 468:
5357 {
5358 int num58 = tileFrameX / 36;
5359 if (num58 == 48)
5360 {
5361 glowTexture = TextureAssets.GlowMask[56].Value;
5362 glowSourceRect = new Rectangle(tileFrameX % 36, tileFrameY, tileWidth, tileHeight);
5363 glowColor = _martianGlow;
5364 }
5365 if (num58 == 49)
5366 {
5367 glowTexture = TextureAssets.GlowMask[117].Value;
5368 glowSourceRect = new Rectangle(tileFrameX % 36, tileFrameY, tileWidth, tileHeight);
5369 glowColor = _meteorGlow;
5370 }
5371 break;
5372 }
5373 case 10:
5374 if (tileFrameY / 54 == 32)
5375 {
5376 glowTexture = TextureAssets.GlowMask[57].Value;
5377 glowSourceRect = new Rectangle(tileFrameX, tileFrameY % 54, tileWidth, tileHeight);
5378 glowColor = _martianGlow;
5379 }
5380 break;
5381 case 11:
5382 {
5383 int num74 = tileFrameY / 54;
5384 if (num74 == 32)
5385 {
5386 glowTexture = TextureAssets.GlowMask[58].Value;
5387 glowSourceRect = new Rectangle(tileFrameX, tileFrameY % 54, tileWidth, tileHeight);
5388 glowColor = _martianGlow;
5389 }
5390 if (num74 == 33)
5391 {
5392 glowTexture = TextureAssets.GlowMask[119].Value;
5393 glowSourceRect = new Rectangle(tileFrameX, tileFrameY % 54, tileWidth, tileHeight);
5394 glowColor = _meteorGlow;
5395 }
5396 break;
5397 }
5398 case 88:
5399 {
5400 int num71 = tileFrameX / 54;
5401 int num72 = tileFrameX / 1998;
5402 addFrX -= 1998 * num72;
5403 addFrY += 36 * num72;
5404 if (num71 == 24)
5405 {
5406 glowTexture = TextureAssets.GlowMask[59].Value;
5407 glowSourceRect = new Rectangle(tileFrameX % 54, tileFrameY, tileWidth, tileHeight);
5408 glowColor = _martianGlow;
5409 }
5410 if (num71 == 25)
5411 {
5412 glowTexture = TextureAssets.GlowMask[120].Value;
5413 glowSourceRect = new Rectangle(tileFrameX % 54, tileFrameY, tileWidth, tileHeight);
5414 glowColor = _meteorGlow;
5415 }
5416 break;
5417 }
5418 case 42:
5419 if (tileFrameY / 36 == 33)
5420 {
5421 glowTexture = TextureAssets.GlowMask[63].Value;
5422 glowSourceRect = new Rectangle(tileFrameX, tileFrameY % 36, tileWidth, tileHeight);
5423 glowColor = _martianGlow;
5424 }
5425 break;
5426 case 87:
5427 {
5428 int num68 = tileFrameX / 54;
5429 int num69 = tileFrameX / 1998;
5430 addFrX -= 1998 * num69;
5431 addFrY += 36 * num69;
5432 if (num68 == 26)
5433 {
5434 glowTexture = TextureAssets.GlowMask[64].Value;
5435 glowSourceRect = new Rectangle(tileFrameX % 54, tileFrameY, tileWidth, tileHeight);
5436 glowColor = _martianGlow;
5437 }
5438 if (num68 == 27)
5439 {
5440 glowTexture = TextureAssets.GlowMask[121].Value;
5441 glowSourceRect = new Rectangle(tileFrameX % 54, tileFrameY, tileWidth, tileHeight);
5442 glowColor = _meteorGlow;
5443 }
5444 break;
5445 }
5446 case 14:
5447 {
5448 int num66 = tileFrameX / 54;
5449 if (num66 == 31)
5450 {
5451 glowTexture = TextureAssets.GlowMask[67].Value;
5452 glowSourceRect = new Rectangle(tileFrameX % 54, tileFrameY, tileWidth, tileHeight);
5453 glowColor = _martianGlow;
5454 }
5455 if (num66 == 32)
5456 {
5457 glowTexture = TextureAssets.GlowMask[124].Value;
5458 glowSourceRect = new Rectangle(tileFrameX % 54, tileFrameY, tileWidth, tileHeight);
5459 glowColor = _meteorGlow;
5460 }
5461 break;
5462 }
5463 case 93:
5464 {
5465 int num64 = tileFrameY / 54;
5466 int num65 = tileFrameY / 1998;
5467 addFrY -= 1998 * num65;
5468 addFrX += 36 * num65;
5469 tileTop += 2;
5470 if (num64 == 27)
5471 {
5472 glowTexture = TextureAssets.GlowMask[62].Value;
5473 glowSourceRect = new Rectangle(tileFrameX, tileFrameY % 54, tileWidth, tileHeight);
5474 glowColor = _martianGlow;
5475 }
5476 break;
5477 }
5478 case 18:
5479 {
5480 int num61 = tileFrameX / 36;
5481 if (num61 == 27)
5482 {
5483 glowTexture = TextureAssets.GlowMask[69].Value;
5484 glowSourceRect = new Rectangle(tileFrameX % 36, tileFrameY, tileWidth, tileHeight);
5485 glowColor = _martianGlow;
5486 }
5487 if (num61 == 28)
5488 {
5489 glowTexture = TextureAssets.GlowMask[125].Value;
5490 glowSourceRect = new Rectangle(tileFrameX % 36, tileFrameY, tileWidth, tileHeight);
5491 glowColor = _meteorGlow;
5492 }
5493 break;
5494 }
5495 case 101:
5496 {
5497 int num59 = tileFrameX / 54;
5498 int num60 = tileFrameX / 1998;
5499 addFrX -= 1998 * num60;
5500 addFrY += 72 * num60;
5501 if (num59 == 28)
5502 {
5503 glowTexture = TextureAssets.GlowMask[60].Value;
5504 glowSourceRect = new Rectangle(tileFrameX % 54, tileFrameY, tileWidth, tileHeight);
5505 glowColor = _martianGlow;
5506 }
5507 if (num59 == 29)
5508 {
5509 glowTexture = TextureAssets.GlowMask[115].Value;
5510 glowSourceRect = new Rectangle(tileFrameX % 54, tileFrameY, tileWidth, tileHeight);
5511 glowColor = _meteorGlow;
5512 }
5513 break;
5514 }
5515 case 104:
5516 {
5517 int num55 = tileFrameX / 36;
5518 tileTop = 2;
5519 if (num55 == 24)
5520 {
5521 glowTexture = TextureAssets.GlowMask[51].Value;
5522 glowSourceRect = new Rectangle(tileFrameX % 36, tileFrameY, tileWidth, tileHeight);
5523 glowColor = _martianGlow;
5524 }
5525 if (num55 == 25)
5526 {
5527 glowTexture = TextureAssets.GlowMask[118].Value;
5528 glowSourceRect = new Rectangle(tileFrameX % 36, tileFrameY, tileWidth, tileHeight);
5529 glowColor = _meteorGlow;
5530 }
5531 break;
5532 }
5533 case 172:
5534 {
5535 int num54 = tileFrameY / 38;
5536 if (num54 == 28)
5537 {
5538 glowTexture = TextureAssets.GlowMask[88].Value;
5539 glowSourceRect = new Rectangle(tileFrameX, tileFrameY % 38, tileWidth, tileHeight);
5540 glowColor = _martianGlow;
5541 }
5542 if (num54 == 29)
5543 {
5544 glowTexture = TextureAssets.GlowMask[122].Value;
5545 glowSourceRect = new Rectangle(tileFrameX, tileFrameY % 38, tileWidth, tileHeight);
5546 glowColor = _meteorGlow;
5547 }
5548 break;
5549 }
5550 }
5551 }
5552
5553 private bool IsWindBlocked(int x, int y)
5554 {
5555 Tile tile = Main.tile[x, y];
5556 if (tile == null)
5557 {
5558 return true;
5559 }
5560 if (tile.wall > 0 && !WallID.Sets.AllowsWind[tile.wall])
5561 {
5562 return true;
5563 }
5564 if ((double)y > Main.worldSurface)
5565 {
5566 return true;
5567 }
5568 return false;
5569 }
5570
5571 private int GetWaterAnimalCageFrame(int x, int y, int tileFrameX, int tileFrameY)
5572 {
5573 int num = x - tileFrameX / 18;
5574 int num2 = y - tileFrameY / 18;
5575 return num / 2 * (num2 / 3) % Main.cageFrames;
5576 }
5577
5578 private int GetSmallAnimalCageFrame(int x, int y, int tileFrameX, int tileFrameY)
5579 {
5580 int num = x - tileFrameX / 18;
5581 int num2 = y - tileFrameY / 18;
5582 return num / 3 * (num2 / 3) % Main.cageFrames;
5583 }
5584
5585 private int GetBigAnimalCageFrame(int x, int y, int tileFrameX, int tileFrameY)
5586 {
5587 int num = x - tileFrameX / 18;
5588 int num2 = y - tileFrameY / 18;
5589 return num / 6 * (num2 / 4) % Main.cageFrames;
5590 }
5591
5592 private void GetScreenDrawArea(Vector2 screenPosition, Vector2 offSet, out int firstTileX, out int lastTileX, out int firstTileY, out int lastTileY)
5593 {
5594 firstTileX = (int)((screenPosition.X - offSet.X) / 16f - 1f);
5595 lastTileX = (int)((screenPosition.X + (float)Main.screenWidth + offSet.X) / 16f) + 2;
5596 firstTileY = (int)((screenPosition.Y - offSet.Y) / 16f - 1f);
5597 lastTileY = (int)((screenPosition.Y + (float)Main.screenHeight + offSet.Y) / 16f) + 5;
5598 if (firstTileX < 4)
5599 {
5600 firstTileX = 4;
5601 }
5602 if (lastTileX > Main.maxTilesX - 4)
5603 {
5604 lastTileX = Main.maxTilesX - 4;
5605 }
5606 if (firstTileY < 4)
5607 {
5608 firstTileY = 4;
5609 }
5610 if (lastTileY > Main.maxTilesY - 4)
5611 {
5612 lastTileY = Main.maxTilesY - 4;
5613 }
5614 if (Main.sectionManager.AnyUnfinishedSections)
5615 {
5617 WorldGen.SectionTileFrameWithCheck(firstTileX, firstTileY, lastTileX, lastTileY);
5619 }
5620 if (Main.sectionManager.AnyNeedRefresh)
5621 {
5622 WorldGen.RefreshSections(firstTileX, firstTileY, lastTileX, lastTileY);
5623 }
5624 }
5625
5636
5638 {
5640 }
5641
5642 private void AddSpecialLegacyPoint(int x, int y)
5643 {
5647 }
5648
5658
5659 private Color DrawTiles_GetLightOverride(int j, int i, Tile tileCache, ushort typeCache, short tileFrameX, short tileFrameY, Color tileLight)
5660 {
5661 if (tileCache.fullbrightBlock())
5662 {
5663 return Color.White;
5664 }
5665 switch (typeCache)
5666 {
5667 case 541:
5668 case 631:
5669 return Color.White;
5670 case 19:
5671 if (tileFrameY / 18 == 48)
5672 {
5673 return Color.White;
5674 }
5675 break;
5676 case 83:
5677 {
5678 int num = tileFrameX / 18;
5679 if (!IsAlchemyPlantHarvestable(num))
5680 {
5681 break;
5682 }
5683 if (num == 5)
5684 {
5685 tileLight.A = (byte)(Main.mouseTextColor / 2);
5686 tileLight.G = Main.mouseTextColor;
5687 tileLight.B = Main.mouseTextColor;
5688 }
5689 if (num == 6)
5690 {
5691 byte b6 = (byte)((Main.mouseTextColor + tileLight.G * 2) / 3);
5692 byte b7 = (byte)((Main.mouseTextColor + tileLight.B * 2) / 3);
5693 if (b6 > tileLight.G)
5694 {
5695 tileLight.G = b6;
5696 }
5697 if (b7 > tileLight.B)
5698 {
5699 tileLight.B = b7;
5700 }
5701 }
5702 break;
5703 }
5704 case 61:
5705 if (tileFrameX == 144)
5706 {
5707 byte b2 = (tileLight.B = (byte)(245f - (float)(int)Main.mouseTextColor * 1.5f));
5708 byte b4 = (tileLight.G = b2);
5709 byte a = (tileLight.R = b4);
5710 tileLight.A = a;
5711 }
5712 break;
5713 }
5714 return tileLight;
5715 }
5716
5717 private void DrawTiles_EmitParticles(int j, int i, Tile tileCache, ushort typeCache, short tileFrameX, short tileFrameY, Color tileLight)
5718 {
5719 bool num = IsVisible(tileCache);
5721 leafFrequency /= 4;
5722 if (typeCache == 244 && tileFrameX == 18 && tileFrameY == 18 && _rand.Next(2) == 0)
5723 {
5724 if (_rand.Next(500) == 0)
5725 {
5726 Gore.NewGore(new Vector2(i * 16 + 8, j * 16 + 8), default(Vector2), 415, (float)_rand.Next(51, 101) * 0.01f);
5727 }
5728 else if (_rand.Next(250) == 0)
5729 {
5730 Gore.NewGore(new Vector2(i * 16 + 8, j * 16 + 8), default(Vector2), 414, (float)_rand.Next(51, 101) * 0.01f);
5731 }
5732 else if (_rand.Next(80) == 0)
5733 {
5734 Gore.NewGore(new Vector2(i * 16 + 8, j * 16 + 8), default(Vector2), 413, (float)_rand.Next(51, 101) * 0.01f);
5735 }
5736 else if (_rand.Next(10) == 0)
5737 {
5738 Gore.NewGore(new Vector2(i * 16 + 8, j * 16 + 8), default(Vector2), 412, (float)_rand.Next(51, 101) * 0.01f);
5739 }
5740 else if (_rand.Next(3) == 0)
5741 {
5742 Gore.NewGore(new Vector2(i * 16 + 8, j * 16 + 8), default(Vector2), 411, (float)_rand.Next(51, 101) * 0.01f);
5743 }
5744 }
5745 if (typeCache == 565 && tileFrameX == 0 && tileFrameY == 18 && _rand.Next(3) == 0 && ((Main.drawToScreen && _rand.Next(4) == 0) || !Main.drawToScreen))
5746 {
5747 Vector2 vector = new Point(i, j).ToWorldCoordinates();
5748 int type = 1202;
5749 float scale = 8f + Main.rand.NextFloat() * 1.6f;
5750 Vector2 position = vector + new Vector2(0f, -18f);
5751 Vector2 velocity = Main.rand.NextVector2Circular(0.7f, 0.25f) * 0.4f + Main.rand.NextVector2CircularEdge(1f, 0.4f) * 0.1f;
5752 velocity *= 4f;
5753 Gore.NewGorePerfect(position, velocity, type, scale);
5754 }
5755 if (typeCache == 215 && tileFrameY < 36 && _rand.Next(3) == 0 && ((Main.drawToScreen && _rand.Next(4) == 0) || !Main.drawToScreen) && tileFrameY == 0)
5756 {
5757 int num2 = Dust.NewDust(new Vector2(i * 16 + 2, j * 16 - 4), 4, 8, 31, 0f, 0f, 100);
5758 if (tileFrameX == 0)
5759 {
5760 _dust[num2].position.X += _rand.Next(8);
5761 }
5762 if (tileFrameX == 36)
5763 {
5764 _dust[num2].position.X -= _rand.Next(8);
5765 }
5766 _dust[num2].alpha += _rand.Next(100);
5767 _dust[num2].velocity *= 0.2f;
5768 _dust[num2].velocity.Y -= 0.5f + (float)_rand.Next(10) * 0.1f;
5769 _dust[num2].fadeIn = 0.5f + (float)_rand.Next(10) * 0.1f;
5770 }
5771 if (typeCache == 592 && tileFrameY == 18 && _rand.Next(3) == 0)
5772 {
5773 if ((Main.drawToScreen && _rand.Next(6) == 0) || !Main.drawToScreen)
5774 {
5775 int num3 = Dust.NewDust(new Vector2(i * 16 + 2, j * 16 + 4), 4, 8, 31, 0f, 0f, 100);
5776 if (tileFrameX == 0)
5777 {
5778 _dust[num3].position.X += _rand.Next(8);
5779 }
5780 if (tileFrameX == 36)
5781 {
5782 _dust[num3].position.X -= _rand.Next(8);
5783 }
5784 _dust[num3].alpha += _rand.Next(100);
5785 _dust[num3].velocity *= 0.2f;
5786 _dust[num3].velocity.Y -= 0.5f + (float)_rand.Next(10) * 0.1f;
5787 _dust[num3].fadeIn = 0.5f + (float)_rand.Next(10) * 0.1f;
5788 }
5789 }
5790 else if (typeCache == 406 && tileFrameY == 54 && tileFrameX == 0 && _rand.Next(3) == 0)
5791 {
5792 Vector2 position2 = new Vector2(i * 16 + 16, j * 16 + 8);
5793 Vector2 velocity2 = new Vector2(0f, 0f);
5794 if (Main.WindForVisuals < 0f)
5795 {
5796 velocity2.X = 0f - Main.WindForVisuals;
5797 }
5798 int type2 = _rand.Next(825, 828);
5799 if (_rand.Next(4) == 0)
5800 {
5801 Gore.NewGore(position2, velocity2, type2, _rand.NextFloat() * 0.2f + 0.2f);
5802 }
5803 else if (_rand.Next(2) == 0)
5804 {
5805 Gore.NewGore(position2, velocity2, type2, _rand.NextFloat() * 0.3f + 0.3f);
5806 }
5807 else
5808 {
5809 Gore.NewGore(position2, velocity2, type2, _rand.NextFloat() * 0.4f + 0.4f);
5810 }
5811 }
5812 else if (typeCache == 452 && tileFrameY == 0 && tileFrameX == 0 && _rand.Next(3) == 0)
5813 {
5814 Vector2 position3 = new Vector2(i * 16 + 16, j * 16 + 8);
5815 Vector2 velocity3 = new Vector2(0f, 0f);
5816 if (Main.WindForVisuals < 0f)
5817 {
5818 velocity3.X = 0f - Main.WindForVisuals;
5819 }
5820 int num4 = Main.tileFrame[typeCache];
5821 int type3 = 907 + num4 / 5;
5822 if (_rand.Next(2) == 0)
5823 {
5824 Gore.NewGore(position3, velocity3, type3, _rand.NextFloat() * 0.4f + 0.4f);
5825 }
5826 }
5827 if (typeCache == 192 && _rand.Next(leafFrequency) == 0)
5828 {
5829 EmitLivingTreeLeaf(i, j, 910);
5830 }
5831 if (typeCache == 384 && _rand.Next(leafFrequency) == 0)
5832 {
5833 EmitLivingTreeLeaf(i, j, 914);
5834 }
5835 if (typeCache == 666 && _rand.Next(100) == 0 && j - 1 > 0 && !WorldGen.ActiveAndWalkableTile(i, j - 1))
5836 {
5838 {
5839 PositionInWorld = new Vector2(i * 16 + 8, j * 16 - 8)
5840 });
5841 }
5842 if (!num)
5843 {
5844 return;
5845 }
5846 if (typeCache == 238 && _rand.Next(10) == 0)
5847 {
5848 int num5 = Dust.NewDust(new Vector2(i * 16, j * 16), 16, 16, 168);
5849 _dust[num5].noGravity = true;
5850 _dust[num5].alpha = 200;
5851 }
5852 if (typeCache == 139)
5853 {
5854 if (tileCache.frameX == 36 && tileCache.frameY % 36 == 0 && (int)Main.timeForVisualEffects % 7 == 0 && _rand.Next(3) == 0)
5855 {
5856 int num6 = _rand.Next(570, 573);
5857 Vector2 position4 = new Vector2(i * 16 + 8, j * 16 - 8);
5858 Vector2 velocity4 = new Vector2(Main.WindForVisuals * 2f, -0.5f);
5859 velocity4.X *= 1f + (float)_rand.Next(-50, 51) * 0.01f;
5860 velocity4.Y *= 1f + (float)_rand.Next(-50, 51) * 0.01f;
5861 if (num6 == 572)
5862 {
5863 position4.X -= 8f;
5864 }
5865 if (num6 == 571)
5866 {
5867 position4.X -= 4f;
5868 }
5870 }
5871 }
5872 else if (typeCache == 463)
5873 {
5874 if (tileFrameY == 54 && tileFrameX == 0)
5875 {
5876 for (int k = 0; k < 4; k++)
5877 {
5878 if (_rand.Next(2) != 0)
5879 {
5880 Dust dust = Dust.NewDustDirect(new Vector2(i * 16 + 4, j * 16), 36, 8, 16);
5881 dust.noGravity = true;
5882 dust.alpha = 140;
5883 dust.fadeIn = 1.2f;
5884 dust.velocity = Vector2.Zero;
5885 }
5886 }
5887 }
5888 if (tileFrameY == 18 && (tileFrameX == 0 || tileFrameX == 36))
5889 {
5890 for (int l = 0; l < 1; l++)
5891 {
5892 if (_rand.Next(13) == 0)
5893 {
5894 Dust dust2 = Dust.NewDustDirect(new Vector2(i * 16, j * 16), 8, 8, 274);
5895 dust2.position = new Vector2(i * 16 + 8, j * 16 + 8);
5896 dust2.position.X += ((tileFrameX == 36) ? 4 : (-4));
5897 dust2.noGravity = true;
5898 dust2.alpha = 128;
5899 dust2.fadeIn = 1.2f;
5900 dust2.noLight = true;
5901 dust2.velocity = new Vector2(0f, _rand.NextFloatDirection() * 1.2f);
5902 }
5903 }
5904 }
5905 }
5906 else if (typeCache == 497)
5907 {
5908 if (tileCache.frameY / 40 == 31 && tileCache.frameY % 40 == 0)
5909 {
5910 for (int m = 0; m < 1; m++)
5911 {
5912 if (_rand.Next(10) == 0)
5913 {
5914 Dust dust3 = Dust.NewDustDirect(new Vector2(i * 16, j * 16 + 8), 16, 12, 43);
5915 dust3.noGravity = true;
5916 dust3.alpha = 254;
5917 dust3.color = Color.White;
5918 dust3.scale = 0.7f;
5919 dust3.velocity = Vector2.Zero;
5920 dust3.noLight = true;
5921 }
5922 }
5923 }
5924 }
5925 else if (typeCache == 165 && tileFrameX >= 162 && tileFrameX <= 214 && tileFrameY == 72)
5926 {
5927 if (_rand.Next(60) == 0)
5928 {
5929 int num7 = Dust.NewDust(new Vector2(i * 16 + 2, j * 16 + 6), 8, 4, 153);
5930 _dust[num7].scale -= (float)_rand.Next(3) * 0.1f;
5931 _dust[num7].velocity.Y = 0f;
5932 _dust[num7].velocity.X *= 0.05f;
5933 _dust[num7].alpha = 100;
5934 }
5935 }
5936 else if (typeCache == 42 && tileFrameX == 0)
5937 {
5938 int num8 = tileFrameY / 36;
5939 int num9 = tileFrameY / 18 % 2;
5940 if (num8 == 7 && num9 == 1)
5941 {
5942 if (_rand.Next(50) == 0)
5943 {
5944 int num10 = Dust.NewDust(new Vector2(i * 16 + 4, j * 16 + 4), 8, 8, 58, 0f, 0f, 150);
5945 _dust[num10].velocity *= 0.5f;
5946 }
5947 if (_rand.Next(100) == 0)
5948 {
5949 int num11 = Gore.NewGore(new Vector2(i * 16 - 2, j * 16 - 4), default(Vector2), _rand.Next(16, 18));
5950 _gore[num11].scale *= 0.7f;
5951 _gore[num11].velocity *= 0.25f;
5952 }
5953 }
5954 else if (num8 == 29 && num9 == 1 && _rand.Next(40) == 0)
5955 {
5956 int num12 = Dust.NewDust(new Vector2(i * 16 + 4, j * 16), 8, 8, 59, 0f, 0f, 100);
5957 if (_rand.Next(3) != 0)
5958 {
5959 _dust[num12].noGravity = true;
5960 }
5961 _dust[num12].velocity *= 0.3f;
5962 _dust[num12].velocity.Y -= 1.5f;
5963 }
5964 }
5965 if (typeCache == 4 && _rand.Next(40) == 0 && tileFrameX < 66)
5966 {
5967 int num13 = (int)MathHelper.Clamp(tileCache.frameY / 22, 0f, TorchID.Count - 1);
5968 int num14 = TorchID.Dust[num13];
5969 int num15 = 0;
5970 num15 = tileFrameX switch
5971 {
5972 22 => Dust.NewDust(new Vector2(i * 16 + 6, j * 16), 4, 4, num14, 0f, 0f, 100),
5973 44 => Dust.NewDust(new Vector2(i * 16 + 2, j * 16), 4, 4, num14, 0f, 0f, 100),
5974 _ => Dust.NewDust(new Vector2(i * 16 + 4, j * 16), 4, 4, num14, 0f, 0f, 100),
5975 };
5976 if (_rand.Next(3) != 0)
5977 {
5978 _dust[num15].noGravity = true;
5979 }
5980 _dust[num15].velocity *= 0.3f;
5981 _dust[num15].velocity.Y -= 1.5f;
5982 if (num14 == 66)
5983 {
5985 _dust[num15].noGravity = true;
5986 }
5987 }
5988 if (typeCache == 93 && _rand.Next(40) == 0 && tileFrameX == 0)
5989 {
5990 int num16 = tileFrameY / 54;
5991 if (tileFrameY / 18 % 3 == 0)
5992 {
5993 int num17;
5994 switch (num16)
5995 {
5996 case 0:
5997 case 6:
5998 case 7:
5999 case 8:
6000 case 10:
6001 case 14:
6002 case 15:
6003 case 16:
6004 num17 = 6;
6005 break;
6006 case 20:
6007 num17 = 59;
6008 break;
6009 default:
6010 num17 = -1;
6011 break;
6012 }
6013 if (num17 != -1)
6014 {
6015 int num18 = Dust.NewDust(new Vector2(i * 16 + 4, j * 16 + 2), 4, 4, num17, 0f, 0f, 100);
6016 if (_rand.Next(3) != 0)
6017 {
6018 _dust[num18].noGravity = true;
6019 }
6020 _dust[num18].velocity *= 0.3f;
6021 _dust[num18].velocity.Y -= 1.5f;
6022 }
6023 }
6024 }
6025 if (typeCache == 100 && _rand.Next(40) == 0 && tileFrameX < 36)
6026 {
6027 int num19 = tileFrameY / 36;
6028 if (tileFrameY / 18 % 2 == 0)
6029 {
6030 int num20;
6031 switch (num19)
6032 {
6033 case 0:
6034 case 5:
6035 case 7:
6036 case 8:
6037 case 10:
6038 case 12:
6039 case 14:
6040 case 15:
6041 case 16:
6042 num20 = 6;
6043 break;
6044 case 20:
6045 num20 = 59;
6046 break;
6047 default:
6048 num20 = -1;
6049 break;
6050 }
6051 if (num20 != -1)
6052 {
6053 int num21 = 0;
6054 Vector2 position5 = ((tileFrameX == 0) ? ((_rand.Next(3) != 0) ? new Vector2(i * 16 + 14, j * 16 + 2) : new Vector2(i * 16 + 4, j * 16 + 2)) : ((_rand.Next(3) != 0) ? new Vector2(i * 16, j * 16 + 2) : new Vector2(i * 16 + 6, j * 16 + 2)));
6055 num21 = Dust.NewDust(position5, 4, 4, num20, 0f, 0f, 100);
6056 if (_rand.Next(3) != 0)
6057 {
6058 _dust[num21].noGravity = true;
6059 }
6060 _dust[num21].velocity *= 0.3f;
6061 _dust[num21].velocity.Y -= 1.5f;
6062 }
6063 }
6064 }
6065 if (typeCache == 98 && _rand.Next(40) == 0 && tileFrameY == 0 && tileFrameX == 0)
6066 {
6067 int num22 = Dust.NewDust(new Vector2(i * 16 + 12, j * 16 + 2), 4, 4, 6, 0f, 0f, 100);
6068 if (_rand.Next(3) != 0)
6069 {
6070 _dust[num22].noGravity = true;
6071 }
6072 _dust[num22].velocity *= 0.3f;
6073 _dust[num22].velocity.Y -= 1.5f;
6074 }
6075 if (typeCache == 49 && tileFrameX == 0 && _rand.Next(2) == 0)
6076 {
6077 int num23 = Dust.NewDust(new Vector2(i * 16 + 4, j * 16 - 4), 4, 4, 172, 0f, 0f, 100);
6078 if (_rand.Next(3) == 0)
6079 {
6080 _dust[num23].scale = 0.5f;
6081 }
6082 else
6083 {
6084 _dust[num23].scale = 0.9f;
6085 _dust[num23].noGravity = true;
6086 }
6087 _dust[num23].velocity *= 0.3f;
6088 _dust[num23].velocity.Y -= 1.5f;
6089 }
6090 if (typeCache == 372 && tileFrameX == 0 && _rand.Next(2) == 0)
6091 {
6092 int num24 = Dust.NewDust(new Vector2(i * 16 + 4, j * 16 - 4), 4, 4, 242, 0f, 0f, 100);
6093 if (_rand.Next(3) == 0)
6094 {
6095 _dust[num24].scale = 0.5f;
6096 }
6097 else
6098 {
6099 _dust[num24].scale = 0.9f;
6100 _dust[num24].noGravity = true;
6101 }
6102 _dust[num24].velocity *= 0.3f;
6103 _dust[num24].velocity.Y -= 1.5f;
6104 }
6105 if (typeCache == 646 && tileFrameX == 0)
6106 {
6107 _rand.Next(2);
6108 }
6109 if (typeCache == 34 && _rand.Next(40) == 0 && tileFrameX < 54)
6110 {
6111 int num25 = tileFrameY / 54;
6112 int num26 = tileFrameX / 18 % 3;
6113 if (tileFrameY / 18 % 3 == 1 && num26 != 1)
6114 {
6115 int num27;
6116 switch (num25)
6117 {
6118 case 0:
6119 case 1:
6120 case 2:
6121 case 3:
6122 case 4:
6123 case 5:
6124 case 12:
6125 case 13:
6126 case 16:
6127 case 19:
6128 case 21:
6129 num27 = 6;
6130 break;
6131 case 25:
6132 num27 = 59;
6133 break;
6134 default:
6135 num27 = -1;
6136 break;
6137 }
6138 if (num27 != -1)
6139 {
6140 int num28 = Dust.NewDust(new Vector2(i * 16, j * 16 + 2), 14, 6, num27, 0f, 0f, 100);
6141 if (_rand.Next(3) != 0)
6142 {
6143 _dust[num28].noGravity = true;
6144 }
6145 _dust[num28].velocity *= 0.3f;
6146 _dust[num28].velocity.Y -= 1.5f;
6147 }
6148 }
6149 }
6150 if (typeCache == 83)
6151 {
6152 int style = tileFrameX / 18;
6153 if (IsAlchemyPlantHarvestable(style))
6154 {
6155 EmitAlchemyHerbParticles(j, i, style);
6156 }
6157 }
6158 if (typeCache == 22 && _rand.Next(400) == 0)
6159 {
6160 Dust.NewDust(new Vector2(i * 16, j * 16), 16, 16, 14);
6161 }
6162 else if ((typeCache == 23 || typeCache == 24 || typeCache == 32) && _rand.Next(500) == 0)
6163 {
6164 Dust.NewDust(new Vector2(i * 16, j * 16), 16, 16, 14);
6165 }
6166 else if (typeCache == 25 && _rand.Next(700) == 0)
6167 {
6168 Dust.NewDust(new Vector2(i * 16, j * 16), 16, 16, 14);
6169 }
6170 else if (typeCache == 112 && _rand.Next(700) == 0)
6171 {
6172 Dust.NewDust(new Vector2(i * 16, j * 16), 16, 16, 14);
6173 }
6174 else if (typeCache == 31 && _rand.Next(20) == 0)
6175 {
6176 if (tileFrameX >= 36)
6177 {
6178 int num29 = Dust.NewDust(new Vector2(i * 16, j * 16), 16, 16, 5, 0f, 0f, 100);
6179 _dust[num29].velocity.Y = 0f;
6180 _dust[num29].velocity.X *= 0.3f;
6181 }
6182 else
6183 {
6184 Dust.NewDust(new Vector2(i * 16, j * 16), 16, 16, 14, 0f, 0f, 100);
6185 }
6186 }
6187 else if (typeCache == 26 && _rand.Next(20) == 0)
6188 {
6189 if (tileFrameX >= 54)
6190 {
6191 int num30 = Dust.NewDust(new Vector2(i * 16, j * 16), 16, 16, 5, 0f, 0f, 100);
6192 _dust[num30].scale = 1.5f;
6193 _dust[num30].noGravity = true;
6194 _dust[num30].velocity *= 0.75f;
6195 }
6196 else
6197 {
6198 Dust.NewDust(new Vector2(i * 16, j * 16), 16, 16, 14, 0f, 0f, 100);
6199 }
6200 }
6201 else if ((typeCache == 71 || typeCache == 72) && tileCache.color() == 0 && _rand.Next(500) == 0)
6202 {
6203 Dust.NewDust(new Vector2(i * 16, j * 16), 16, 16, 41, 0f, 0f, 250, default(Color), 0.8f);
6204 }
6205 else if ((typeCache == 17 || typeCache == 77 || typeCache == 133) && _rand.Next(40) == 0)
6206 {
6207 if (tileFrameX == 18 && tileFrameY == 18)
6208 {
6209 int num31 = Dust.NewDust(new Vector2(i * 16 - 4, j * 16 - 6), 8, 6, 6, 0f, 0f, 100);
6210 if (_rand.Next(3) != 0)
6211 {
6212 _dust[num31].noGravity = true;
6213 }
6214 }
6215 }
6216 else if (typeCache == 405 && _rand.Next(20) == 0)
6217 {
6218 if (tileFrameX == 18 && tileFrameY == 18)
6219 {
6220 int num32 = Dust.NewDust(new Vector2(i * 16 - 4, j * 16 - 6), 24, 10, 6, 0f, 0f, 100);
6221 if (_rand.Next(5) != 0)
6222 {
6223 _dust[num32].noGravity = true;
6224 }
6225 }
6226 }
6227 else if (typeCache == 37 && _rand.Next(250) == 0)
6228 {
6229 int num33 = Dust.NewDust(new Vector2(i * 16, j * 16), 16, 16, 6, 0f, 0f, 0, default(Color), _rand.Next(3));
6230 if (_dust[num33].scale > 1f)
6231 {
6232 _dust[num33].noGravity = true;
6233 }
6234 }
6235 else if ((typeCache == 58 || typeCache == 76 || typeCache == 684) && _rand.Next(250) == 0)
6236 {
6237 int num34 = Dust.NewDust(new Vector2(i * 16, j * 16), 16, 16, 6, 0f, 0f, 0, default(Color), _rand.Next(3));
6238 if (_dust[num34].scale > 1f)
6239 {
6240 _dust[num34].noGravity = true;
6241 }
6242 _dust[num34].noLight = true;
6243 }
6244 else if (typeCache == 61)
6245 {
6246 if (tileFrameX == 144 && _rand.Next(60) == 0)
6247 {
6248 int num35 = Dust.NewDust(new Vector2(i * 16, j * 16), 16, 16, 44, 0f, 0f, 250, default(Color), 0.4f);
6249 _dust[num35].fadeIn = 0.7f;
6250 }
6251 }
6252 else if (Main.tileShine[typeCache] > 0)
6253 {
6254 if (tileLight.R <= 20 && tileLight.B <= 20 && tileLight.G <= 20)
6255 {
6256 return;
6257 }
6258 int num36 = tileLight.R;
6259 if (tileLight.G > num36)
6260 {
6261 num36 = tileLight.G;
6262 }
6263 if (tileLight.B > num36)
6264 {
6265 num36 = tileLight.B;
6266 }
6267 num36 /= 30;
6268 if (_rand.Next(Main.tileShine[typeCache]) >= num36 || ((typeCache == 21 || typeCache == 441) && (tileFrameX < 36 || tileFrameX >= 180) && (tileFrameX < 396 || tileFrameX > 409)) || ((typeCache == 467 || typeCache == 468) && (tileFrameX < 144 || tileFrameX >= 180)))
6269 {
6270 return;
6271 }
6273 switch (typeCache)
6274 {
6275 case 178:
6276 {
6277 switch (tileFrameX / 18)
6278 {
6279 case 0:
6280 newColor = new Color(255, 0, 255, 255);
6281 break;
6282 case 1:
6283 newColor = new Color(255, 255, 0, 255);
6284 break;
6285 case 2:
6286 newColor = new Color(0, 0, 255, 255);
6287 break;
6288 case 3:
6289 newColor = new Color(0, 255, 0, 255);
6290 break;
6291 case 4:
6292 newColor = new Color(255, 0, 0, 255);
6293 break;
6294 case 5:
6295 newColor = new Color(255, 255, 255, 255);
6296 break;
6297 case 6:
6298 newColor = new Color(255, 255, 0, 255);
6299 break;
6300 }
6301 int num37 = Dust.NewDust(new Vector2(i * 16, j * 16), 16, 16, 43, 0f, 0f, 254, newColor, 0.5f);
6302 _dust[num37].velocity *= 0f;
6303 return;
6304 }
6305 case 63:
6306 newColor = new Color(0, 0, 255, 255);
6307 break;
6308 }
6309 if (typeCache == 64)
6310 {
6311 newColor = new Color(255, 0, 0, 255);
6312 }
6313 if (typeCache == 65)
6314 {
6315 newColor = new Color(0, 255, 0, 255);
6316 }
6317 if (typeCache == 66)
6318 {
6319 newColor = new Color(255, 255, 0, 255);
6320 }
6321 if (typeCache == 67)
6322 {
6323 newColor = new Color(255, 0, 255, 255);
6324 }
6325 if (typeCache == 68)
6326 {
6327 newColor = new Color(255, 255, 255, 255);
6328 }
6329 if (typeCache == 12 || typeCache == 665)
6330 {
6331 newColor = new Color(255, 0, 0, 255);
6332 }
6333 if (typeCache == 639)
6334 {
6335 newColor = new Color(0, 0, 255, 255);
6336 }
6337 if (typeCache == 204)
6338 {
6339 newColor = new Color(255, 0, 0, 255);
6340 }
6341 if (typeCache == 211)
6342 {
6343 newColor = new Color(50, 255, 100, 255);
6344 }
6345 int num38 = Dust.NewDust(new Vector2(i * 16, j * 16), 16, 16, 43, 0f, 0f, 254, newColor, 0.5f);
6346 _dust[num38].velocity *= 0f;
6347 }
6348 else if (Main.tileSolid[tileCache.type] && Main.shimmerAlpha > 0f && (tileLight.R > 20 || tileLight.B > 20 || tileLight.G > 20))
6349 {
6350 int num39 = tileLight.R;
6351 if (tileLight.G > num39)
6352 {
6353 num39 = tileLight.G;
6354 }
6355 if (tileLight.B > num39)
6356 {
6357 num39 = tileLight.B;
6358 }
6359 int maxValue = 500;
6360 if ((float)_rand.Next(maxValue) < 2f * Main.shimmerAlpha)
6361 {
6363 float scale2 = ((float)num39 / 255f + 1f) / 2f;
6364 int num40 = Dust.NewDust(new Vector2(i * 16, j * 16), 16, 16, 43, 0f, 0f, 254, white, scale2);
6365 _dust[num40].velocity *= 0f;
6366 }
6367 }
6368 }
6369
6370 private void EmitLivingTreeLeaf(int i, int j, int leafGoreType)
6371 {
6373 if (_rand.Next(2) == 0)
6374 {
6376 }
6377 }
6378
6379 private void EmitLivingTreeLeaf_Below(int x, int y, int leafGoreType)
6380 {
6381 Tile tile = Main.tile[x, y + 1];
6382 if (!WorldGen.SolidTile(tile) && tile.liquid <= 0)
6383 {
6385 if ((!(windForVisuals < -0.2f) || (!WorldGen.SolidTile(Main.tile[x - 1, y + 1]) && !WorldGen.SolidTile(Main.tile[x - 2, y + 1]))) && (!(windForVisuals > 0.2f) || (!WorldGen.SolidTile(Main.tile[x + 1, y + 1]) && !WorldGen.SolidTile(Main.tile[x + 2, y + 1]))))
6386 {
6387 Gore.NewGorePerfect(new Vector2(x * 16, y * 16 + 16), Vector2.Zero, leafGoreType).Frame.CurrentColumn = Main.tile[x, y].color();
6388 }
6389 }
6390 }
6391
6392 private void EmitLivingTreeLeaf_Sideways(int x, int y, int leafGoreType)
6393 {
6394 int num = 0;
6395 if (Main.WindForVisuals > 0.2f)
6396 {
6397 num = 1;
6398 }
6399 else if (Main.WindForVisuals < -0.2f)
6400 {
6401 num = -1;
6402 }
6403 Tile tile = Main.tile[x + num, y];
6404 if (!WorldGen.SolidTile(tile) && tile.liquid <= 0)
6405 {
6406 int num2 = 0;
6407 if (num == -1)
6408 {
6409 num2 = -10;
6410 }
6411 Gore.NewGorePerfect(new Vector2(x * 16 + 8 + 4 * num + num2, y * 16 + 8), Vector2.Zero, leafGoreType).Frame.CurrentColumn = Main.tile[x, y].color();
6412 }
6413 }
6414
6415 private void EmitLiquidDrops(int j, int i, Tile tileCache, ushort typeCache)
6416 {
6417 int num = 60;
6418 switch (typeCache)
6419 {
6420 case 374:
6421 num = 120;
6422 break;
6423 case 375:
6424 num = 180;
6425 break;
6426 case 461:
6427 num = 180;
6428 break;
6429 }
6430 if (tileCache.liquid != 0 || _rand.Next(num * 2) != 0)
6431 {
6432 return;
6433 }
6434 Rectangle rectangle = new Rectangle(i * 16, j * 16, 16, 16);
6435 rectangle.X -= 34;
6436 rectangle.Width += 68;
6437 rectangle.Y -= 100;
6438 rectangle.Height = 400;
6439 for (int k = 0; k < 600; k++)
6440 {
6441 if (_gore[k].active && ((_gore[k].type >= 706 && _gore[k].type <= 717) || _gore[k].type == 943 || _gore[k].type == 1147 || (_gore[k].type >= 1160 && _gore[k].type <= 1162)))
6442 {
6443 Rectangle value = new Rectangle((int)_gore[k].position.X, (int)_gore[k].position.Y, 16, 16);
6444 if (rectangle.Intersects(value))
6445 {
6446 return;
6447 }
6448 }
6449 }
6450 Vector2 position = new Vector2(i * 16, j * 16);
6451 int type = 706;
6452 if (Main.waterStyle == 14)
6453 {
6454 type = 706;
6455 }
6456 else if (Main.waterStyle == 13)
6457 {
6458 type = 706;
6459 }
6460 else if (Main.waterStyle == 12)
6461 {
6462 type = 1147;
6463 }
6464 else if (Main.waterStyle > 1)
6465 {
6466 type = 706 + Main.waterStyle - 1;
6467 }
6468 if (typeCache == 374)
6469 {
6470 type = 716;
6471 }
6472 if (typeCache == 375)
6473 {
6474 type = 717;
6475 }
6476 if (typeCache == 461)
6477 {
6478 type = 943;
6479 if (Main.player[Main.myPlayer].ZoneCorrupt)
6480 {
6481 type = 1160;
6482 }
6483 if (Main.player[Main.myPlayer].ZoneCrimson)
6484 {
6485 type = 1161;
6486 }
6487 if (Main.player[Main.myPlayer].ZoneHallow)
6488 {
6489 type = 1162;
6490 }
6491 }
6492 int num2 = Gore.NewGore(position, default(Vector2), type);
6493 _gore[num2].velocity *= 0f;
6494 }
6495
6496 private float GetWindCycle(int x, int y, double windCounter)
6497 {
6499 {
6500 return 0f;
6501 }
6502 float num = (float)x * 0.5f + (float)(y / 100) * 0.5f;
6503 float num2 = (float)Math.Cos(windCounter * 6.2831854820251465 + (double)num) * 0.5f;
6504 if (Main.remixWorld)
6505 {
6506 if (!((double)y > Main.worldSurface))
6507 {
6508 return 0f;
6509 }
6511 }
6512 else
6513 {
6514 if (!((double)y < Main.worldSurface))
6515 {
6516 return 0f;
6517 }
6519 }
6520 float lerpValue = Utils.GetLerpValue(0.08f, 0.18f, Math.Abs(Main.WindForVisuals), clamped: true);
6521 return num2 * lerpValue;
6522 }
6523
6524 private bool ShouldSwayInWind(int x, int y, Tile tileCache)
6525 {
6527 {
6528 return false;
6529 }
6530 if (!TileID.Sets.SwaysInWindBasic[tileCache.type])
6531 {
6532 return false;
6533 }
6534 if (tileCache.type == 227 && (tileCache.frameX == 204 || tileCache.frameX == 238 || tileCache.frameX == 408 || tileCache.frameX == 442 || tileCache.frameX == 476))
6535 {
6536 return false;
6537 }
6538 return true;
6539 }
6540
6541 private void UpdateLeafFrequency()
6542 {
6543 float num = Math.Abs(Main.WindForVisuals);
6544 if (num <= 0.1f)
6545 {
6546 _leafFrequency = 2000;
6547 }
6548 else if (num <= 0.2f)
6549 {
6550 _leafFrequency = 1000;
6551 }
6552 else if (num <= 0.3f)
6553 {
6554 _leafFrequency = 450;
6555 }
6556 else if (num <= 0.4f)
6557 {
6558 _leafFrequency = 300;
6559 }
6560 else if (num <= 0.5f)
6561 {
6562 _leafFrequency = 200;
6563 }
6564 else if (num <= 0.6f)
6565 {
6566 _leafFrequency = 130;
6567 }
6568 else if (num <= 0.7f)
6569 {
6570 _leafFrequency = 75;
6571 }
6572 else if (num <= 0.8f)
6573 {
6574 _leafFrequency = 50;
6575 }
6576 else if (num <= 0.9f)
6577 {
6578 _leafFrequency = 40;
6579 }
6580 else if (num <= 1f)
6581 {
6582 _leafFrequency = 30;
6583 }
6584 else if (num <= 1.1f)
6585 {
6586 _leafFrequency = 20;
6587 }
6588 else
6589 {
6590 _leafFrequency = 10;
6591 }
6592 _leafFrequency *= 7;
6593 }
6594
6595 private void EnsureWindGridSize()
6596 {
6597 Vector2 unscaledPosition = Main.Camera.UnscaledPosition;
6599 if (Main.drawToScreen)
6600 {
6602 }
6603 GetScreenDrawArea(unscaledPosition, offSet, out var firstTileX, out var lastTileX, out var firstTileY, out var lastTileY);
6604 _windGrid.SetSize(lastTileX - firstTileX, lastTileY - firstTileY);
6605 }
6606
6607 private void EmitTreeLeaves(int tilePosX, int tilePosY, int grassPosX, int grassPosY)
6608 {
6610 {
6611 return;
6612 }
6614 Tile tile = Main.tile[tilePosX, tilePosY];
6615 if (tile.liquid > 0)
6616 {
6617 return;
6618 }
6620 int num;
6621 switch (passStyle)
6622 {
6623 case -1:
6624 case 912:
6625 case 913:
6626 case 1278:
6627 return;
6628 default:
6629 num = ((passStyle >= 1113 && passStyle <= 1121) ? 1 : 0);
6630 break;
6631 case 917:
6632 case 918:
6633 case 919:
6634 case 920:
6635 case 921:
6636 case 922:
6637 case 923:
6638 case 924:
6639 case 925:
6640 num = 1;
6641 break;
6642 }
6643 bool flag = (byte)num != 0;
6644 int num2 = _leafFrequency;
6645 bool flag2 = tilePosX - grassPosX != 0;
6646 if (flag)
6647 {
6648 num2 /= 2;
6649 }
6651 {
6652 num2 = 10000;
6653 }
6654 if (flag2)
6655 {
6656 num2 *= 3;
6657 }
6658 if (_rand.Next(num2) != 0)
6659 {
6660 return;
6661 }
6662 int num3 = 2;
6663 Vector2 vector = new Vector2(tilePosX * 16 + 8, tilePosY * 16 + 8);
6664 if (flag2)
6665 {
6666 int num4 = tilePosX - grassPosX;
6667 vector.X += num4 * 12;
6668 int num5 = 0;
6669 if (tile.frameY == 220)
6670 {
6671 num5 = 1;
6672 }
6673 else if (tile.frameY == 242)
6674 {
6675 num5 = 2;
6676 }
6677 if (tile.frameX == 66)
6678 {
6679 switch (num5)
6680 {
6681 case 0:
6682 vector += new Vector2(0f, -6f);
6683 break;
6684 case 1:
6685 vector += new Vector2(0f, -6f);
6686 break;
6687 case 2:
6688 vector += new Vector2(0f, 8f);
6689 break;
6690 }
6691 }
6692 else
6693 {
6694 switch (num5)
6695 {
6696 case 0:
6697 vector += new Vector2(0f, 4f);
6698 break;
6699 case 1:
6700 vector += new Vector2(2f, -6f);
6701 break;
6702 case 2:
6703 vector += new Vector2(6f, -6f);
6704 break;
6705 }
6706 }
6707 }
6708 else
6709 {
6710 vector += new Vector2(-16f, -16f);
6711 if (flag)
6712 {
6713 vector.Y -= Main.rand.Next(0, 28) * 4;
6714 }
6715 }
6716 if (!WorldGen.SolidTile(vector.ToTileCoordinates()))
6717 {
6718 Gore.NewGoreDirect(vector, Utils.RandomVector2(Main.rand, -num3, num3), passStyle, 0.7f + Main.rand.NextFloat() * 0.6f).Frame.CurrentColumn = Main.tile[tilePosX, tilePosY].color();
6719 }
6720 }
6721
6722 private void DrawSpecialTilesLegacy(Vector2 screenPosition, Vector2 offSet)
6723 {
6724 for (int i = 0; i < _specialTilesCount; i++)
6725 {
6726 int num = _specialTileX[i];
6727 int num2 = _specialTileY[i];
6728 Tile tile = Main.tile[num, num2];
6729 ushort type = tile.type;
6730 short frameX = tile.frameX;
6731 short frameY = tile.frameY;
6732 if (type == 237)
6733 {
6734 Main.spriteBatch.Draw(TextureAssets.SunOrb.Value, new Vector2((float)(num * 16 - (int)screenPosition.X) + 8f, num2 * 16 - (int)screenPosition.Y - 36) + offSet, new Rectangle(0, 0, TextureAssets.SunOrb.Width(), TextureAssets.SunOrb.Height()), new Color(Main.mouseTextColor, Main.mouseTextColor, Main.mouseTextColor, 0), Main.sunCircle, new Vector2(TextureAssets.SunOrb.Width() / 2, TextureAssets.SunOrb.Height() / 2), 1f, SpriteEffects.None, 0f);
6735 }
6736 if (type == 334 && frameX >= 5000)
6737 {
6738 _ = frameY / 18;
6739 int num3 = frameX;
6740 int num4 = 0;
6741 int num5 = num3 % 5000;
6742 num5 -= 100;
6743 while (num3 >= 5000)
6744 {
6745 num4++;
6746 num3 -= 5000;
6747 }
6748 int frameX2 = Main.tile[num + 1, num2].frameX;
6749 frameX2 = ((frameX2 < 25000) ? (frameX2 - 10000) : (frameX2 - 25000));
6750 Item item = new Item();
6751 item.netDefaults(num5);
6752 item.Prefix(frameX2);
6753 Main.instance.LoadItem(item.type);
6754 Texture2D value = TextureAssets.Item[item.type].Value;
6755 Rectangle value2 = ((Main.itemAnimations[item.type] == null) ? value.Frame() : Main.itemAnimations[item.type].GetFrame(value));
6756 int width = value2.Width;
6757 int height = value2.Height;
6758 float num6 = 1f;
6759 if (width > 40 || height > 40)
6760 {
6761 num6 = ((width <= height) ? (40f / (float)height) : (40f / (float)width));
6762 }
6763 num6 *= item.scale;
6764 SpriteEffects effects = SpriteEffects.None;
6765 if (num4 >= 3)
6766 {
6767 effects = SpriteEffects.FlipHorizontally;
6768 }
6769 Color color = Lighting.GetColor(num, num2);
6770 Main.spriteBatch.Draw(value, new Vector2(num * 16 - (int)screenPosition.X + 24, num2 * 16 - (int)screenPosition.Y + 8) + offSet, value2, Lighting.GetColor(num, num2), 0f, new Vector2(width / 2, height / 2), num6, effects, 0f);
6771 if (item.color != default(Color))
6772 {
6773 Main.spriteBatch.Draw(value, new Vector2(num * 16 - (int)screenPosition.X + 24, num2 * 16 - (int)screenPosition.Y + 8) + offSet, value2, item.GetColor(color), 0f, new Vector2(width / 2, height / 2), num6, effects, 0f);
6774 }
6775 }
6776 if (type == 395)
6777 {
6779 Vector2 screenPositionForItemCenter = new Vector2(num * 16 - (int)screenPosition.X + 16, num2 * 16 - (int)screenPosition.Y + 16) + offSet;
6782 }
6783 if (type == 520)
6784 {
6786 if (!item3.IsAir)
6787 {
6788 Main.instance.LoadItem(item3.type);
6789 Texture2D value3 = TextureAssets.Item[item3.type].Value;
6790 Rectangle value4 = ((!ItemID.Sets.IsFood[item3.type]) ? value3.Frame() : value3.Frame(1, 3, 0, 2));
6791 int width2 = value4.Width;
6792 int height2 = value4.Height;
6793 float num7 = 1f;
6794 SpriteEffects effects2 = ((tile.frameX == 0) ? SpriteEffects.FlipHorizontally : SpriteEffects.None);
6797 float scale = 1f;
6799 num7 *= scale;
6800 Vector2 position = new Vector2(num * 16 - (int)screenPosition.X + 8, num2 * 16 - (int)screenPosition.Y + 16) + offSet;
6801 position.Y += 2f;
6802 Vector2 origin = new Vector2(width2 / 2, height2);
6803 Main.spriteBatch.Draw(value3, position, value4, currentColor, 0f, origin, num7, effects2, 0f);
6804 if (item3.color != default(Color))
6805 {
6806 Main.spriteBatch.Draw(value3, position, value4, item3.GetColor(color3), 0f, origin, num7, effects2, 0f);
6807 }
6808 }
6809 }
6810 if (type == 471)
6811 {
6813 Main.GetItemDrawFrame(item4.type, out var itemTexture, out var itemFrame);
6814 int width3 = itemFrame.Width;
6815 int height3 = itemFrame.Height;
6816 float num8 = 1f;
6817 float num9 = 40f;
6818 if ((float)width3 > num9 || (float)height3 > num9)
6819 {
6820 num8 = ((width3 <= height3) ? (num9 / (float)height3) : (num9 / (float)width3));
6821 }
6822 num8 *= item4.scale;
6823 SpriteEffects effects3 = SpriteEffects.FlipHorizontally;
6824 if (tile.frameX < 54)
6825 {
6826 effects3 = SpriteEffects.None;
6827 }
6830 float scale2 = 1f;
6832 num8 *= scale2;
6833 Main.spriteBatch.Draw(itemTexture, new Vector2(num * 16 - (int)screenPosition.X + 24, num2 * 16 - (int)screenPosition.Y + 24) + offSet, itemFrame, currentColor2, 0f, new Vector2(width3 / 2, height3 / 2), num8, effects3, 0f);
6834 if (item4.color != default(Color))
6835 {
6836 Main.spriteBatch.Draw(itemTexture, new Vector2(num * 16 - (int)screenPosition.X + 24, num2 * 16 - (int)screenPosition.Y + 24) + offSet, itemFrame, item4.GetColor(color4), 0f, new Vector2(width3 / 2, height3 / 2), num8, effects3, 0f);
6837 }
6838 }
6839 if (type == 412)
6840 {
6842 int num10 = Main.tileFrame[type] / 60;
6843 int frameY2 = (num10 + 1) % 4;
6844 float num11 = (float)(Main.tileFrame[type] % 60) / 60f;
6845 Color color5 = new Color(255, 255, 255, 255);
6846 Main.spriteBatch.Draw(value5, new Vector2(num * 16 - (int)screenPosition.X, num2 * 16 - (int)screenPosition.Y + 10) + offSet, value5.Frame(1, 4, 0, num10), color5 * (1f - num11), 0f, Vector2.Zero, 1f, SpriteEffects.None, 0f);
6847 Main.spriteBatch.Draw(value5, new Vector2(num * 16 - (int)screenPosition.X, num2 * 16 - (int)screenPosition.Y + 10) + offSet, value5.Frame(1, 4, 0, frameY2), color5 * num11, 0f, Vector2.Zero, 1f, SpriteEffects.None, 0f);
6848 }
6849 if (type == 620)
6850 {
6851 Texture2D value6 = TextureAssets.Extra[202].Value;
6852 _ = (float)(Main.tileFrame[type] % 60) / 60f;
6853 int num12 = 2;
6854 Main.critterCage = true;
6855 int waterAnimalCageFrame = GetWaterAnimalCageFrame(num, num2, frameX, frameY);
6856 int num13 = 8;
6858 int num15 = 6;
6859 float num16 = 1f;
6860 Rectangle value7 = new Rectangle(0, 34 * num14, 32, 32);
6861 Vector2 vector = new Vector2(num * 16 - (int)screenPosition.X, num2 * 16 - (int)screenPosition.Y + num12) + offSet;
6862 Main.spriteBatch.Draw(value6, vector, value7, new Color(255, 255, 255, 255), 0f, Vector2.Zero, 1f, SpriteEffects.None, 0f);
6863 for (int j = 0; j < num15; j++)
6864 {
6865 Color color6 = new Color(127, 127, 127, 0).MultiplyRGBA(Main.hslToRgb((Main.GlobalTimeWrappedHourly + (float)j / (float)num15) % 1f, 1f, 0.5f));
6866 color6 *= 1f - num16 * 0.5f;
6867 color6.A = 0;
6868 int num17 = 2;
6869 Vector2 position2 = vector + ((float)j / (float)num15 * ((float)Math.PI * 2f)).ToRotationVector2() * ((float)num17 * num16 + 2f);
6871 }
6872 Main.spriteBatch.Draw(value6, vector, value7, new Color(255, 255, 255, 0) * 0.1f, 0f, Vector2.Zero, 1f, SpriteEffects.None, 0f);
6873 }
6874 }
6875 }
6876
6889
6902
6903 private void DrawTrees()
6904 {
6905 Vector2 unscaledPosition = Main.Camera.UnscaledPosition;
6907 int num = 0;
6908 int num2 = _specialsCount[num];
6909 float num3 = 0.08f;
6910 float num4 = 0.06f;
6911 for (int i = 0; i < num2; i++)
6912 {
6913 Point point = _specialPositions[num][i];
6914 int x = point.X;
6915 int y = point.Y;
6916 Tile tile = Main.tile[x, y];
6917 if (tile == null || !tile.active())
6918 {
6919 continue;
6920 }
6921 ushort type = tile.type;
6922 short frameX = tile.frameX;
6923 short frameY = tile.frameY;
6924 bool flag = tile.wall > 0;
6925 WorldGen.GetTreeFoliageDataMethod getTreeFoliageDataMethod = null;
6926 try
6927 {
6928 bool flag2 = false;
6929 switch (type)
6930 {
6931 case 5:
6932 flag2 = true;
6934 break;
6935 case 583:
6936 case 584:
6937 case 585:
6938 case 586:
6939 case 587:
6940 case 588:
6941 case 589:
6942 flag2 = true;
6944 break;
6945 case 596:
6946 case 616:
6947 flag2 = true;
6949 break;
6950 case 634:
6951 flag2 = true;
6953 break;
6954 }
6955 if (flag2 && frameY >= 198 && frameX >= 22)
6956 {
6957 int treeFrame = WorldGen.GetTreeFrame(tile);
6958 switch (frameX)
6959 {
6960 case 22:
6961 {
6962 int treeStyle3 = 0;
6963 int topTextureFrameWidth3 = 80;
6964 int topTextureFrameHeight3 = 80;
6965 int num13 = 0;
6966 int grassPosX = x + num13;
6967 int floorY3 = y;
6969 {
6970 continue;
6971 }
6973 if (treeStyle3 == 14)
6974 {
6975 float num14 = (float)_rand.Next(28, 42) * 0.005f;
6976 num14 += (float)(270 - Main.mouseTextColor) / 1000f;
6977 if (tile.color() == 0)
6978 {
6979 Lighting.AddLight(x, y, 0.1f, 0.2f + num14 / 2f, 0.7f + num14);
6980 }
6981 else
6982 {
6984 float r3 = (float)(int)color5.R / 255f;
6985 float g3 = (float)(int)color5.G / 255f;
6986 float b3 = (float)(int)color5.B / 255f;
6987 Lighting.AddLight(x, y, r3, g3, b3);
6988 }
6989 }
6990 byte tileColor3 = tile.color();
6992 Vector2 vector = (vector = new Vector2(x * 16 - (int)unscaledPosition.X + 8, y * 16 - (int)unscaledPosition.Y + 16) + zero);
6993 float num15 = 0f;
6994 if (!flag)
6995 {
6997 }
6998 vector.X += num15 * 2f;
6999 vector.Y += Math.Abs(num15) * 2f;
7000 Color color6 = Lighting.GetColor(x, y);
7001 if (tile.fullbrightBlock())
7002 {
7003 color6 = Color.White;
7004 }
7006 if (type == 634)
7007 {
7011 }
7012 break;
7013 }
7014 case 44:
7015 {
7016 int treeStyle2 = 0;
7017 int num9 = x;
7018 int floorY2 = y;
7019 int num10 = 1;
7021 {
7022 continue;
7023 }
7024 EmitTreeLeaves(x, y, num9 + num10, floorY2);
7025 if (treeStyle2 == 14)
7026 {
7027 float num11 = (float)_rand.Next(28, 42) * 0.005f;
7028 num11 += (float)(270 - Main.mouseTextColor) / 1000f;
7029 if (tile.color() == 0)
7030 {
7031 Lighting.AddLight(x, y, 0.1f, 0.2f + num11 / 2f, 0.7f + num11);
7032 }
7033 else
7034 {
7036 float r2 = (float)(int)color3.R / 255f;
7037 float g2 = (float)(int)color3.G / 255f;
7038 float b2 = (float)(int)color3.B / 255f;
7039 Lighting.AddLight(x, y, r2, g2, b2);
7040 }
7041 }
7042 byte tileColor2 = tile.color();
7044 Vector2 position2 = new Vector2(x * 16, y * 16) - unscaledPosition.Floor() + zero + new Vector2(16f, 12f);
7045 float num12 = 0f;
7046 if (!flag)
7047 {
7049 }
7050 if (num12 > 0f)
7051 {
7052 position2.X += num12;
7053 }
7054 position2.X += Math.Abs(num12) * 2f;
7055 Color color4 = Lighting.GetColor(x, y);
7056 if (tile.fullbrightBlock())
7057 {
7058 color4 = Color.White;
7059 }
7060 Main.spriteBatch.Draw(treeBranchTexture2, position2, new Rectangle(0, treeFrame * 42, 40, 40), color4, num12 * num4, new Vector2(40f, 24f), 1f, SpriteEffects.None, 0f);
7061 if (type == 634)
7062 {
7065 Main.spriteBatch.Draw(value2, position2, new Rectangle(0, treeFrame * 42, 40, 40), white2, num12 * num4, new Vector2(40f, 24f), 1f, SpriteEffects.None, 0f);
7066 }
7067 break;
7068 }
7069 case 66:
7070 {
7071 int treeStyle = 0;
7072 int num5 = x;
7073 int floorY = y;
7074 int num6 = -1;
7075 if (!getTreeFoliageDataMethod(x, y, num6, ref treeFrame, ref treeStyle, out floorY, out var _, out var _))
7076 {
7077 continue;
7078 }
7079 EmitTreeLeaves(x, y, num5 + num6, floorY);
7080 if (treeStyle == 14)
7081 {
7082 float num7 = (float)_rand.Next(28, 42) * 0.005f;
7083 num7 += (float)(270 - Main.mouseTextColor) / 1000f;
7084 if (tile.color() == 0)
7085 {
7086 Lighting.AddLight(x, y, 0.1f, 0.2f + num7 / 2f, 0.7f + num7);
7087 }
7088 else
7089 {
7090 Color color = WorldGen.paintColor(tile.color());
7091 float r = (float)(int)color.R / 255f;
7092 float g = (float)(int)color.G / 255f;
7093 float b = (float)(int)color.B / 255f;
7094 Lighting.AddLight(x, y, r, g, b);
7095 }
7096 }
7097 byte tileColor = tile.color();
7098 Texture2D treeBranchTexture = GetTreeBranchTexture(treeStyle, 0, tileColor);
7099 Vector2 position = new Vector2(x * 16, y * 16) - unscaledPosition.Floor() + zero + new Vector2(0f, 18f);
7100 float num8 = 0f;
7101 if (!flag)
7102 {
7104 }
7105 if (num8 < 0f)
7106 {
7107 position.X += num8;
7108 }
7109 position.X -= Math.Abs(num8) * 2f;
7110 Color color2 = Lighting.GetColor(x, y);
7111 if (tile.fullbrightBlock())
7112 {
7113 color2 = Color.White;
7114 }
7115 Main.spriteBatch.Draw(treeBranchTexture, position, new Rectangle(42, treeFrame * 42, 40, 40), color2, num8 * num4, new Vector2(0f, 30f), 1f, SpriteEffects.None, 0f);
7116 if (type == 634)
7117 {
7120 Main.spriteBatch.Draw(value, position, new Rectangle(42, treeFrame * 42, 40, 40), white, num8 * num4, new Vector2(0f, 30f), 1f, SpriteEffects.None, 0f);
7121 }
7122 break;
7123 }
7124 }
7125 }
7126 if (type == 323 && frameX >= 88 && frameX <= 132)
7127 {
7128 int num16 = 0;
7129 switch (frameX)
7130 {
7131 case 110:
7132 num16 = 1;
7133 break;
7134 case 132:
7135 num16 = 2;
7136 break;
7137 }
7138 int treeTextureIndex = 15;
7139 int num17 = 80;
7140 int num18 = 80;
7141 int num19 = 32;
7142 int num20 = 0;
7143 int palmTreeBiome = GetPalmTreeBiome(x, y);
7144 int y2 = palmTreeBiome * 82;
7145 if (palmTreeBiome >= 4 && palmTreeBiome <= 7)
7146 {
7147 treeTextureIndex = 21;
7148 num17 = 114;
7149 num18 = 98;
7150 y2 = (palmTreeBiome - 4) * 98;
7151 num19 = 48;
7152 num20 = 2;
7153 }
7154 int frameY2 = Main.tile[x, y].frameY;
7155 byte tileColor4 = tile.color();
7157 Vector2 position3 = new Vector2(x * 16 - (int)unscaledPosition.X - num19 + frameY2 + num17 / 2, y * 16 - (int)unscaledPosition.Y + 16 + num20) + zero;
7158 float num21 = 0f;
7159 if (!flag)
7160 {
7162 }
7163 position3.X += num21 * 2f;
7164 position3.Y += Math.Abs(num21) * 2f;
7165 Color color7 = Lighting.GetColor(x, y);
7166 if (tile.fullbrightBlock())
7167 {
7168 color7 = Color.White;
7169 }
7171 }
7172 }
7173 catch
7174 {
7175 }
7176 }
7177 }
7178
7188
7198
7199 private void DrawGrass()
7200 {
7201 Vector2 unscaledPosition = Main.Camera.UnscaledPosition;
7203 int num = 3;
7204 int num2 = _specialsCount[num];
7205 for (int i = 0; i < num2; i++)
7206 {
7207 Point point = _specialPositions[num][i];
7208 int x = point.X;
7209 int y = point.Y;
7210 Tile tile = Main.tile[x, y];
7211 if (tile == null || !tile.active() || !IsVisible(tile))
7212 {
7213 continue;
7214 }
7215 ushort type = tile.type;
7216 short tileFrameX = tile.frameX;
7217 short tileFrameY = tile.frameY;
7218 GetTileDrawData(x, y, tile, type, ref tileFrameX, ref tileFrameY, out var tileWidth, out var tileHeight, out var tileTop, out var halfBrickHeight, out var addFrX, out var addFrY, out var tileSpriteEffect, out var glowTexture, out var glowSourceRect, out var glowColor);
7219 bool flag = _rand.Next(4) == 0;
7220 Color tileLight = Lighting.GetColor(x, y);
7221 DrawAnimatedTile_AdjustForVisionChangers(x, y, tile, type, tileFrameX, tileFrameY, ref tileLight, flag);
7222 tileLight = DrawTiles_GetLightOverride(y, x, tile, type, tileFrameX, tileFrameY, tileLight);
7223 if (_isActiveAndNotPaused && flag)
7224 {
7225 DrawTiles_EmitParticles(y, x, tile, type, tileFrameX, tileFrameY, tileLight);
7226 }
7227 if (type == 83 && IsAlchemyPlantHarvestable(tileFrameX / 18))
7228 {
7229 type = 84;
7230 Main.instance.LoadTiles(type);
7231 }
7232 Vector2 position = new Vector2(x * 16 - (int)unscaledPosition.X + 8, y * 16 - (int)unscaledPosition.Y + 16) + zero;
7234 float num3 = GetWindCycle(x, y, _grassWindCounter);
7235 if (!WallID.Sets.AllowsWind[tile.wall])
7236 {
7237 num3 = 0f;
7238 }
7239 if (!InAPlaceWithWind(x, y, 1, 1))
7240 {
7241 num3 = 0f;
7242 }
7243 num3 += GetWindGridPush(x, y, 20, 0.35f);
7244 position.X += num3 * 1f;
7245 position.Y += Math.Abs(num3) * 1f;
7247 if (tileDrawTexture != null)
7248 {
7249 Main.spriteBatch.Draw(tileDrawTexture, position, new Rectangle(tileFrameX + addFrX, tileFrameY + addFrY, tileWidth, tileHeight - halfBrickHeight), tileLight, num3 * 0.1f, new Vector2(tileWidth / 2, 16 - halfBrickHeight - tileTop), 1f, tileSpriteEffect, 0f);
7250 if (glowTexture != null)
7251 {
7252 Main.spriteBatch.Draw(glowTexture, position, glowSourceRect, glowColor, num3 * 0.1f, new Vector2(tileWidth / 2, 16 - halfBrickHeight - tileTop), 1f, tileSpriteEffect, 0f);
7253 }
7254 }
7255 }
7256 }
7257
7259 {
7260 Vector2 unscaledPosition = Main.Camera.UnscaledPosition;
7262 int num = 12;
7263 int num2 = _specialsCount[num];
7264 for (int i = 0; i < num2; i++)
7265 {
7266 Point point = _specialPositions[num][i];
7267 int x = point.X;
7268 int y = point.Y;
7269 Tile tile = Main.tile[x, y];
7270 if (tile == null || !tile.active() || !IsVisible(tile))
7271 {
7272 continue;
7273 }
7274 ushort type = tile.type;
7275 short tileFrameX = tile.frameX;
7276 short tileFrameY = tile.frameY;
7277 GetTileDrawData(x, y, tile, type, ref tileFrameX, ref tileFrameY, out var tileWidth, out var tileHeight, out var tileTop, out var halfBrickHeight, out var addFrX, out var addFrY, out var tileSpriteEffect, out var glowTexture, out var _, out var glowColor);
7278 bool flag = _rand.Next(4) == 0;
7279 Color tileLight = Lighting.GetColor(x, y);
7280 DrawAnimatedTile_AdjustForVisionChangers(x, y, tile, type, tileFrameX, tileFrameY, ref tileLight, flag);
7281 tileLight = DrawTiles_GetLightOverride(y, x, tile, type, tileFrameX, tileFrameY, tileLight);
7282 if (_isActiveAndNotPaused && flag)
7283 {
7284 DrawTiles_EmitParticles(y, x, tile, type, tileFrameX, tileFrameY, tileLight);
7285 }
7286 if (type == 83 && IsAlchemyPlantHarvestable(tileFrameX / 18))
7287 {
7288 type = 84;
7289 Main.instance.LoadTiles(type);
7290 }
7291 Vector2 position = new Vector2(x * 16 - (int)unscaledPosition.X, y * 16 - (int)unscaledPosition.Y) + zero;
7293 float num3 = GetWindCycle(x, y, _grassWindCounter);
7294 if (!WallID.Sets.AllowsWind[tile.wall])
7295 {
7296 num3 = 0f;
7297 }
7298 if (!InAPlaceWithWind(x, y, 1, 1))
7299 {
7300 num3 = 0f;
7301 }
7302 GetWindGridPush2Axis(x, y, 20, 0.35f, out var pushX, out var pushY);
7303 int num4 = 1;
7304 int num5 = 0;
7305 Vector2 origin = new Vector2(tileWidth / 2, 16 - halfBrickHeight - tileTop);
7306 switch (tileFrameY / 54)
7307 {
7308 case 0:
7309 num4 = 1;
7310 num5 = 0;
7311 origin = new Vector2(tileWidth / 2, 16 - halfBrickHeight - tileTop);
7312 position.X += 8f;
7313 position.Y += 16f;
7314 position.X += num3;
7315 position.Y += Math.Abs(num3);
7316 break;
7317 case 1:
7318 num3 *= -1f;
7319 num4 = -1;
7320 num5 = 0;
7321 origin = new Vector2(tileWidth / 2, -tileTop);
7322 position.X += 8f;
7323 position.X += 0f - num3;
7324 position.Y += 0f - Math.Abs(num3);
7325 break;
7326 case 2:
7327 num4 = 0;
7328 num5 = 1;
7329 origin = new Vector2(2f, (16 - halfBrickHeight - tileTop) / 2);
7330 position.Y += 8f;
7331 position.Y += num3;
7332 position.X += 0f - Math.Abs(num3);
7333 break;
7334 case 3:
7335 num3 *= -1f;
7336 num4 = 0;
7337 num5 = -1;
7338 origin = new Vector2(14f, (16 - halfBrickHeight - tileTop) / 2);
7339 position.X += 16f;
7340 position.Y += 8f;
7341 position.Y += 0f - num3;
7342 position.X += Math.Abs(num3);
7343 break;
7344 }
7345 num3 += pushX * (float)num4 + pushY * (float)num5;
7347 if (tileDrawTexture != null)
7348 {
7349 Main.spriteBatch.Draw(tileDrawTexture, position, new Rectangle(tileFrameX + addFrX, tileFrameY + addFrY, tileWidth, tileHeight - halfBrickHeight), tileLight, num3 * 0.1f, origin, 1f, tileSpriteEffect, 0f);
7350 if (glowTexture != null)
7351 {
7352 Main.spriteBatch.Draw(glowTexture, position, new Rectangle(tileFrameX + addFrX, tileFrameY + addFrY, tileWidth, tileHeight - halfBrickHeight), glowColor, num3 * 0.1f, origin, 1f, tileSpriteEffect, 0f);
7353 }
7354 }
7355 }
7356 }
7357
7358 private void DrawAnimatedTile_AdjustForVisionChangers(int i, int j, Tile tileCache, ushort typeCache, short tileFrameX, short tileFrameY, ref Color tileLight, bool canDoDust)
7359 {
7360 if (_localPlayer.dangerSense && IsTileDangerous(_localPlayer, tileCache, typeCache))
7361 {
7362 if (tileLight.R < byte.MaxValue)
7363 {
7364 tileLight.R = byte.MaxValue;
7365 }
7366 if (tileLight.G < 50)
7367 {
7368 tileLight.G = 50;
7369 }
7370 if (tileLight.B < 50)
7371 {
7372 tileLight.B = 50;
7373 }
7374 if (_isActiveAndNotPaused && canDoDust && _rand.Next(30) == 0)
7375 {
7376 int num = Dust.NewDust(new Vector2(i * 16, j * 16), 16, 16, 60, 0f, 0f, 100, default(Color), 0.3f);
7377 _dust[num].fadeIn = 1f;
7378 _dust[num].velocity *= 0.1f;
7379 _dust[num].noLight = true;
7380 _dust[num].noGravity = true;
7381 }
7382 }
7383 if (_localPlayer.findTreasure && Main.IsTileSpelunkable(typeCache, tileFrameX, tileFrameY))
7384 {
7385 if (tileLight.R < 200)
7386 {
7387 tileLight.R = 200;
7388 }
7389 if (tileLight.G < 170)
7390 {
7391 tileLight.G = 170;
7392 }
7393 if (_isActiveAndNotPaused && _rand.Next(60) == 0 && canDoDust)
7394 {
7395 int num2 = Dust.NewDust(new Vector2(i * 16, j * 16), 16, 16, 204, 0f, 0f, 150, default(Color), 0.3f);
7396 _dust[num2].fadeIn = 1f;
7397 _dust[num2].velocity *= 0.1f;
7398 _dust[num2].noLight = true;
7399 }
7400 }
7402 {
7403 return;
7404 }
7406 if (Main.IsTileBiomeSightable(typeCache, tileFrameX, tileFrameY, ref sightColor))
7407 {
7408 if (tileLight.R < sightColor.R)
7409 {
7410 tileLight.R = sightColor.R;
7411 }
7412 if (tileLight.G < sightColor.G)
7413 {
7414 tileLight.G = sightColor.G;
7415 }
7416 if (tileLight.B < sightColor.B)
7417 {
7418 tileLight.B = sightColor.B;
7419 }
7420 if (_isActiveAndNotPaused && canDoDust && _rand.Next(480) == 0)
7421 {
7423 int num3 = Dust.NewDust(new Vector2(i * 16, j * 16), 16, 16, 267, 0f, 0f, 150, newColor, 0.3f);
7424 _dust[num3].noGravity = true;
7425 _dust[num3].fadeIn = 1f;
7426 _dust[num3].velocity *= 0.1f;
7427 _dust[num3].noLightEmittence = true;
7428 }
7429 }
7430 }
7431
7432 private float GetWindGridPush(int i, int j, int pushAnimationTimeTotal, float pushForcePerFrame)
7433 {
7436 {
7437 return (float)(pushAnimationTimeTotal - windTimeLeft) * pushForcePerFrame * (float)directionX;
7438 }
7439 return (float)windTimeLeft * pushForcePerFrame * (float)directionX;
7440 }
7441
7442 private void GetWindGridPush2Axis(int i, int j, int pushAnimationTimeTotal, float pushForcePerFrame, out float pushX, out float pushY)
7443 {
7446 {
7447 pushX = (float)(pushAnimationTimeTotal - windTimeLeft) * pushForcePerFrame * (float)directionX;
7448 pushY = (float)(pushAnimationTimeTotal - windTimeLeft) * pushForcePerFrame * (float)directionY;
7449 }
7450 else
7451 {
7452 pushX = (float)windTimeLeft * pushForcePerFrame * (float)directionX;
7453 pushY = (float)windTimeLeft * pushForcePerFrame * (float)directionY;
7454 }
7455 }
7456
7458 {
7460 float num = (float)windTimeLeft / (float)pushAnimationTimeTotal;
7461 int num2 = (int)(num * (float)loops);
7462 float num3 = num * (float)loops % 1f;
7463 _ = 1f / (float)loops;
7464 if (flipDirectionPerLoop && num2 % 2 == 1)
7465 {
7466 directionX *= -1;
7467 }
7468 if (num * (float)loops % 1f > 0.5f)
7469 {
7470 return (1f - num3) * totalPushForce * (float)directionX * (float)(loops - num2);
7471 }
7472 return num3 * totalPushForce * (float)directionX * (float)(loops - num2);
7473 }
7474
7475 private void DrawMasterTrophies()
7476 {
7477 int num = 11;
7478 int num2 = _specialsCount[num];
7479 for (int i = 0; i < num2; i++)
7480 {
7481 Point p = _specialPositions[num][i];
7482 Tile tile = Main.tile[p.X, p.Y];
7483 if (tile != null && tile.active())
7484 {
7485 Texture2D value = TextureAssets.Extra[198].Value;
7486 int frameY = tile.frameX / 54;
7487 bool num3 = tile.frameY / 72 != 0;
7488 int horizontalFrames = 1;
7489 int verticalFrames = 28;
7491 Vector2 origin = rectangle.Size() / 2f;
7492 Vector2 vector = p.ToWorldCoordinates(24f, 64f);
7493 float num4 = (float)Math.Sin(Main.GlobalTimeWrappedHourly * ((float)Math.PI * 2f) / 5f);
7494 Vector2 vector2 = vector + new Vector2(0f, -40f) + new Vector2(0f, num4 * 4f);
7495 Color color = Lighting.GetColor(p.X, p.Y);
7496 SpriteEffects effects = (num3 ? SpriteEffects.FlipHorizontally : SpriteEffects.None);
7497 Main.spriteBatch.Draw(value, vector2 - Main.screenPosition, rectangle, color, 0f, origin, 1f, effects, 0f);
7498 float num5 = (float)Math.Sin(Main.GlobalTimeWrappedHourly * ((float)Math.PI * 2f) / 2f) * 0.3f + 0.7f;
7499 Color color2 = color;
7500 color2.A = 0;
7501 color2 = color2 * 0.1f * num5;
7502 for (float num6 = 0f; num6 < 1f; num6 += 1f / 6f)
7503 {
7504 Main.spriteBatch.Draw(value, vector2 - Main.screenPosition + ((float)Math.PI * 2f * num6).ToRotationVector2() * (6f + num4 * 2f), rectangle, color2, 0f, origin, 1f, effects, 0f);
7505 }
7506 }
7507 }
7508 }
7509
7511 {
7512 int num = 10;
7513 int num2 = _specialsCount[num];
7514 for (int i = 0; i < num2; i++)
7515 {
7516 Point p = _specialPositions[num][i];
7517 Tile tile = Main.tile[p.X, p.Y];
7518 if (tile == null || !tile.active())
7519 {
7520 continue;
7521 }
7522 Texture2D value = TextureAssets.Extra[181].Value;
7523 int num3 = tile.frameX / 54;
7524 int num4 = 3;
7525 int horizontalFrames = num4 + 9;
7526 int verticalFrames = 8;
7527 int frameY = (Main.tileFrameCounter[597] + p.X + p.Y) % 64 / 8;
7530 value.Frame(horizontalFrames, verticalFrames, 0, frameY);
7531 Vector2 origin = rectangle.Size() / 2f;
7532 Vector2 vector = p.ToWorldCoordinates(24f, 64f);
7533 float num5 = (float)Math.Sin(Main.GlobalTimeWrappedHourly * ((float)Math.PI * 2f) / 5f);
7534 Vector2 vector2 = vector + new Vector2(0f, -40f) + new Vector2(0f, num5 * 4f);
7535 bool flag = _rand.Next(4) == 0;
7536 if (_isActiveAndNotPaused && flag && _rand.Next(10) == 0)
7537 {
7540 }
7541 Color color = Lighting.GetColor(p.X, p.Y);
7542 color = Color.Lerp(color, Color.White, 0.8f);
7543 Main.spriteBatch.Draw(value, vector2 - Main.screenPosition, rectangle, color * 0.7f, 0f, origin, 1f, SpriteEffects.None, 0f);
7544 float num6 = (float)Math.Sin(Main.GlobalTimeWrappedHourly * ((float)Math.PI * 2f) / 1f) * 0.2f + 0.8f;
7545 Color color2 = new Color(255, 255, 255, 0) * 0.1f * num6;
7546 for (float num7 = 0f; num7 < 1f; num7 += 1f / 6f)
7547 {
7548 Main.spriteBatch.Draw(value, vector2 - Main.screenPosition + ((float)Math.PI * 2f * num7).ToRotationVector2() * (6f + num5 * 2f), rectangle, color2, 0f, origin, 1f, SpriteEffects.None, 0f);
7549 }
7550 int num8 = 0;
7552 {
7553 num8 = 1;
7554 if (actuallySelected)
7555 {
7556 num8 = 2;
7557 }
7558 }
7559 if (num8 != 0)
7560 {
7561 int num9 = (color.R + color.G + color.B) / 3;
7562 if (num9 > 10)
7563 {
7564 Color selectionGlowColor = Colors.GetSelectionGlowColor(num8 == 2, num9);
7565 Main.spriteBatch.Draw(value, vector2 - Main.screenPosition, value2, selectionGlowColor, 0f, origin, 1f, SpriteEffects.None, 0f);
7566 }
7567 }
7568 }
7569 }
7570
7571 private void DrawVoidLenses()
7572 {
7573 int num = 8;
7574 int num2 = _specialsCount[num];
7576 for (int i = 0; i < num2; i++)
7577 {
7578 Point p = _specialPositions[num][i];
7579 VoidLensHelper voidLensHelper = new VoidLensHelper(p.ToWorldCoordinates(), 1f);
7580 if (!Main.gamePaused)
7581 {
7582 voidLensHelper.Update();
7583 }
7584 int selectionMode = 0;
7586 {
7587 selectionMode = 1;
7588 if (actuallySelected)
7589 {
7590 selectionMode = 2;
7591 }
7592 }
7594 }
7596 {
7598 }
7599 }
7600
7601 private void DrawMultiTileGrass()
7602 {
7603 Vector2 unscaledPosition = Main.Camera.UnscaledPosition;
7605 int num = 4;
7606 int num2 = _specialsCount[num];
7607 for (int i = 0; i < num2; i++)
7608 {
7609 Point point = _specialPositions[num][i];
7610 int x = point.X;
7611 int num3 = point.Y;
7612 int sizeX = 1;
7613 int num4 = 1;
7614 Tile tile = Main.tile[x, num3];
7615 if (tile != null && tile.active())
7616 {
7617 switch (Main.tile[x, num3].type)
7618 {
7619 case 27:
7620 sizeX = 2;
7621 num4 = 5;
7622 break;
7623 case 236:
7624 case 238:
7625 sizeX = (num4 = 2);
7626 break;
7627 case 233:
7628 sizeX = ((Main.tile[x, num3].frameY != 0) ? 2 : 3);
7629 num4 = 2;
7630 break;
7631 case 530:
7632 case 651:
7633 sizeX = 3;
7634 num4 = 2;
7635 break;
7636 case 485:
7637 case 490:
7638 case 521:
7639 case 522:
7640 case 523:
7641 case 524:
7642 case 525:
7643 case 526:
7644 case 527:
7645 case 652:
7646 sizeX = 2;
7647 num4 = 2;
7648 break;
7649 case 489:
7650 sizeX = 2;
7651 num4 = 3;
7652 break;
7653 case 493:
7654 sizeX = 1;
7655 num4 = 2;
7656 break;
7657 case 519:
7658 sizeX = 1;
7659 num4 = ClimbCatTail(x, num3);
7660 num3 -= num4 - 1;
7661 break;
7662 }
7664 }
7665 }
7666 }
7667
7668 private int ClimbCatTail(int originx, int originy)
7669 {
7670 int num = 0;
7671 int num2 = originy;
7672 while (num2 > 10)
7673 {
7674 Tile tile = Main.tile[originx, num2];
7675 if (!tile.active() || tile.type != 519)
7676 {
7677 break;
7678 }
7679 if (tile.frameX >= 180)
7680 {
7681 num++;
7682 break;
7683 }
7684 num2--;
7685 num++;
7686 }
7687 return num;
7688 }
7689
7690 private void DrawMultiTileVines()
7691 {
7692 Vector2 unscaledPosition = Main.Camera.UnscaledPosition;
7694 int num = 5;
7695 int num2 = _specialsCount[num];
7696 for (int i = 0; i < num2; i++)
7697 {
7698 Point point = _specialPositions[num][i];
7699 int x = point.X;
7700 int y = point.Y;
7701 int sizeX = 1;
7702 int sizeY = 1;
7703 Tile tile = Main.tile[x, y];
7704 if (tile != null && tile.active())
7705 {
7706 switch (Main.tile[x, y].type)
7707 {
7708 case 34:
7709 sizeX = 3;
7710 sizeY = 3;
7711 break;
7712 case 454:
7713 sizeX = 4;
7714 sizeY = 3;
7715 break;
7716 case 42:
7717 case 270:
7718 case 271:
7719 case 572:
7720 case 581:
7721 case 660:
7722 sizeX = 1;
7723 sizeY = 2;
7724 break;
7725 case 91:
7726 sizeX = 1;
7727 sizeY = 3;
7728 break;
7729 case 95:
7730 case 126:
7731 case 444:
7732 sizeX = 2;
7733 sizeY = 2;
7734 break;
7735 case 465:
7736 case 591:
7737 case 592:
7738 sizeX = 2;
7739 sizeY = 3;
7740 break;
7741 }
7743 }
7744 }
7745 }
7746
7747 private void DrawVines()
7748 {
7749 Vector2 unscaledPosition = Main.Camera.UnscaledPosition;
7751 int num = 6;
7752 int num2 = _specialsCount[num];
7753 for (int i = 0; i < num2; i++)
7754 {
7755 Point point = _specialPositions[num][i];
7756 int x = point.X;
7757 int y = point.Y;
7759 }
7760 }
7761
7762 private void DrawReverseVines()
7763 {
7764 Vector2 unscaledPosition = Main.Camera.UnscaledPosition;
7766 int num = 9;
7767 int num2 = _specialsCount[num];
7768 for (int i = 0; i < num2; i++)
7769 {
7770 Point point = _specialPositions[num][i];
7771 int x = point.X;
7772 int y = point.Y;
7774 }
7775 }
7776
7777 private void DrawMultiTileGrassInWind(Vector2 screenPosition, Vector2 offSet, int topLeftX, int topLeftY, int sizeX, int sizeY)
7778 {
7780 new Vector2((float)(sizeX * 16) * 0.5f, sizeY * 16);
7781 Vector2 vector = new Vector2((float)(topLeftX * 16 - (int)screenPosition.X) + (float)sizeX * 16f * 0.5f, topLeftY * 16 - (int)screenPosition.Y + 16 * sizeY) + offSet;
7782 float num = 0.07f;
7783 int type = Main.tile[topLeftX, topLeftY].type;
7784 Texture2D texture2D = null;
7785 Color color = Color.Transparent;
7787 switch (type)
7788 {
7789 case 27:
7790 texture2D = TextureAssets.Flames[14].Value;
7791 color = Color.White;
7792 break;
7793 case 519:
7795 break;
7796 default:
7797 num = 0.15f;
7798 break;
7799 case 521:
7800 case 522:
7801 case 523:
7802 case 524:
7803 case 525:
7804 case 526:
7805 case 527:
7806 num = 0f;
7807 flag = false;
7808 break;
7809 }
7810 for (int i = topLeftX; i < topLeftX + sizeX; i++)
7811 {
7812 for (int j = topLeftY; j < topLeftY + sizeY; j++)
7813 {
7814 Tile tile = Main.tile[i, j];
7815 ushort type2 = tile.type;
7816 if (type2 != type || !IsVisible(tile))
7817 {
7818 continue;
7819 }
7820 Math.Abs(((float)(i - topLeftX) + 0.5f) / (float)sizeX - 0.5f);
7821 short tileFrameX = tile.frameX;
7822 short tileFrameY = tile.frameY;
7823 float num2 = 1f - (float)(j - topLeftY + 1) / (float)sizeY;
7824 if (num2 == 0f)
7825 {
7826 num2 = 0.1f;
7827 }
7828 if (!flag)
7829 {
7830 num2 = 0f;
7831 }
7832 GetTileDrawData(i, j, tile, type2, ref tileFrameX, ref tileFrameY, out var tileWidth, out var tileHeight, out var tileTop, out var halfBrickHeight, out var addFrX, out var addFrY, out var tileSpriteEffect, out var _, out var _, out var _);
7833 bool flag2 = _rand.Next(4) == 0;
7834 Color tileLight = Lighting.GetColor(i, j);
7835 DrawAnimatedTile_AdjustForVisionChangers(i, j, tile, type2, tileFrameX, tileFrameY, ref tileLight, flag2);
7836 tileLight = DrawTiles_GetLightOverride(j, i, tile, type2, tileFrameX, tileFrameY, tileLight);
7838 {
7839 DrawTiles_EmitParticles(j, i, tile, type2, tileFrameX, tileFrameY, tileLight);
7840 }
7841 Vector2 vector2 = new Vector2(i * 16 - (int)screenPosition.X, j * 16 - (int)screenPosition.Y + tileTop) + offSet;
7842 if (tile.type == 493 && tile.frameY == 0)
7843 {
7844 if (Main.WindForVisuals >= 0f)
7845 {
7846 tileSpriteEffect ^= SpriteEffects.FlipHorizontally;
7847 }
7848 if (!tileSpriteEffect.HasFlag(SpriteEffects.FlipHorizontally))
7849 {
7850 vector2.X -= 6f;
7851 }
7852 else
7853 {
7854 vector2.X += 6f;
7855 }
7856 }
7857 Vector2 vector3 = new Vector2(windCycle * 1f, Math.Abs(windCycle) * 2f * num2);
7858 Vector2 origin = vector - vector2;
7860 if (tileDrawTexture != null)
7861 {
7862 Main.spriteBatch.Draw(tileDrawTexture, vector + new Vector2(0f, vector3.Y), new Rectangle(tileFrameX + addFrX, tileFrameY + addFrY, tileWidth, tileHeight - halfBrickHeight), tileLight, windCycle * num * num2, origin, 1f, tileSpriteEffect, 0f);
7863 if (texture2D != null)
7864 {
7865 Main.spriteBatch.Draw(texture2D, vector + new Vector2(0f, vector3.Y), new Rectangle(tileFrameX + addFrX, tileFrameY + addFrY, tileWidth, tileHeight - halfBrickHeight), color, windCycle * num * num2, origin, 1f, tileSpriteEffect, 0f);
7866 }
7867 }
7868 }
7869 }
7870 }
7871
7872 private void DrawVineStrip(Vector2 screenPosition, Vector2 offSet, int x, int startY)
7873 {
7874 int num = 0;
7875 int num2 = 0;
7876 Vector2 vector = new Vector2(x * 16 + 8, startY * 16 - 2);
7877 float amount = Math.Abs(Main.WindForVisuals) / 1.2f;
7878 amount = MathHelper.Lerp(0.2f, 1f, amount);
7879 float num3 = -0.08f * amount;
7881 float num4 = 0f;
7882 float num5 = 0f;
7883 for (int i = startY; i < Main.maxTilesY - 10; i++)
7884 {
7885 Tile tile = Main.tile[x, i];
7886 if (tile == null)
7887 {
7888 continue;
7889 }
7890 ushort type = tile.type;
7891 if (!tile.active() || !TileID.Sets.VineThreads[type])
7892 {
7893 break;
7894 }
7895 num++;
7896 if (num2 >= 5)
7897 {
7898 num3 += 0.0075f * amount;
7899 }
7900 if (num2 >= 2)
7901 {
7902 num3 += 0.0025f;
7903 }
7904 if (Main.remixWorld)
7905 {
7906 if (WallID.Sets.AllowsWind[tile.wall] && (double)i > Main.worldSurface)
7907 {
7908 num2++;
7909 }
7910 }
7911 else if (WallID.Sets.AllowsWind[tile.wall] && (double)i < Main.worldSurface)
7912 {
7913 num2++;
7914 }
7915 float windGridPush = GetWindGridPush(x, i, 20, 0.01f);
7916 num4 = ((windGridPush != 0f || num5 == 0f) ? (num4 - windGridPush) : (num4 * -0.78f));
7918 short tileFrameX = tile.frameX;
7919 short tileFrameY = tile.frameY;
7920 Color color = Lighting.GetColor(x, i);
7921 GetTileDrawData(x, i, tile, type, ref tileFrameX, ref tileFrameY, out var tileWidth, out var tileHeight, out var tileTop, out var halfBrickHeight, out var addFrX, out var addFrY, out var tileSpriteEffect, out var glowTexture, out var glowSourceRect, out var glowColor);
7922 Vector2 position = new Vector2(-(int)screenPosition.X, -(int)screenPosition.Y) + offSet + vector;
7923 if (tile.fullbrightBlock())
7924 {
7925 color = Color.White;
7926 }
7927 float num6 = (float)num2 * num3 * windCycle + num4;
7929 {
7931 if (Main.IsTileBiomeSightable(type, tileFrameX, tileFrameY, ref sightColor))
7932 {
7933 if (color.R < sightColor.R)
7934 {
7935 color.R = sightColor.R;
7936 }
7937 if (color.G < sightColor.G)
7938 {
7939 color.G = sightColor.G;
7940 }
7941 if (color.B < sightColor.B)
7942 {
7943 color.B = sightColor.B;
7944 }
7945 if (_isActiveAndNotPaused && _rand.Next(480) == 0)
7946 {
7948 int num7 = Dust.NewDust(new Vector2(x * 16, i * 16), 16, 16, 267, 0f, 0f, 150, newColor, 0.3f);
7949 _dust[num7].noGravity = true;
7950 _dust[num7].fadeIn = 1f;
7951 _dust[num7].velocity *= 0.1f;
7952 _dust[num7].noLightEmittence = true;
7953 }
7954 }
7955 }
7957 if (tileDrawTexture == null)
7958 {
7959 break;
7960 }
7961 if (IsVisible(tile))
7962 {
7963 Main.spriteBatch.Draw(tileDrawTexture, position, new Rectangle(tileFrameX + addFrX, tileFrameY + addFrY, tileWidth, tileHeight - halfBrickHeight), color, num6, new Vector2(tileWidth / 2, halfBrickHeight - tileTop), 1f, tileSpriteEffect, 0f);
7964 if (glowTexture != null)
7965 {
7966 Main.spriteBatch.Draw(glowTexture, position, glowSourceRect, glowColor, num6, new Vector2(tileWidth / 2, halfBrickHeight - tileTop), 1f, tileSpriteEffect, 0f);
7967 }
7968 }
7969 vector += (num6 + (float)Math.PI / 2f).ToRotationVector2() * 16f;
7970 }
7971 }
7972
7973 private void DrawRisingVineStrip(Vector2 screenPosition, Vector2 offSet, int x, int startY)
7974 {
7975 int num = 0;
7976 int num2 = 0;
7977 Vector2 vector = new Vector2(x * 16 + 8, startY * 16 + 16 + 2);
7978 float amount = Math.Abs(Main.WindForVisuals) / 1.2f;
7979 amount = MathHelper.Lerp(0.2f, 1f, amount);
7980 float num3 = -0.08f * amount;
7982 float num4 = 0f;
7983 float num5 = 0f;
7984 for (int num6 = startY; num6 > 10; num6--)
7985 {
7986 Tile tile = Main.tile[x, num6];
7987 if (tile != null)
7988 {
7989 ushort type = tile.type;
7990 if (!tile.active() || !TileID.Sets.ReverseVineThreads[type])
7991 {
7992 break;
7993 }
7994 num++;
7995 if (num2 >= 5)
7996 {
7997 num3 += 0.0075f * amount;
7998 }
7999 if (num2 >= 2)
8000 {
8001 num3 += 0.0025f;
8002 }
8003 if (WallID.Sets.AllowsWind[tile.wall] && (double)num6 < Main.worldSurface)
8004 {
8005 num2++;
8006 }
8007 float windGridPush = GetWindGridPush(x, num6, 40, -0.004f);
8008 num4 = ((windGridPush != 0f || num5 == 0f) ? (num4 - windGridPush) : (num4 * -0.78f));
8010 short tileFrameX = tile.frameX;
8011 short tileFrameY = tile.frameY;
8012 Color color = Lighting.GetColor(x, num6);
8013 GetTileDrawData(x, num6, tile, type, ref tileFrameX, ref tileFrameY, out var tileWidth, out var tileHeight, out var tileTop, out var halfBrickHeight, out var addFrX, out var addFrY, out var tileSpriteEffect, out var _, out var _, out var _);
8014 Vector2 position = new Vector2(-(int)screenPosition.X, -(int)screenPosition.Y) + offSet + vector;
8015 float num7 = (float)num2 * (0f - num3) * windCycle + num4;
8017 if (tileDrawTexture == null)
8018 {
8019 break;
8020 }
8021 if (IsVisible(tile))
8022 {
8023 Main.spriteBatch.Draw(tileDrawTexture, position, new Rectangle(tileFrameX + addFrX, tileFrameY + addFrY, tileWidth, tileHeight - halfBrickHeight), color, num7, new Vector2(tileWidth / 2, halfBrickHeight - tileTop + tileHeight), 1f, tileSpriteEffect, 0f);
8024 }
8025 vector += (num7 - (float)Math.PI / 2f).ToRotationVector2() * 16f;
8026 }
8027 }
8028 }
8029
8031 {
8032 float num = 0f;
8033 int num2 = 0;
8034 for (int i = 0; i < sizeX; i++)
8035 {
8036 for (int j = 0; j < sizeY; j++)
8037 {
8039 if (windGridPush != 0f)
8040 {
8041 num += windGridPush;
8042 num2++;
8043 }
8044 }
8045 }
8046 if (num2 == 0)
8047 {
8048 return 0f;
8049 }
8050 return num / (float)num2;
8051 }
8052
8054 {
8055 float result = 0f;
8056 int num = int.MaxValue;
8057 for (int i = 0; i < 1; i++)
8058 {
8059 for (int j = 0; j < sizeY; j++)
8060 {
8063 if (windTimeLeft < num && windTimeLeft != 0)
8064 {
8065 result = windGridPushComplex;
8066 num = windTimeLeft;
8067 }
8068 }
8069 }
8070 return result;
8071 }
8072
8073 private void DrawMultiTileVinesInWind(Vector2 screenPosition, Vector2 offSet, int topLeftX, int topLeftY, int sizeX, int sizeY)
8074 {
8076 float num = windCycle;
8077 int totalPushTime = 60;
8078 float pushForcePerFrame = 1.26f;
8081 new Vector2((float)(sizeX * 16) * 0.5f, 0f);
8082 Vector2 vector = new Vector2((float)(topLeftX * 16 - (int)screenPosition.X) + (float)sizeX * 16f * 0.5f, topLeftY * 16 - (int)screenPosition.Y) + offSet;
8083 float num2 = 0.07f;
8084 Tile tile = Main.tile[topLeftX, topLeftY];
8085 int type = tile.type;
8086 Vector2 vector2 = new Vector2(0f, -2f);
8087 vector += vector2;
8088 bool flag = false;
8090 {
8091 vector.Y -= 8f;
8092 vector2.Y -= 8f;
8093 }
8094 Texture2D texture2D = null;
8095 Color color = Color.Transparent;
8096 float? num3 = null;
8097 float num4 = 1f;
8098 float num5 = -4f;
8099 bool flag2 = false;
8100 num2 = 0.15f;
8101 switch (type)
8102 {
8103 case 34:
8104 case 126:
8105 num3 = 1f;
8106 num5 = 0f;
8107 switch (tile.frameY / 54 + tile.frameX / 108 * 37)
8108 {
8109 case 9:
8110 num3 = null;
8111 num5 = -1f;
8112 flag2 = true;
8113 num2 *= 0.3f;
8114 break;
8115 case 11:
8116 num2 *= 0.5f;
8117 break;
8118 case 12:
8119 num3 = null;
8120 num5 = -1f;
8121 break;
8122 case 18:
8123 num3 = null;
8124 num5 = -1f;
8125 break;
8126 case 21:
8127 num3 = null;
8128 num5 = -1f;
8129 break;
8130 case 23:
8131 num3 = 0f;
8132 break;
8133 case 25:
8134 num3 = null;
8135 num5 = -1f;
8136 flag2 = true;
8137 break;
8138 case 32:
8139 num2 *= 0.5f;
8140 break;
8141 case 33:
8142 num2 *= 0.5f;
8143 break;
8144 case 35:
8145 num3 = 0f;
8146 break;
8147 case 36:
8148 num3 = null;
8149 num5 = -1f;
8150 flag2 = true;
8151 break;
8152 case 37:
8153 num3 = null;
8154 num5 = -1f;
8155 flag2 = true;
8156 num2 *= 0.5f;
8157 break;
8158 case 39:
8159 num3 = null;
8160 num5 = -1f;
8161 flag2 = true;
8162 break;
8163 case 40:
8164 case 41:
8165 case 42:
8166 case 43:
8167 num3 = null;
8168 num5 = -2f;
8169 flag2 = true;
8170 num2 *= 0.5f;
8171 break;
8172 case 44:
8173 num3 = null;
8174 num5 = -3f;
8175 break;
8176 }
8177 break;
8178 case 42:
8179 num3 = 1f;
8180 num5 = 0f;
8181 switch (tile.frameY / 36)
8182 {
8183 case 0:
8184 num3 = null;
8185 num5 = -1f;
8186 break;
8187 case 9:
8188 num3 = 0f;
8189 break;
8190 case 12:
8191 num3 = null;
8192 num5 = -1f;
8193 break;
8194 case 14:
8195 num3 = null;
8196 num5 = -1f;
8197 break;
8198 case 28:
8199 num3 = null;
8200 num5 = -1f;
8201 break;
8202 case 30:
8203 num3 = 0f;
8204 break;
8205 case 32:
8206 num3 = 0f;
8207 break;
8208 case 33:
8209 num3 = 0f;
8210 break;
8211 case 34:
8212 num3 = null;
8213 num5 = -1f;
8214 break;
8215 case 35:
8216 num3 = 0f;
8217 break;
8218 case 38:
8219 num3 = null;
8220 num5 = -1f;
8221 break;
8222 case 39:
8223 num3 = null;
8224 num5 = -1f;
8225 flag2 = true;
8226 break;
8227 case 40:
8228 case 41:
8229 case 42:
8230 case 43:
8231 num3 = 0f;
8232 num3 = null;
8233 num5 = -1f;
8234 flag2 = true;
8235 break;
8236 }
8237 break;
8238 case 95:
8239 case 270:
8240 case 271:
8241 case 444:
8242 case 454:
8243 case 572:
8244 case 581:
8245 case 660:
8246 num3 = 1f;
8247 num5 = 0f;
8248 break;
8249 case 591:
8250 num4 = 0.5f;
8251 num5 = -2f;
8252 break;
8253 case 592:
8254 num4 = 0.5f;
8255 num5 = -2f;
8256 texture2D = TextureAssets.GlowMask[294].Value;
8257 color = new Color(255, 255, 255, 0);
8258 break;
8259 }
8260 if (flag2)
8261 {
8262 vector += new Vector2(0f, 16f);
8263 }
8264 num2 *= -1f;
8266 {
8267 windCycle -= num;
8268 }
8269 ulong num6 = 0uL;
8270 for (int i = topLeftX; i < topLeftX + sizeX; i++)
8271 {
8272 for (int j = topLeftY; j < topLeftY + sizeY; j++)
8273 {
8274 Tile tile2 = Main.tile[i, j];
8275 ushort type2 = tile2.type;
8276 if (type2 != type || !IsVisible(tile2))
8277 {
8278 continue;
8279 }
8280 Math.Abs(((float)(i - topLeftX) + 0.5f) / (float)sizeX - 0.5f);
8281 short tileFrameX = tile2.frameX;
8282 short tileFrameY = tile2.frameY;
8283 float num7 = (float)(j - topLeftY + 1) / (float)sizeY;
8284 if (num7 == 0f)
8285 {
8286 num7 = 0.1f;
8287 }
8288 if (num3.HasValue)
8289 {
8290 num7 = num3.Value;
8291 }
8292 if (flag2 && j == topLeftY)
8293 {
8294 num7 = 0f;
8295 }
8296 GetTileDrawData(i, j, tile2, type2, ref tileFrameX, ref tileFrameY, out var tileWidth, out var tileHeight, out var tileTop, out var halfBrickHeight, out var addFrX, out var addFrY, out var tileSpriteEffect, out var _, out var _, out var _);
8297 bool flag3 = _rand.Next(4) == 0;
8298 Color tileLight = Lighting.GetColor(i, j);
8299 DrawAnimatedTile_AdjustForVisionChangers(i, j, tile2, type2, tileFrameX, tileFrameY, ref tileLight, flag3);
8300 tileLight = DrawTiles_GetLightOverride(j, i, tile2, type2, tileFrameX, tileFrameY, tileLight);
8302 {
8303 DrawTiles_EmitParticles(j, i, tile2, type2, tileFrameX, tileFrameY, tileLight);
8304 }
8305 Vector2 vector3 = new Vector2(i * 16 - (int)screenPosition.X, j * 16 - (int)screenPosition.Y + tileTop) + offSet;
8306 vector3 += vector2;
8310 if (tileDrawTexture != null)
8311 {
8312 Vector2 vector6 = vector + new Vector2(0f, vector4.Y);
8313 Rectangle rectangle = new Rectangle(tileFrameX + addFrX, tileFrameY + addFrY, tileWidth, tileHeight - halfBrickHeight);
8314 float rotation = windCycle * num2 * num7;
8315 if (type2 == 660 && j == topLeftY + sizeY - 1)
8316 {
8317 Texture2D value = TextureAssets.Extra[260].Value;
8318 _ = ((float)((i + j) % 200) * 0.11f + (float)Main.timeForVisualEffects / 360f) % 1f;
8320 Main.spriteBatch.Draw(value, vector6, rectangle, white, rotation, vector5, 1f, tileSpriteEffect, 0f);
8321 }
8322 Main.spriteBatch.Draw(tileDrawTexture, vector6, rectangle, tileLight, rotation, vector5, 1f, tileSpriteEffect, 0f);
8323 if (type2 == 660 && j == topLeftY + sizeY - 1)
8324 {
8325 Texture2D value2 = TextureAssets.Extra[260].Value;
8326 Color color2 = Main.hslToRgb(((float)((i + j) % 200) * 0.11f + (float)Main.timeForVisualEffects / 360f) % 1f, 1f, 0.8f);
8327 color2.A = 127;
8329 Vector2 position = vector6;
8330 Vector2 origin = vector5;
8331 Main.spriteBatch.Draw(value2, position, value3, color2, rotation, origin, 1f, tileSpriteEffect, 0f);
8332 }
8333 if (texture2D != null)
8334 {
8335 Main.spriteBatch.Draw(texture2D, vector6, rectangle, color, rotation, vector5, 1f, tileSpriteEffect, 0f);
8336 }
8338 if (num6 == 0L)
8339 {
8340 num6 = tileFlameData.flameSeed;
8341 }
8342 tileFlameData.flameSeed = num6;
8343 for (int k = 0; k < tileFlameData.flameCount; k++)
8344 {
8345 float x = (float)Utils.RandomInt(ref tileFlameData.flameSeed, tileFlameData.flameRangeXMin, tileFlameData.flameRangeXMax) * tileFlameData.flameRangeMultX;
8346 float y = (float)Utils.RandomInt(ref tileFlameData.flameSeed, tileFlameData.flameRangeYMin, tileFlameData.flameRangeYMax) * tileFlameData.flameRangeMultY;
8347 Main.spriteBatch.Draw(tileFlameData.flameTexture, vector6 + new Vector2(x, y), rectangle, tileFlameData.flameColor, rotation, vector5, 1f, tileSpriteEffect, 0f);
8348 }
8349 }
8350 }
8351 }
8352 }
8353
8354 private void EmitAlchemyHerbParticles(int j, int i, int style)
8355 {
8356 if (style == 0 && _rand.Next(100) == 0)
8357 {
8358 int num = Dust.NewDust(new Vector2(i * 16, j * 16 - 4), 16, 16, 19, 0f, 0f, 160, default(Color), 0.1f);
8359 _dust[num].velocity.X /= 2f;
8360 _dust[num].velocity.Y /= 2f;
8361 _dust[num].noGravity = true;
8362 _dust[num].fadeIn = 1f;
8363 }
8364 if (style == 1 && _rand.Next(100) == 0)
8365 {
8366 Dust.NewDust(new Vector2(i * 16, j * 16), 16, 16, 41, 0f, 0f, 250, default(Color), 0.8f);
8367 }
8368 if (style == 3)
8369 {
8370 if (_rand.Next(200) == 0)
8371 {
8372 int num2 = Dust.NewDust(new Vector2(i * 16, j * 16), 16, 16, 14, 0f, 0f, 100, default(Color), 0.2f);
8373 _dust[num2].fadeIn = 1.2f;
8374 }
8375 if (_rand.Next(75) == 0)
8376 {
8377 int num3 = Dust.NewDust(new Vector2(i * 16, j * 16), 16, 16, 27, 0f, 0f, 100);
8378 _dust[num3].velocity.X /= 2f;
8379 _dust[num3].velocity.Y /= 2f;
8380 }
8381 }
8382 if (style == 4 && _rand.Next(150) == 0)
8383 {
8384 int num4 = Dust.NewDust(new Vector2(i * 16, j * 16), 16, 8, 16);
8385 _dust[num4].velocity.X /= 3f;
8386 _dust[num4].velocity.Y /= 3f;
8387 _dust[num4].velocity.Y -= 0.7f;
8388 _dust[num4].alpha = 50;
8389 _dust[num4].scale *= 0.1f;
8390 _dust[num4].fadeIn = 0.9f;
8391 _dust[num4].noGravity = true;
8392 }
8393 if (style == 5 && _rand.Next(40) == 0)
8394 {
8395 int num5 = Dust.NewDust(new Vector2(i * 16, j * 16 - 6), 16, 16, 6, 0f, 0f, 0, default(Color), 1.5f);
8396 _dust[num5].velocity.Y -= 2f;
8397 _dust[num5].noGravity = true;
8398 }
8399 if (style == 6 && _rand.Next(30) == 0)
8400 {
8401 int num6 = Dust.NewDust(newColor: new Color(50, 255, 255, 255), Position: new Vector2(i * 16, j * 16), Width: 16, Height: 16, Type: 43, SpeedX: 0f, SpeedY: 0f, Alpha: 254, Scale: 0.5f);
8402 _dust[num6].velocity *= 0f;
8403 }
8404 }
8405
8406 private bool IsAlchemyPlantHarvestable(int style)
8407 {
8408 if (style == 0 && Main.dayTime)
8409 {
8410 return true;
8411 }
8412 if (style == 1 && !Main.dayTime)
8413 {
8414 return true;
8415 }
8416 if (style == 3 && !Main.dayTime && (Main.bloodMoon || Main.moonPhase == 0))
8417 {
8418 return true;
8419 }
8420 if (style == 4 && (Main.raining || Main.cloudAlpha > 0f))
8421 {
8422 return true;
8423 }
8424 if (style == 5 && !Main.raining && Main.time > 40500.0)
8425 {
8426 return true;
8427 }
8428 return false;
8429 }
8430}
static readonly BlendState AlphaBlend
Definition BlendState.cs:36
static float Lerp(float value1, float value2, float amount)
Definition MathHelper.cs:53
static float Clamp(float value, float min, float max)
Definition MathHelper.cs:46
static double Cos(double d)
static double Abs(double value)
static double Sin(double a)
const double PI
Definition Math.cs:16
static byte Max(byte val1, byte val2)
Definition Math.cs:738
static bool GetTemporaryFrame(int x, int y, out int frameData)
Definition Animation.cs:186
static int FindChest(int X, int Y)
Definition Chest.cs:546
static Dictionary< int, TileEntity > ByID
Definition TileEntity.cs:18
static Dictionary< Point16, TileEntity > ByPosition
Definition TileEntity.cs:20
Vector2 position
Definition Dust.cs:20
bool noGravity
Definition Dust.cs:26
bool noLightEmittence
Definition Dust.cs:34
int alpha
Definition Dust.cs:42
static int NewDust(Vector2 Position, int Width, int Height, int Type, float SpeedX=0f, float SpeedY=0f, int Alpha=0, Color newColor=default(Color), float Scale=1f)
Definition Dust.cs:73
bool noLight
Definition Dust.cs:32
float scale
Definition Dust.cs:28
static Dust NewDustDirect(Vector2 Position, int Width, int Height, int Type, float SpeedX=0f, float SpeedY=0f, int Alpha=0, Color newColor=default(Color), float Scale=1f)
Definition Dust.cs:63
Color color
Definition Dust.cs:40
float fadeIn
Definition Dust.cs:24
Vector2 velocity
Definition Dust.cs:22
static Tile GetTileSafely(Vector2 position)
Definition Framing.cs:419
static void RequestParticleSpawn(bool clientOnly, ParticleOrchestraType type, ParticleOrchestraSettings settings, int? overrideInvokingPlayerIndex=null)
void GetScreenDrawArea(Vector2 screenPosition, Vector2 offSet, out int firstTileX, out int lastTileX, out int firstTileY, out int lastTileY)
Texture2D GetTileDrawTexture(Tile tile, int tileX, int tileY, int paintOverride)
void DrawBasicTile(Vector2 screenPosition, Vector2 screenOffset, int tileX, int tileY, TileDrawInfo drawData, Rectangle normalTileRect, Vector2 normalTilePosition)
void Draw(bool solidLayer, bool forRenderTargets, bool intoRenderTargets, int waterStyleOverride=-1)
float GetWindGridPush(int i, int j, int pushAnimationTimeTotal, float pushForcePerFrame)
void PostDrawTiles(bool solidLayer, bool forRenderTargets, bool intoRenderTargets)
int GetBigAnimalCageFrame(int x, int y, int tileFrameX, int tileFrameY)
void EmitLivingTreeLeaf_Sideways(int x, int y, int leafGoreType)
static Color GetFinalLight(Tile tileCache, ushort typeCache, Color tileLight, Color tint)
bool IsTileDrawLayerSolid(ushort typeCache)
void GetWindGridPush2Axis(int i, int j, int pushAnimationTimeTotal, float pushForcePerFrame, out float pushX, out float pushY)
static int GetTreeVariant(int x, int y)
void EmitLivingTreeLeaf_Below(int x, int y, int leafGoreType)
void DrawRisingVineStrip(Vector2 screenPosition, Vector2 offSet, int x, int startY)
void EmitTreeLeaves(int tilePosX, int tilePosY, int grassPosX, int grassPosY)
Dictionary< Point, int > _foodPlatterTileEntityPositions
Color DrawTiles_GetLightOverride(int j, int i, Tile tileCache, ushort typeCache, short tileFrameX, short tileFrameY, Color tileLight)
bool ShouldSwayInWind(int x, int y, Tile tileCache)
static bool ShouldTileShine(ushort type, short frameX)
Dictionary< Point, int > _weaponRackTileEntityPositions
void AddSpecialPoint(int x, int y, TileCounterType type)
Dictionary< Point, int > _hatRackTileEntityPositions
int GetPalmTreeBiome(int tileX, int tileY)
void EmitLiquidDrops(int j, int i, Tile tileCache, ushort typeCache)
void DrawSingleTile_SlicedBlock(Vector2 normalTilePosition, int tileX, int tileY, TileDrawInfo drawData)
void DrawSingleTile_Flames(Vector2 screenPosition, Vector2 screenOffset, int tileX, int tileY, TileDrawInfo drawData)
Dictionary< Point, int > _displayDollTileEntityPositions
float GetHighestWindGridPushComplex(int topLeftX, int topLeftY, int sizeX, int sizeY, int totalPushTime, float pushForcePerFrame, int loops, bool swapLoopDir)
void DrawPartialLiquid(bool behindBlocks, Tile tileCache, ref Vector2 position, ref Rectangle liquidSize, int liquidType, ref VertexColors colors)
void DrawTile_MinecartTrack(Vector2 screenPosition, Vector2 screenOffset, int tileX, int tileY, TileDrawInfo drawData)
void DrawXmasTree(Vector2 screenPosition, Vector2 screenOffset, int tileX, int tileY, TileDrawInfo drawData)
void DrawSingleTile(TileDrawInfo drawData, bool solidLayer, int waterStyleOverride, Vector2 screenPosition, Vector2 screenOffset, int tileX, int tileY)
float GetWindGridPushComplex(int i, int j, int pushAnimationTimeTotal, float totalPushForce, int loops, bool flipDirectionPerLoop)
void CrawlToBottomOfReverseVineAndAddSpecialPoint(int j, int i)
Dictionary< Point, int > _itemFrameTileEntityPositions
int GetSmallAnimalCageFrame(int x, int y, int tileFrameX, int tileFrameY)
void EmitLivingTreeLeaf(int i, int j, int leafGoreType)
void DrawMultiTileGrassInWind(Vector2 screenPosition, Vector2 offSet, int topLeftX, int topLeftY, int sizeX, int sizeY)
void DrawLiquidBehindTiles(int waterStyleOverride=-1)
Texture2D GetTreeTopTexture(int treeTextureIndex, int treeTextureStyle, byte tileColor)
static bool IsTileDangerous(Player localPlayer, Tile tileCache, ushort typeCache)
static void GetFinalLight(Tile tileCache, ushort typeCache, ref Vector3 tileLight, ref Vector3 tint)
ThreadLocal< TileDrawInfo > _currentTileDrawInfo
void CrawlToTopOfVineAndAddSpecialPoint(int j, int i)
int ClimbCatTail(int originx, int originy)
void MakeExtraPreparations(Tile tile, int x, int y)
TileFlameData GetTileFlameData(int tileX, int tileY, int type, int tileFrameY)
void CacheSpecialDraws_Part2(int tileX, int tileY, TileDrawInfo drawData, bool skipDraw)
Dictionary< Point, int > _trainingDummyTileEntityPositions
void DrawMultiTileVinesInWind(Vector2 screenPosition, Vector2 offSet, int topLeftX, int topLeftY, int sizeX, int sizeY)
void CacheSpecialDraws_Part1(int tileX, int tileY, int tileType, int drawDataTileFrameX, int drawDataTileFrameY, bool skipDraw)
void PrepareForAreaDrawing(int firstTileX, int lastTileX, int firstTileY, int lastTileY, bool prepareLazily)
Dictionary< Point, int > _chestPositions
Texture2D GetTileDrawTexture(Tile tile, int tileX, int tileY)
void DrawTiles_EmitParticles(int j, int i, Tile tileCache, ushort typeCache, short tileFrameX, short tileFrameY, Color tileLight)
float GetAverageWindGridPush(int topLeftX, int topLeftY, int sizeX, int sizeY, int totalPushTime, float pushForcePerFrame)
void GetTileDrawData(int x, int y, Tile tileCache, ushort typeCache, ref short tileFrameX, ref short tileFrameY, out int tileWidth, out int tileHeight, out int tileTop, out int halfBrickHeight, out int addFrX, out int addFrY, out SpriteEffects tileSpriteEffect, out Texture2D glowTexture, out Rectangle glowSourceRect, out Color glowColor)
TileDrawing(TilePaintSystemV2 paintSystem)
void EmitAlchemyHerbParticles(int j, int i, int style)
int GetWaterAnimalCageFrame(int x, int y, int tileFrameX, int tileFrameY)
float GetWindCycle(int x, int y, double windCounter)
Texture2D GetTreeBranchTexture(int treeTextureIndex, int treeTextureStyle, byte tileColor)
static int GetTreeBiome(int tileX, int tileY, int tileFrameX, int tileFrameY)
bool InAPlaceWithWind(int x, int y, int width, int height)
void GetTileOutlineInfo(int x, int y, ushort typeCache, ref Color tileLight, ref Texture2D highlightTexture, ref Color highlightColor)
void DrawTile_LiquidBehindTile(bool solidLayer, bool inFrontOfPlayers, int waterStyleOverride, Vector2 screenPosition, Vector2 screenOffset, int tileX, int tileY, Tile tileCache)
void DrawAnimatedTile_AdjustForVisionChangers(int i, int j, Tile tileCache, ushort typeCache, short tileFrameX, short tileFrameY, ref Color tileLight, bool canDoDust)
void PreDrawTiles(bool solidLayer, bool forRenderTargets, bool intoRenderTargets)
void DrawVineStrip(Vector2 screenPosition, Vector2 offSet, int x, int startY)
void DrawSpecialTilesLegacy(Vector2 screenPosition, Vector2 offSet)
void SetSize(int targetWidth, int targetHeight)
Definition WindGrid.cs:25
void GetWindTime(int tileX, int tileY, int timeThreshold, out int windTimeLeft, out int directionX, out int directionY)
Definition WindGrid.cs:41
static Color GetShimmerGlitterColor(bool top, float worldPositionX, float worldPositionY)
static void SetShimmerVertexColors(ref VertexColors colors, float opacity, int x, int y)
static Color GetPortalColor(int colorIndex)
static Dictionary< Point, bool[]> PressurePlatesPressed
static void SpawnInWorldDust(int tileStyle, Rectangle dustBox)
static Asset< Texture2D >[] Liquid
static Asset< Texture2D > Timer
static Asset< Texture2D > GlowSnail
static Asset< Texture2D >[] XmasTree
static Asset< Texture2D >[] HighlightMask
static Asset< Texture2D >[] GlowMask
static Asset< Texture2D >[] CageTop
static Asset< Texture2D >[] JellyfishBowl
static Asset< Texture2D >[] Tile
static Asset< Texture2D >[] TreeTop
static Asset< Texture2D > FireflyJar
static Asset< Texture2D > XmasLight
static Asset< Texture2D > LightningbugJar
static Asset< Texture2D >[] Item
static Asset< Texture2D >[] TreeBranch
static Asset< Texture2D >[] Extra
static Asset< Texture2D >[] Flames
static Asset< Texture2D >[] LiquidSlope
static Asset< Texture2D > ShroomCap
static Asset< Texture2D > SunOrb
static Asset< Texture2D > SunAltar
Texture2D TryGetTileAndRequestIfNotReady(int tileType, int tileStyle, int paintColor)
Texture2D TryGetTreeTopAndRequestIfNotReady(int treeTopIndex, int treeTopStyle, int paintColor)
void RequestTreeBranch(ref TreeFoliageVariantKey lookupKey)
Texture2D TryGetTreeBranchAndRequestIfNotReady(int treeTopIndex, int treeTopStyle, int paintColor)
void RequestTreeTop(ref TreeFoliageVariantKey lookupKey)
void RequestTile(ref TileVariationkey lookupKey)
void RequestWall(ref WallVariationKey lookupKey)
Vector2 velocity
Definition Gore.cs:19
Vector2 position
Definition Gore.cs:17
static Gore NewGorePerfect(Vector2 Position, Vector2 Velocity, int Type, float Scale=1f)
Definition Gore.cs:1275
static Gore NewGoreDirect(Vector2 Position, Vector2 Velocity, int Type, float Scale=1f)
Definition Gore.cs:1283
static int NewGore(Vector2 Position, Vector2 Velocity, int Type, float Scale=1f)
Definition Gore.cs:1288
float scale
Definition Gore.cs:23
static Color GetSelectionGlowColor(bool isTileSelected, int averageTileLighting)
Definition Colors.cs:127
static bool[] IsFood
Definition ItemID.cs:233
static bool[] AllBlocksWithSmoothBordersToResolveHalfBlockIssue
Definition TileID.cs:105
static bool[] SwaysInWindBasic
Definition TileID.cs:189
static bool[] Boulders
Definition TileID.cs:123
static bool[] BlocksStairsAbove
Definition TileID.cs:255
static bool[] HasSlopeFrames
Definition TileID.cs:183
static bool[] HasOutlines
Definition TileID.cs:193
static bool[] BlocksStairs
Definition TileID.cs:253
static bool[] BlocksWaterDrawingBehindSelf
Definition TileID.cs:259
static bool[] IgnoresNearbyHalfbricksWhenDrawn
Definition TileID.cs:187
static bool[] DontDrawTileSliced
Definition TileID.cs:85
static bool[] ReverseVineThreads
Definition TileID.cs:181
static bool[] NotReallySolid
Definition TileID.cs:257
static bool[] BasicChest
Definition TileID.cs:223
static bool[] Platforms
Definition TileID.cs:163
static ? bool[] DrawTileInSolidLayer
Definition TileID.cs:141
static int[] CritterCageLidStyle
Definition TileID.cs:127
static bool[] VineThreads
Definition TileID.cs:179
static readonly short Count
Definition TorchID.cs:132
static int[] Dust
Definition TorchID.cs:75
static bool[] AllowsWind
Definition WallID.cs:48
static void GetCornerColors(int centerX, int centerY, out VertexColors vertices, float scale=1f)
Definition Lighting.cs:295
static Color GetColor(Point tileCoords)
Definition Lighting.cs:182
static void GetColor9Slice(int centerX, int centerY, ref Color[] slices)
Definition Lighting.cs:250
static bool NotRetro
Definition Lighting.cs:64
static void GetColor4Slice(int centerX, int centerY, ref Color[] slices)
Definition Lighting.cs:382
static bool UpdateEveryFrame
Definition Lighting.cs:78
static void AddLight(Vector2 position, Vector3 rgb)
Definition Lighting.cs:137
static int[] turtleCageFrame
Definition Main.cs:1597
static int[] seahorseCageFrame
Definition Main.cs:1635
static bool raining
Definition Main.cs:1310
static double time
Definition Main.cs:1284
static int maxTilesY
Definition Main.cs:1116
static int[] seagullCageFrame
Definition Main.cs:1537
static int[] penguinCageFrame
Definition Main.cs:1627
static int[,] slugCageFrame
Definition Main.cs:1639
static float cloudAlpha
Definition Main.cs:1302
static int[] duckCageFrame
Definition Main.cs:1529
static float GraveyardVisualIntensity
Definition Main.cs:1393
static bool[] tileSolidTop
Definition Main.cs:1469
static Chest[] chest
Definition Main.cs:1699
static int[,] scorpionCageFrame
Definition Main.cs:1567
static bool ShouldShowInvisibleWalls()
Definition Main.cs:54895
static int[] frogCageFrame
Definition Main.cs:1589
static SpriteBatch spriteBatch
Definition Main.cs:974
static uint GameUpdateCount
Definition Main.cs:2811
static double worldSurface
Definition Main.cs:1272
static bool IsLiquidStyleWater(int liquidStyle)
Definition Main.cs:54235
static int waterStyle
Definition Main.cs:1208
static int[] ladybugCageFrame
Definition Main.cs:1623
static float[] liquidAlpha
Definition Main.cs:1206
static int myPlayer
Definition Main.cs:1801
static int DiscoR
Definition Main.cs:1062
static float gfxQuality
Definition Main.cs:1056
static int[] squirrelCageFrame
Definition Main.cs:1517
static bool drawToScreen
Definition Main.cs:600
static int[] snailCageFrame
Definition Main.cs:1571
static Gore[] gore
Definition Main.cs:1687
static Microsoft.Xna.Framework.Color shine(Microsoft.Xna.Framework.Color newColor, int type)
Definition Main.cs:20065
static bool dayTime
Definition Main.cs:1282
static DrawAnimation[] itemAnimations
Definition Main.cs:1707
static bool dedServ
Definition Main.cs:1226
static bool bloodMoon
Definition Main.cs:1296
static bool InSmartCursorHighlightArea(int x, int y, out bool actuallySelected)
Definition Main.cs:3628
static int[,] dragonflyJarFrame
Definition Main.cs:1565
static float WindForVisuals
Definition Main.cs:2827
static double timeForVisualEffects
Definition Main.cs:1286
static Main instance
Definition Main.cs:283
static int[] redBirdCageFrame
Definition Main.cs:1545
static Vector2 screenPosition
Definition Main.cs:1715
static WorldSections sectionManager
Definition Main.cs:395
static Matrix Transform
Definition Main.cs:2771
static int moonPhase
Definition Main.cs:1288
static byte mouseTextColor
Definition Main.cs:1751
static Camera Camera
Definition Main.cs:289
static int maxTilesX
Definition Main.cs:1114
static int[] fishBowlFrame
Definition Main.cs:1581
static int DiscoG
Definition Main.cs:1066
static int offScreenRange
Definition Main.cs:836
static int[] macawCageFrame
Definition Main.cs:1553
static ulong TileFrameSeed
Definition Main.cs:411
static bool[] tileShine2
Definition Main.cs:1439
static int[] bunnyCageFrame
Definition Main.cs:1513
static bool[] tileSolid
Definition Main.cs:1471
static int[] owlCageFrame
Definition Main.cs:1643
static Tile[,] tile
Definition Main.cs:1675
static int[] birdCageFrame
Definition Main.cs:1541
static int moondialCooldown
Definition Main.cs:2287
static int[] tileShine
Definition Main.cs:1437
static int[] grasshopperCageFrame
Definition Main.cs:1647
static int[] tileFrameCounter
Definition Main.cs:1659
static TileBatch tileBatch
Definition Main.cs:976
static int[] mouseCageFrame
Definition Main.cs:1593
static int[] ratCageFrame
Definition Main.cs:1619
static bool SettingsEnabled_TilesSwayInWind
Definition Main.cs:1372
static int DiscoB
Definition Main.cs:1064
static SamplerState DefaultSamplerState
Definition Main.cs:2814
static UnifiedRandom rand
Definition Main.cs:1387
static RasterizerState Rasterizer
Definition Main.cs:552
static NPC[] npc
Definition Main.cs:1685
static float sunCircle
Definition Main.cs:546
static short[] tileGlowMask
Definition Main.cs:1501
static int[] blueBirdCageFrame
Definition Main.cs:1549
static int[] maggotCageFrame
Definition Main.cs:1615
static int cageFrames
Definition Main.cs:1509
static int[] waterStriderCageFrame
Definition Main.cs:1631
static int sundialCooldown
Definition Main.cs:2283
static int[,] butterflyCageFrame
Definition Main.cs:1559
static int[] snail2CageFrame
Definition Main.cs:1575
static int[] grebeCageFrame
Definition Main.cs:1533
static void GetItemDrawFrame(int item, out Texture2D itemTexture, out Microsoft.Xna.Framework.Rectangle itemFrame)
Definition Main.cs:25221
static bool LightingEveryFrame
Definition Main.cs:241
static Microsoft.Xna.Framework.Color hslToRgb(Vector3 hslVector)
Definition Main.cs:44913
static bool placementPreview
Definition Main.cs:1342
static bool IsTileBiomeSightable(ushort type, short tileFrameX, short tileFrameY, ref Microsoft.Xna.Framework.Color sightColor)
Definition Main.cs:20308
static int[] wormCageFrame
Definition Main.cs:1611
static float shimmerAlpha
Definition Main.cs:1008
static int[] fairyJarFrame
Definition Main.cs:1601
static Player LocalPlayer
Definition Main.cs:2829
static int[] mallardCageFrame
Definition Main.cs:1525
static bool gamePaused
Definition Main.cs:1072
static Player[] player
Definition Main.cs:1803
static int weatherVaneBobframe
Definition Main.cs:2351
static bool[] tileFlame
Definition Main.cs:1653
static float GlobalTimeWrappedHourly
Definition Main.cs:405
static int[,] jellyfishCageFrame
Definition Main.cs:1607
static float martianLight
Definition Main.cs:1334
static int[] lavaFishBowlFrame
Definition Main.cs:1585
static bool IsTileSpelunkable(Tile t)
Definition Main.cs:20286
static bool remixWorld
Definition Main.cs:349
static Dust[] dust
Definition Main.cs:1677
static int[] tileFrame
Definition Main.cs:1657
static bool DrawBouncyBumper(int frameID)
Definition Minecart.cs:1465
static bool DrawRightDecoration(int frameID)
Definition Minecart.cs:1443
static bool DrawBumper(int frameID)
Definition Minecart.cs:1452
static Rectangle GetSourceRect(int frameID, int animationFrame=0)
Definition Minecart.cs:1511
static void TrackColors(int i, int j, Tile trackTile, out int frontColor, out int backColor)
Definition Minecart.cs:1313
static bool IsPressurePlate(Tile tile)
Definition Minecart.cs:537
static bool DrawLeftDecoration(int frameID)
Definition Minecart.cs:1434
static TileObjectData GetTileData(int type, int style, int alternate=0)
bool cursorItemIconEnabled
Definition Player.cs:1489
bool dangerSense
Definition Player.cs:893
bool findTreasure
Definition Player.cs:2351
byte color()
Definition Tile.cs:555
void liquidType(int liquidType)
Definition Tile.cs:233
Color actColor(Color oldColor)
Definition Tile.cs:289
byte liquid
Definition Tile.cs:12
bool inActive()
Definition Tile.cs:582
bool fullbrightBlock()
Definition Tile.cs:538
short frameY
Definition Tile.cs:24
ushort type
Definition Tile.cs:8
short frameX
Definition Tile.cs:22
bool invisibleBlock()
Definition Tile.cs:504
bool active()
Definition Tile.cs:565
int blockType()
Definition Tile.cs:219
byte slope()
Definition Tile.cs:684
ushort wall
Definition Tile.cs:10
byte wallColor()
Definition Tile.cs:352
bool halfBrick()
Definition Tile.cs:650
static void DetailedDrawReset()
static void DetailedDrawTime(int detailedDrawType)
static void DrawTime(int drawType, double timeElapsed)
static float DrawItemIcon(Item item, int context, SpriteBatch spriteBatch, Vector2 screenPositionForItemCenter, float scale, float sizeLimit, Color environmentColor)
Definition ItemSlot.cs:2273
static void GetItemLight(ref Color currentColor, Item item, bool outInTheWorld=false)
Definition ItemSlot.cs:2899
static Vector2 RandomVector2(UnifiedRandom random, float min, float max)
Definition Utils.cs:1823
static int RandomInt(ref ulong seed, int max)
Definition Utils.cs:1648
static float GetLerpValue(float from, float to, float t, bool clamped=false)
Definition Utils.cs:203
static Rectangle CenteredRectangle(Vector2 center, Vector2 size)
Definition Utils.cs:604
static void GetCactusType(int tileX, int tileY, int frameX, int frameY, out bool evil, out bool good, out bool crimson)
static bool ActiveAndWalkableTile(int i, int j)
static bool SolidTile(Tile testTile)
static void SectionTileFrameWithCheck(int startX, int startY, int endX, int endY)
static bool GetCommonTreeFoliageData(int i, int j, int xoffset, ref int treeFrame, ref int treeStyle, out int floorY, out int topTextureFrameWidth, out int topTextureFrameHeight)
static bool GetAshTreeFoliageData(int i, int j, int xoffset, ref int treeFrame, ref int treeStyle, out int floorY, out int topTextureFrameWidth, out int topTextureFrameHeight)
static bool InAPlaceWithWind(Vector2 position, int width, int height)
static void GetBiomeInfluence(int startX, int endX, int startY, int endY, out int corruptCount, out int crimsonCount, out int hallowedCount)
static readonly int beachDistance
Definition WorldGen.cs:928
static bool GetGemTreeFoliageData(int i, int j, int xoffset, ref int treeFrame, ref int treeStyle, out int floorY, out int topTextureFrameWidth, out int topTextureFrameHeight)
static void GetTreeLeaf(int x, Tile topTile, Tile t, ref int treeHeight, out int treeFrame, out int passStyle)
static bool IsPalmOasisTree(int x)
static bool DoesWindBlowAtThisHeight(int tileY)
static bool IsBelowANonHammeredPlatform(int x, int y)
static bool GetVanityTreeFoliageData(int i, int j, int xoffset, ref int treeFrame, ref int treeStyle, out int floorY, out int topTextureFrameWidth, out int topTextureFrameHeight)
static int GetTreeFrame(Tile t)
static bool IsRope(int x, int y)
static void RefreshSections(int startX, int startY, int endX, int endY)
static Color paintColor(int color)
static Color Transparent
Definition Color.cs:76
static Color Lerp(Color value1, Color value2, float amount)
Definition Color.cs:491
static void DrawPreview(SpriteBatch sb, TileObjectPreviewData op, Vector2 position)
static TileObjectPreviewData objectPreview
Definition TileObject.cs:27
FastRandom WithModifier(ulong modifier)
Definition FastRandom.cs:27