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

◆ Draw()

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

Definition at line 154 of file LanternSky.cs.

155 {
156 if (Main.gameMenu && _active)
157 {
158 _active = false;
159 _leaving = false;
160 for (int i = 0; i < _lanterns.Length; i++)
161 {
162 _lanterns[i].Active = false;
163 }
164 }
165 if ((double)Main.screenPosition.Y > Main.worldSurface * 16.0 || Main.gameMenu || _opacity <= 0f)
166 {
167 return;
168 }
169 int num = -1;
170 int num2 = 0;
171 for (int j = 0; j < _lanterns.Length; j++)
172 {
173 float depth = _lanterns[j].Depth;
174 if (num == -1 && depth < maxDepth)
175 {
176 num = j;
177 }
178 if (depth <= minDepth)
179 {
180 break;
181 }
182 num2 = j;
183 }
184 if (num == -1)
185 {
186 return;
187 }
188 Vector2 vector = Main.screenPosition + new Vector2(Main.screenWidth >> 1, Main.screenHeight >> 1);
189 Rectangle rectangle = new Rectangle(-1000, -1000, 4000, 4000);
190 for (int k = num; k < num2; k++)
191 {
192 if (_lanterns[k].Active)
193 {
194 Color color = new Color(250, 120, 60, 120);
195 float num3 = 1f;
196 if (_lanterns[k].Depth > 5f)
197 {
198 num3 = 0.3f;
199 }
200 else if ((double)_lanterns[k].Depth > 4.5)
201 {
202 num3 = 0.4f;
203 }
204 else if (_lanterns[k].Depth > 4f)
205 {
206 num3 = 0.5f;
207 }
208 else if ((double)_lanterns[k].Depth > 3.5)
209 {
210 num3 = 0.6f;
211 }
212 else if (_lanterns[k].Depth > 3f)
213 {
214 num3 = 0.7f;
215 }
216 else if ((double)_lanterns[k].Depth > 2.5)
217 {
218 num3 = 0.8f;
219 }
220 else if (_lanterns[k].Depth > 2f)
221 {
222 num3 = 0.9f;
223 }
224 color = new Color((int)((float)(int)color.R * num3), (int)((float)(int)color.G * num3), (int)((float)(int)color.B * num3), (int)((float)(int)color.A * num3));
225 Vector2 vector2 = new Vector2(1f / _lanterns[k].Depth, 0.9f / _lanterns[k].Depth);
226 vector2 *= 1.2f;
227 Vector2 position = _lanterns[k].Position;
228 position = (position - vector) * vector2 + vector - Main.screenPosition;
229 position.X = (position.X + 500f) % 4000f;
230 if (position.X < 0f)
231 {
232 position.X += 4000f;
233 }
234 position.X -= 500f;
235 if (rectangle.Contains((int)position.X, (int)position.Y))
236 {
237 DrawLantern(spriteBatch, _lanterns[k], color, vector2, position, num3);
238 }
239 }
240 }
241 }
void DrawLantern(SpriteBatch spriteBatch, Lantern lantern, Color opacity, Vector2 depthScale, Vector2 position, float alpha)
bool Contains(int x, int y)
Definition Rectangle.cs:92

References Terraria.GameContent.Skies.LanternSky._active, Terraria.GameContent.Skies.LanternSky._lanterns, Terraria.GameContent.Skies.LanternSky._leaving, Terraria.GameContent.Skies.LanternSky._opacity, Microsoft.Xna.Framework.Color.A, Terraria.GameContent.Skies.LanternSky.Lantern.Active, Terraria.Graphics.Effects.Active, Microsoft.Xna.Framework.Color.B, Microsoft.Xna.Framework.Graphics.Color, Microsoft.Xna.Framework.Rectangle.Contains(), Microsoft.Xna.Framework.Graphics.Depth, Terraria.GameContent.Skies.LanternSky.Lantern.Depth, Terraria.GameContent.Skies.LanternSky.DrawLantern(), Microsoft.Xna.Framework.Color.G, Terraria.Main.gameMenu, Terraria.GameContent.Skies.LanternSky.Lantern.Position, Microsoft.Xna.Framework.Color.R, Terraria.Main.screenHeight, Terraria.Main.screenPosition, Terraria.Main.screenWidth, Microsoft.Xna.Framework.Graphics.Vector2, Terraria.Main.worldSurface, Microsoft.Xna.Framework.Vector2.X, and Microsoft.Xna.Framework.Vector2.Y.