Пример #1
0
        public override void Draw(Player player, SkillData rawdata, PlayerDrawInfo pdi)
        {
            SummonDemonData data = (SummonDemonData)rawdata;

            if (!Main.NPCLoaded[Terraria.ID.NPCID.Demon])
            {
                Main.instance.LoadNPC(Terraria.ID.NPCID.Demon);
            }
            if (!Main.NPCLoaded[Terraria.ID.NPCID.VoodooDemon])
            {
                Main.instance.LoadNPC(Terraria.ID.NPCID.VoodooDemon);
            }
            float Opacity = 1f;

            if (data.Time < 60)
            {
                Opacity = data.Time * (1f / 60);
            }
            else if (data.Time >= (Duration + 1) * 60)
            {
                Opacity = (60 - (data.Time - (Duration + 1) * 60)) * (1f / 60);
            }
            foreach (SummonDemonData.DemonInfo di in data.DemonMinions)
            {
                int       DemonID  = di.VoodooDemon ? Terraria.ID.NPCID.VoodooDemon : Terraria.ID.NPCID.Demon;
                Texture2D texture  = Main.npcTexture[DemonID];
                Rectangle drawrect = new Rectangle(0, 0, texture.Width, texture.Height / Main.npcFrameCount[DemonID]);
                drawrect.Y = di.FrameID * drawrect.Height;
                Vector2 Origin = new Vector2(drawrect.Width * 0.5f, drawrect.Height * 0.5f);
                Terraria.DataStructures.DrawData dd = new Terraria.DataStructures.DrawData(texture, di.Position - Main.screenPosition, drawrect,
                                                                                           Lighting.GetColor((int)(di.Position.X * (1f / 16)), (int)(di.Position.Y * (1f / 16)), Color.Cyan) * Opacity, di.Rotation, Origin, 1f, (di.Direction > 0 ? SpriteEffects.FlipHorizontally : SpriteEffects.None),
                                                                                           0);
                Main.playerDrawData.Insert(0, dd);
            }
        }
Пример #2
0
        public override void Draw(Player player, SkillData rawdata, PlayerDrawInfo pdi)
        {
            SummonQueenBeeData data = (SummonQueenBeeData)rawdata;

            if (!Main.NPCLoaded[Terraria.ID.NPCID.QueenBee])
            {
                Main.instance.LoadNPC(Terraria.ID.NPCID.QueenBee);
            }
            Texture2D texture = Main.npcTexture[Terraria.ID.NPCID.QueenBee];
            float     Opacity = 1f;

            if (data.Time < 60)
            {
                Opacity = data.Time * (1f / 60);
            }
            else if (data.Time >= 60 * (BeeSummonTime + 1))
            {
                Opacity = (60 - (data.Time - 60 * (BeeSummonTime + 1))) * (1f / 60);
            }
            if (Opacity < 0)
            {
                Opacity = 0;
            }
            Rectangle drawRect = new Rectangle(0, 0, texture.Width, texture.Height / Main.npcFrameCount[Terraria.ID.NPCID.QueenBee]);

            drawRect.Y = drawRect.Height * data.FrameID;
            Vector2 Origin = new Vector2(drawRect.Width * 0.5f, drawRect.Height * 0.5f);

            Terraria.DataStructures.DrawData dd = new Terraria.DataStructures.DrawData(texture, data.Position - Main.screenPosition, drawRect, Lighting.GetColor((int)(data.Position.X * (1f / 16)), (int)(data.Position.Y * (1f / 16)), Color.Cyan) * Opacity, 0f, Origin, 1f, (data.Direction > 0 ? SpriteEffects.FlipHorizontally : SpriteEffects.None), 0);
            Main.playerDrawData.Insert(0, dd);
        }
Пример #3
0
 public override void Draw(Player player, SkillData data, PlayerDrawInfo pdi)
 {
     Microsoft.Xna.Framework.Vector2 Position = player.position;
     Position.X += player.width * 0.5f - 10;
     Position.Y += player.height - 4;
     Terraria.DataStructures.DrawData dd = new Terraria.DataStructures.DrawData(MainMod.HideEffect.GetTexture, Position - Main.screenPosition,
                                                                                null, Microsoft.Xna.Framework.Color.White);
     Main.playerDrawData.Add(dd);
 }
