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

◆ DrawProj_Excalibur()

void Terraria.Main.DrawProj_Excalibur ( Projectile proj)
inlineprivate

Definition at line 25836 of file Main.cs.

25837 {
25838 Vector2 vector = proj.Center - screenPosition;
25841 Vector2 origin = rectangle.Size() / 2f;
25842 float num = proj.scale * 1.1f;
25843 SpriteEffects effects = ((!(proj.ai[0] >= 0f)) ? SpriteEffects.FlipVertically : SpriteEffects.None);
25844 float num2 = proj.localAI[0] / proj.ai[1];
25845 float num3 = Utils.Remap(num2, 0f, 0.6f, 0f, 1f) * Utils.Remap(num2, 0.6f, 1f, 1f, 0f);
25846 float num4 = 0.975f;
25847 float fromValue = Lighting.GetColor(proj.Center.ToTileCoordinates()).ToVector3().Length() / (float)Math.Sqrt(3.0);
25848 fromValue = Utils.Remap(fromValue, 0.2f, 1f, 0f, 1f);
25849 Microsoft.Xna.Framework.Color color = new Microsoft.Xna.Framework.Color(180, 160, 60);
25850 spriteBatch.Draw(val.Value, vector, rectangle, color * fromValue * num3, proj.rotation + proj.ai[0] * ((float)Math.PI / 4f) * -1f * (1f - num2), origin, num, effects, 0f);
25853 Microsoft.Xna.Framework.Color color4 = Microsoft.Xna.Framework.Color.White * num3 * 0.5f;
25854 color4.A = (byte)((float)(int)color4.A * (1f - fromValue));
25856 color5.G = (byte)((float)(int)color5.G * fromValue);
25857 color5.B = (byte)((float)(int)color5.R * (0.25f + fromValue * 0.75f));
25858 spriteBatch.Draw(val.Value, vector, rectangle, color5 * 0.15f, proj.rotation + proj.ai[0] * 0.01f, origin, num, effects, 0f);
25859 spriteBatch.Draw(val.Value, vector, rectangle, color3 * fromValue * num3 * 0.3f, proj.rotation, origin, num, effects, 0f);
25860 spriteBatch.Draw(val.Value, vector, rectangle, color2 * fromValue * num3 * 0.5f, proj.rotation, origin, num * num4, effects, 0f);
25861 spriteBatch.Draw(val.Value, vector, val.Frame(1, 4, 0, 3), Microsoft.Xna.Framework.Color.White * 0.6f * num3, proj.rotation + proj.ai[0] * 0.01f, origin, num, effects, 0f);
25862 spriteBatch.Draw(val.Value, vector, val.Frame(1, 4, 0, 3), Microsoft.Xna.Framework.Color.White * 0.5f * num3, proj.rotation + proj.ai[0] * -0.05f, origin, num * 0.8f, effects, 0f);
25863 spriteBatch.Draw(val.Value, vector, val.Frame(1, 4, 0, 3), Microsoft.Xna.Framework.Color.White * 0.4f * num3, proj.rotation + proj.ai[0] * -0.1f, origin, num * 0.6f, effects, 0f);
25864 for (float num5 = 0f; num5 < 8f; num5 += 1f)
25865 {
25866 float num6 = proj.rotation + proj.ai[0] * num5 * ((float)Math.PI * -2f) * 0.025f + Utils.Remap(num2, 0f, 1f, 0f, (float)Math.PI / 4f) * proj.ai[0];
25867 Vector2 drawpos = vector + num6.ToRotationVector2() * ((float)val.Width() * 0.5f - 6f) * num;
25868 float num7 = num5 / 9f;
25869 DrawPrettyStarSparkle(proj.Opacity, SpriteEffects.None, drawpos, new Microsoft.Xna.Framework.Color(255, 255, 255, 0) * num3 * num7, color3, num2, 0f, 0.5f, 0.5f, 1f, num6, new Vector2(0f, Utils.Remap(num2, 0f, 1f, 3f, 0f)) * num, Vector2.One * num);
25870 }
25871 Vector2 drawpos2 = vector + (proj.rotation + Utils.Remap(num2, 0f, 1f, 0f, (float)Math.PI / 4f) * proj.ai[0]).ToRotationVector2() * ((float)val.Width() * 0.5f - 4f) * num;
25872 DrawPrettyStarSparkle(proj.Opacity, SpriteEffects.None, drawpos2, new Microsoft.Xna.Framework.Color(255, 255, 255, 0) * num3 * 0.5f, color3, num2, 0f, 0.5f, 0.5f, 1f, 0f, new Vector2(2f, Utils.Remap(num2, 0f, 1f, 4f, 1f)) * num, Vector2.One * num);
25873 }
static double Sqrt(double d)
const double PI
Definition Math.cs:16
static Asset< Texture2D >[] Projectile
static void DrawPrettyStarSparkle(float opacity, SpriteEffects dir, Vector2 drawpos, Microsoft.Xna.Framework.Color drawColor, Microsoft.Xna.Framework.Color shineColor, float flareCounter, float fadeInStart, float fadeInEnd, float fadeOutStart, float fadeOutEnd, float rotation, Vector2 scale, Vector2 fatness)
Definition Main.cs:32485
static SpriteBatch spriteBatch
Definition Main.cs:974
static Vector2 screenPosition
Definition Main.cs:1715

References Terraria.Main.DrawPrettyStarSparkle(), Terraria.Lighting.GetColor(), Microsoft.Xna.Framework.Vector2.One, System.Math.PI, Terraria.GameContent.TextureAssets.Projectile, Terraria.Utils.Remap(), Terraria.Main.screenPosition, Terraria.Main.spriteBatch, and System.Math.Sqrt().

Referenced by Terraria.Main.DrawProjDirect().