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

◆ DrawBlack()

void Terraria.Main.DrawBlack ( bool force = false)
inlineprotected

Definition at line 54791 of file Main.cs.

54792 {
54793 if (shimmerAlpha == 1f)
54794 {
54795 return;
54796 }
54798 stopwatch.Start();
54800 int num = (tileColor.R + tileColor.G + tileColor.B) / 3;
54801 float num2 = (float)((double)num * 0.4) / 255f;
54802 if (Lighting.Mode == LightMode.Retro)
54803 {
54804 num2 = (float)(tileColor.R - 55) / 255f;
54805 if (num2 < 0f)
54806 {
54807 num2 = 0f;
54808 }
54809 }
54810 else if (Lighting.Mode == LightMode.Trippy)
54811 {
54812 num2 = (float)(num - 55) / 255f;
54813 if (num2 < 0f)
54814 {
54815 num2 = 0f;
54816 }
54817 }
54820 int num3 = (int)((screenPosition.X - vector.X) / 16f - 1f) + point.X;
54821 int num4 = (int)((screenPosition.X + (float)screenWidth + vector.X) / 16f) + 2 - point.X;
54822 int num5 = (int)((screenPosition.Y - vector.Y) / 16f - 1f) + point.Y;
54823 int num6 = (int)((screenPosition.Y + (float)screenHeight + vector.Y) / 16f) + 5 - point.Y;
54824 if (num3 < 0)
54825 {
54826 num3 = point.X;
54827 }
54828 if (num4 > maxTilesX)
54829 {
54830 num4 = maxTilesX - point.X;
54831 }
54832 if (num5 < 0)
54833 {
54834 num5 = point.Y;
54835 }
54836 if (num6 > maxTilesY)
54837 {
54838 num6 = maxTilesY - point.Y;
54839 }
54840 if (!force)
54841 {
54842 if (num5 < maxTilesY / 2)
54843 {
54844 num6 = Math.Min(num6, (int)worldSurface + 1);
54845 num5 = Math.Min(num5, (int)worldSurface + 1);
54846 }
54847 else
54848 {
54851 }
54852 }
54853 bool flag = ShouldShowInvisibleWalls();
54854 for (int i = num5; i < num6; i++)
54855 {
54856 bool flag2 = i >= UnderworldLayer;
54857 if (flag2)
54858 {
54859 num2 = 0.2f;
54860 }
54861 for (int j = num3; j < num4; j++)
54862 {
54863 int num7 = j;
54864 for (; j < num4; j++)
54865 {
54866 if (!WorldGen.InWorld(j, i))
54867 {
54868 return;
54869 }
54870 if (Main.tile[j, i] == null)
54871 {
54872 Main.tile[j, i] = new Tile();
54873 }
54874 Tile tile = Main.tile[j, i];
54875 float num8 = Lighting.Brightness(j, i);
54876 num8 = (float)Math.Floor(num8 * 255f) / 255f;
54877 byte b = tile.liquid;
54878 bool num9 = num8 <= num2 && ((!flag2 && b < 250) || WorldGen.SolidTile(tile) || (b >= 200 && num8 == 0f));
54879 bool flag3 = tile.active() && tileBlockLight[tile.type] && (!tile.invisibleBlock() || flag);
54880 bool flag4 = !WallID.Sets.Transparent[tile.wall] && (!tile.invisibleWall() || flag);
54881 if (!num9 || (!flag4 && !flag3) || (!drawToScreen && LiquidRenderer.Instance.HasFullWater(j, i) && tile.wall == 0 && !tile.halfBrick() && !((double)i <= worldSurface)))
54882 {
54883 break;
54884 }
54885 }
54886 if (j - num7 > 0)
54887 {
54889 }
54890 }
54891 }
54892 TimeLogger.DrawTime(5, stopwatch.Elapsed.TotalMilliseconds);
54893 }
static byte Min(byte val1, byte val2)
Definition Math.cs:912
static double Floor(double d)
static byte Max(byte val1, byte val2)
Definition Math.cs:738
static Asset< Texture2D > BlackTile
static bool[] Transparent
Definition WallID.cs:40
static bool[] tileBlockLight
Definition Main.cs:1461
static int maxTilesY
Definition Main.cs:1116
static bool ShouldShowInvisibleWalls()
Definition Main.cs:54895
static SpriteBatch spriteBatch
Definition Main.cs:974
static double worldSurface
Definition Main.cs:1272
static Microsoft.Xna.Framework.Color tileColor
Definition Main.cs:1270
static bool drawToScreen
Definition Main.cs:600
static int screenHeight
Definition Main.cs:1721
static Vector2 screenPosition
Definition Main.cs:1715
static int maxTilesX
Definition Main.cs:1114
static int offScreenRange
Definition Main.cs:836
static Tile[,] tile
Definition Main.cs:1675
static Microsoft.Xna.Framework.Point GetScreenOverdrawOffset()
Definition Main.cs:50910
static int screenWidth
Definition Main.cs:1719
static int UnderworldLayer
Definition Main.cs:2825
static float shimmerAlpha
Definition Main.cs:1008

References Microsoft.Xna.Framework.Color.Black, Terraria.GameContent.TextureAssets.BlackTile, Terraria.Lighting.Brightness(), Terraria.TimeLogger.DrawTime(), Terraria.Main.drawToScreen, System.Math.Floor(), Terraria.Main.GetScreenOverdrawOffset(), System.Text.RegularExpressions.i, Terraria.GameContent.Liquid.LiquidRenderer.Instance, Terraria.WorldGen.InWorld(), System.Math.Max(), Terraria.Main.maxTilesX, Terraria.Main.maxTilesY, System.Math.Min(), Terraria.Lighting.Mode, Terraria.Main.offScreenRange, Terraria.Main.screenHeight, Terraria.Main.screenPosition, Terraria.Main.screenWidth, Terraria.Main.shimmerAlpha, Terraria.Main.ShouldShowInvisibleWalls(), Terraria.WorldGen.SolidTile(), Terraria.Main.spriteBatch, Terraria.DataStructures.Tile, Terraria.Main.tile, Terraria.Main.tileBlockLight, Terraria.Main.tileColor, Terraria.ID.WallID.Sets.Transparent, Terraria.Main.UnderworldLayer, Microsoft.Xna.Framework.Graphics.Vector2, Terraria.Main.worldSurface, Microsoft.Xna.Framework.Point.X, and Microsoft.Xna.Framework.Point.Y.

Referenced by Terraria.Main.DoDraw_WallsAndBlacks(), Terraria.Main.DrawCapture(), and Terraria.Main.RenderBlack().