Пример #4
0
        public override void Draw(Player player, SkillData rawdata, PlayerDrawInfo pdi)
        {
            LightningBreathData data = (LightningBreathData)rawdata;

            foreach (LightningBreathData.LightningPath path in data.Paths)
            {
                int   Length  = path.Path.Length;
                float Opacity = data.Time - Length;
                if (Opacity < 0)
                {
                    Opacity = 1;
                }
                else
                {
                    Opacity = 1f - (Opacity * 0.1f);
                    if (Opacity < 0)
                    {
                        continue;
                    }
                }
                for (int p = 0; p < Length; p++)
                {
                    byte Frame = 0;
                    if (p > rawdata.Time || p == Length - 1)
                    {
                        continue;
                    }
                    if (p == rawdata.Time || p == Length - 2)
                    {
                        Frame = 2;
                    }
                    else if (p > 0)
                    {
                        Frame = 1;
                    }
                    Vector2 DrawPos       = path.Path[p];
                    Vector2 MoveDirection = path.Path[p + 1] - DrawPos;
                    float   Rotation      = (float)Math.Atan2(MoveDirection.Y, MoveDirection.X);
                    if (p < Length - 2)
                    {
                        Terraria.DataStructures.DrawData dd2 =
                            new Terraria.DataStructures.DrawData(MainMod.LightningBolt.GetTexture, path.Path[p + 1] - Main.screenPosition, new Rectangle(48, 0, 16, 16),
                                                                 Color.White * Opacity, 0f, new Vector2(8, 8), 1f, Microsoft.Xna.Framework.Graphics.SpriteEffects.None, 0);
                        Main.playerDrawData.Add(dd2);
                    }
                    DrawPos.X += MoveDirection.X * 0.5f;
                    DrawPos.Y += MoveDirection.Y * 0.5f;
                    Terraria.DataStructures.DrawData dd =
                        new Terraria.DataStructures.DrawData(MainMod.LightningBolt.GetTexture, DrawPos - Main.screenPosition, new Rectangle(16 * Frame, 0, 16, 16),
                                                             Color.White * Opacity, Rotation, new Vector2(8, 8), 1f, Microsoft.Xna.Framework.Graphics.SpriteEffects.None, 0);
                    Main.playerDrawData.Add(dd);
                }
            }
        }
Пример #5
0
        public override bool PreDraw(SpriteBatch spriteBatch, Color lightColor)
        {
            //spriteBatch.End();
            //spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, Main.DefaultSamplerState, DepthStencilState.None, Main.instance.Rasterizer, EpikV2.jadeDyeShader.Shader, Main.GameViewMatrix.ZoomMatrix);
            Texture2D texture = ModContent.GetTexture(projectile.localAI[1] == 1?"EpikV2/Items/Jade_Reaper":"EpikV2/Items/Jade_Reaper_M");

            Terraria.DataStructures.DrawData data = new Terraria.DataStructures.DrawData(texture, projectile.Center - Main.screenPosition, new Rectangle(0, 0, 64, 64), new Color(255, 255, 255, 200), projectile.rotation, new Vector2(32, 32), 2f, SpriteEffects.None, 0);
            EpikV2.jadeDyeShader.Apply(projectile, data);
            data.Draw(spriteBatch);
            //spriteBatch.Draw(texture, projectile.Center - Main.screenPosition, new Rectangle(0,0,64,64), default, projectile.rotation, new Vector2(32,32), 2f, SpriteEffects.None, 0f);

            return(false);
        }
Пример #6
0
        public override void Draw(Player player, SkillData data, PlayerDrawInfo pdi)
        {
            float Scale = (float)(data.Time * 2) / 20, Opacity = 1f;

            if (data.Time > 10)
            {
                Opacity = 1f - (float)(data.Time - 10) / 10;
            }
            Vector2 Position = player.Center - Main.screenPosition;

            Position.Y -= player.height * 0.25f;
            Terraria.DataStructures.DrawData dd = new Terraria.DataStructures.DrawData(MainMod.ProvokeAudioEffect.GetTexture, Position, null, Color.White * Opacity, 0f, new Vector2(16, 16), Scale, SpriteEffects.None, 0);
            Main.playerDrawData.Add(dd);
        }
Пример #7
0
        public override void Draw(Player player, SkillData rawdata, PlayerDrawInfo pdi)
        {
            SoulRageData data = (SoulRageData)rawdata;

            foreach (SoulRageData.Victim victim in data.targets)
            {
                foreach (SoulShotInfo soul in victim.SoulsPosition)
                {
                    Terraria.DataStructures.DrawData dd = new Terraria.DataStructures.DrawData(
                        GetProjectileTexture(297), soul.Position - Main.screenPosition, null, Color.White);
                    Main.playerDrawData.Insert(0, dd);
                }
            }
        }
