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

◆ Draw()

override void Terraria.GameContent.Skies.StardustSky.Draw ( SpriteBatch spriteBatch,
float minDepth,
float maxDepth )
inline

Definition at line 69 of file StardustSky.cs.

70 {
71 if (maxDepth >= float.MaxValue && minDepth < float.MaxValue)
72 {
73 spriteBatch.Draw(TextureAssets.BlackTile.Value, new Rectangle(0, 0, Main.screenWidth, Main.screenHeight), Color.Black * _fadeOpacity);
74 spriteBatch.Draw(_bgTexture.Value, new Rectangle(0, Math.Max(0, (int)((Main.worldSurface * 16.0 - (double)Main.screenPosition.Y - 2400.0) * 0.10000000149011612)), Main.screenWidth, Main.screenHeight), Color.White * Math.Min(1f, (Main.screenPosition.Y - 800f) / 1000f * _fadeOpacity));
75 Vector2 vector = new Vector2(Main.screenWidth >> 1, Main.screenHeight >> 1);
76 Vector2 vector2 = 0.01f * (new Vector2((float)Main.maxTilesX * 8f, (float)Main.worldSurface / 2f) - Main.screenPosition);
77 spriteBatch.Draw(_planetTexture.Value, vector + new Vector2(-200f, -200f) + vector2, null, Color.White * 0.9f * _fadeOpacity, 0f, new Vector2(_planetTexture.Width() >> 1, _planetTexture.Height() >> 1), 1f, SpriteEffects.None, 1f);
78 }
79 int num = -1;
80 int num2 = 0;
81 for (int i = 0; i < _stars.Length; i++)
82 {
83 float depth = _stars[i].Depth;
84 if (num == -1 && depth < maxDepth)
85 {
86 num = i;
87 }
88 if (depth <= minDepth)
89 {
90 break;
91 }
92 num2 = i;
93 }
94 if (num == -1)
95 {
96 return;
97 }
98 float num3 = Math.Min(1f, (Main.screenPosition.Y - 1000f) / 1000f);
99 Vector2 vector3 = Main.screenPosition + new Vector2(Main.screenWidth >> 1, Main.screenHeight >> 1);
100 Rectangle rectangle = new Rectangle(-1000, -1000, 4000, 4000);
101 for (int j = num; j < num2; j++)
102 {
103 Vector2 vector4 = new Vector2(1f / _stars[j].Depth, 1.1f / _stars[j].Depth);
104 Vector2 position = (_stars[j].Position - vector3) * vector4 + vector3 - Main.screenPosition;
105 if (rectangle.Contains((int)position.X, (int)position.Y))
106 {
107 float value = (float)Math.Sin(_stars[j].AlphaFrequency * Main.GlobalTimeWrappedHourly + _stars[j].SinOffset) * _stars[j].AlphaAmplitude + _stars[j].AlphaAmplitude;
108 float num4 = (float)Math.Sin(_stars[j].AlphaFrequency * Main.GlobalTimeWrappedHourly * 5f + _stars[j].SinOffset) * 0.1f - 0.1f;
109 value = MathHelper.Clamp(value, 0f, 1f);
111 spriteBatch.Draw(value2, position, null, Color.White * num3 * value * 0.8f * (1f - num4) * _fadeOpacity, 0f, new Vector2(value2.Width >> 1, value2.Height >> 1), (vector4.X * 0.5f + 0.5f) * (value * 0.3f + 0.7f), SpriteEffects.None, 0f);
112 }
113 }
114 }
void Draw(Texture2D texture, Vector2 position, Color color)
static float Clamp(float value, float min, float max)
Definition MathHelper.cs:46
static byte Min(byte val1, byte val2)
Definition Math.cs:912
static double Sin(double a)
static byte Max(byte val1, byte val2)
Definition Math.cs:738
bool Contains(int x, int y)
Definition Rectangle.cs:92

References Terraria.GameContent.Skies.StardustSky._bgTexture, Terraria.GameContent.Skies.StardustSky._fadeOpacity, Terraria.GameContent.Skies.StardustSky._planetTexture, Terraria.GameContent.Skies.StardustSky._stars, Terraria.GameContent.Skies.StardustSky._starTextures, Terraria.GameContent.Skies.StardustSky.Star.AlphaAmplitude, Terraria.GameContent.Skies.StardustSky.Star.AlphaFrequency, Microsoft.Xna.Framework.Color.Black, Terraria.GameContent.TextureAssets.BlackTile, Microsoft.Xna.Framework.MathHelper.Clamp(), Microsoft.Xna.Framework.Rectangle.Contains(), Microsoft.Xna.Framework.Graphics.Depth, Terraria.GameContent.Skies.StardustSky.Star.Depth, Microsoft.Xna.Framework.Graphics.SpriteBatch.Draw(), Terraria.Main.GlobalTimeWrappedHourly, Microsoft.Xna.Framework.Graphics.Texture2D.Height, System.Math.Max(), Terraria.Main.maxTilesX, System.Math.Min(), Terraria.GameContent.Skies.StardustSky.Star.Position, Terraria.Main.screenHeight, Terraria.Main.screenPosition, Terraria.Main.screenWidth, System.Math.Sin(), Terraria.GameContent.Skies.StardustSky.Star.SinOffset, Terraria.GameContent.Skies.StardustSky.Star.TextureIndex, ReLogic.Content.Asset< T >.Value, System.value, Microsoft.Xna.Framework.Graphics.Vector2, Microsoft.Xna.Framework.Color.White, Microsoft.Xna.Framework.Graphics.Texture2D.Width, Terraria.Main.worldSurface, Microsoft.Xna.Framework.Vector2.X, and Microsoft.Xna.Framework.Vector2.Y.