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

◆ DrawMultisegmentPet()

void Terraria.Main.DrawMultisegmentPet ( Projectile proj)
inlineprivate

Definition at line 33792 of file Main.cs.

33793 {
33795 Texture2D texture2D = null;
33796 if (proj.type == 887)
33797 {
33798 texture2D = TextureAssets.GlowMask[275].Value;
33799 }
33800 int num = 5;
33801 int num2 = 16;
33802 switch (proj.type)
33803 {
33804 case 883:
33805 num = 5;
33806 num2 = 16;
33807 break;
33808 case 887:
33809 num = 6;
33810 num2 = 16;
33811 break;
33812 case 893:
33813 num = 8;
33814 num2 = 20;
33815 break;
33816 }
33817 SpriteEffects effects = ((proj.spriteDirection != 1) ? SpriteEffects.FlipHorizontally : SpriteEffects.None);
33819 Vector2 origin = rectangle.Size() / 2f;
33820 Vector2 position = proj.Center - screenPosition;
33821 Microsoft.Xna.Framework.Color alpha = proj.GetAlpha(Lighting.GetColor(proj.Center.ToTileCoordinates()));
33822 Microsoft.Xna.Framework.Color color = Microsoft.Xna.Framework.Color.White * ((float)(int)mouseTextColor / 255f);
33823 Vector2 vector = proj.Center;
33824 int num3 = 1;
33825 int num4 = projFrames[proj.type] - 1;
33826 for (int i = 1; i < num; i++)
33827 {
33828 int frameY = num3;
33829 if (i == num - 1)
33830 {
33831 frameY = num4;
33832 }
33833 else if (proj.type == 893 && i != 2 && i != 5)
33834 {
33835 frameY = 2;
33836 }
33837 Microsoft.Xna.Framework.Rectangle value2 = value.Frame(1, projFrames[proj.type], 0, frameY);
33838 Vector2 vector2 = proj.oldPos[i * 10] + proj.Size / 2f;
33839 float num5 = (vector - vector2).ToRotation();
33840 vector2 = vector - new Vector2(num2, 0f).RotatedBy(num5, Vector2.Zero);
33841 num5 = (vector - vector2).ToRotation() + (float)Math.PI / 2f;
33843 SpriteEffects effects2 = ((!(vector2.X < vector.X)) ? SpriteEffects.FlipHorizontally : SpriteEffects.None);
33844 vector = vector2;
33845 EntitySpriteDraw(value, position2, value2, proj.GetAlpha(Lighting.GetColor(vector2.ToTileCoordinates())), num5, origin, proj.scale, effects2);
33846 if (texture2D != null)
33847 {
33848 EntitySpriteDraw(texture2D, position2, value2, proj.GetAlpha(color), num5, origin, proj.scale, effects2);
33849 }
33850 }
33851 EntitySpriteDraw(value, position, rectangle, alpha, proj.rotation, origin, proj.scale, effects);
33852 if (texture2D != null)
33853 {
33854 EntitySpriteDraw(texture2D, position, rectangle, color, proj.rotation, origin, proj.scale, effects);
33855 }
33856 }
const double PI
Definition Math.cs:16
static Asset< Texture2D >[] Projectile
static Asset< Texture2D >[] GlowMask
static int[] projFrames
Definition Main.cs:1326
static Vector2 screenPosition
Definition Main.cs:1715
static byte mouseTextColor
Definition Main.cs:1751
static void EntitySpriteDraw(Texture2D texture, Vector2 position, Microsoft.Xna.Framework.Rectangle? sourceRectangle, Microsoft.Xna.Framework.Color color, float rotation, Vector2 origin, float scale, SpriteEffects effects, float worthless=0f)
Definition Main.cs:34658

References Terraria.Main.EntitySpriteDraw(), Terraria.Lighting.GetColor(), Terraria.GameContent.TextureAssets.GlowMask, System.Text.RegularExpressions.i, Terraria.Main.mouseTextColor, System.Math.PI, Terraria.GameContent.TextureAssets.Projectile, Terraria.Main.projFrames, Terraria.Main.screenPosition, System.value, Microsoft.Xna.Framework.Graphics.Vector2, and Microsoft.Xna.Framework.Vector2.Zero.

Referenced by Terraria.Main.DrawProjDirect().