Пример #8
0
        public override void Draw(Player player, SkillData data, PlayerDrawInfo pdi)
        {
            Vector2 EffectPosition = player.Center - Main.screenPosition;
            Color   color          = Color.White;

            EffectPosition.X += data.GetInteger(ShieldBashDirectionVar) * 3.6f * data.Time;
            if (data.Time > 10)
            {
                color *= 1f - ((data.Time - 10) * 0.1f);
            }
            Terraria.DataStructures.DrawData dd = new Terraria.DataStructures.DrawData(MainMod.ShieldBashEffect.GetTexture, EffectPosition, null, color,
                                                                                       0f, new Vector2(24, 44) * 0.5f, 1f, (data.GetInteger(ShieldBashDirectionVar) > 0 ? Microsoft.Xna.Framework.Graphics.SpriteEffects.None : Microsoft.Xna.Framework.Graphics.SpriteEffects.FlipHorizontally), 0);
            Main.playerDrawData.Add(dd);
        }
Пример #9
0
        public override void Draw(Player player, SkillData rawdata, PlayerDrawInfo pdi)
        {
            VowSkillData data = (VowSkillData)rawdata;

            if (data.Target == null)
            {
                return;
            }
            Vector2 DrawPosition = data.Target.Center - Main.screenPosition;

            DrawPosition.Y -= data.Target.Height * 0.5f + 20f;
            Terraria.DataStructures.DrawData dd = new Terraria.DataStructures.DrawData(Main.heartTexture, DrawPosition, null,
                                                                                       Color.White, 0f, new Vector2(Main.heartTexture.Width, Main.heartTexture.Height) * 0.5f, 0.5f, Microsoft.Xna.Framework.Graphics.SpriteEffects.None, 0);
            Main.playerDrawData.Insert(0, dd);
        }
Пример #10
0
        public override void Draw(Terraria.Player player, SkillData data, Terraria.ModLoader.PlayerDrawInfo pdi)
        {
            float   Rotation = RotationFromSkillTime(data.Time) * player.direction;
            Vector2 Origin   = GetOrigin;

            if (player.direction < 0)
            {
                Origin.X = 50 - Origin.X;
            }
            Vector2 SkillPosition = player.Center;

            SkillPosition.X += 4f * player.direction;
            //SkillPosition.Y -= 8f;
            Terraria.DataStructures.DrawData dd = new Terraria.DataStructures.DrawData(MainMod.Longsword.GetTexture, SkillPosition - Main.screenPosition, null, pdi.eyeWhiteColor, Rotation, Origin, 1f + data.Level * 0.15f, (player.direction < 0 ? SpriteEffects.FlipHorizontally : SpriteEffects.None), 0);
            Main.playerDrawData.Insert(0, dd);
        }
Пример #11
0
        public override void ModifyDrawLayers(List <PlayerLayer> layers)
        {
            PlayerLayer layer = new PlayerLayer(mod.Name, "NClasses: Skill Effect Layer", delegate(PlayerDrawInfo pdi)
            {
                if (SkillBeingCasted != null)
                {
                    SkillBase Base       = SkillBeingCasted.GetBase;
                    float CastPercentage = (SkillBeingCasted.CastTime / Base.CastTime);
                    float Scale          = Base.GetEffectRange(SkillBeingCasted);
                    Terraria.DataStructures.DrawData dd;
                    if (Scale > 0)
                    {
                        Scale          /= 64;
                        Vector2 DrawPos = SkillBeingCasted.CastPosition - Main.screenPosition;
                        dd =
                            new Terraria.DataStructures.DrawData(MainMod.MagicCircle, DrawPos, null, Color.White * CastPercentage * Main.cursorAlpha, SkillBeingCasted.CastTime * 0.017f,
                                                                 new Vector2(48, 48), Scale, Microsoft.Xna.Framework.Graphics.SpriteEffects.None, 0);
                        dd.ignorePlayerRotation = true;
                        Main.playerDrawData.Add(dd);
                    }
                    float BarScale          = 1 + CastPercentage * 62;
                    Vector2 CastBarPosition = player.Top - Main.screenPosition;
                    CastBarPosition.X       = (int)(CastBarPosition.X - 32);
                    CastBarPosition.Y       = (int)(CastBarPosition.Y - 12);
                    dd =
                        new Terraria.DataStructures.DrawData(MainMod.CastBar, CastBarPosition, new Rectangle(0, 0, 64, 8), Color.White);
                    dd.ignorePlayerRotation = true;
                    Main.playerDrawData.Add(dd);
                    dd =
                        new Terraria.DataStructures.DrawData(MainMod.CastBar, CastBarPosition, new Rectangle(0, 8, (int)BarScale, 8), Color.White * Main.cursorAlpha);
                    dd.ignorePlayerRotation = true;
                    Main.playerDrawData.Add(dd);
                }
                foreach (SkillData sd in GetSkillsUnderEffect)
                {
                    if (sd.CastTime >= sd.GetBase.CastTime)
                    {
                        sd.GetBase.Draw(player, sd, pdi);
                    }
                }
            });

            layers.Add(layer);
        }