Example #1
0
        public Vector2 GetBlade(float bladeLength)
        {
            var center = Curio.GetVisualPosition() + new Vector2(8, 8);
            var angle  = Curio.GetVisualAngle();

            return(center + Util.AngleToVector(angle + VisualAngle()) * (8 + bladeLength * VisualScale()));
        }
        public Vector2 GetBase()
        {
            var center = Curio.GetVisualPosition() + new Vector2(8, 8);
            var angle  = Curio.GetVisualAngle();

            return(center + Util.AngleToVector(angle + VisualAngle()) * 8);
        }
Example #3
0
        private void DrawMace(ICurio curio, SceneGame scene, DrawPass pass)
        {
            var center    = curio.GetVisualPosition() + new Vector2(8, 8);
            var offset    = curio.GetOffset();
            var angleBody = curio.GetVisualAngle();
            var mace      = curio.GetBehavior <BehaviorMace>();

            if (mace != null && (!mace.Upswing.Done || !mace.MaceReturn.Done))
            {
                var weaponAngle    = (float)LerpHelper.QuadraticOut(0, 1, mace.Upswing.Slide);
                var weaponScale    = (float)LerpHelper.QuadraticOut(0.5, 1.0, mace.Upswing.Slide);
                var weaponStartPos = Util.AngleToVector(angleBody + MathHelper.PiOver4 * 2) * 8;
                var weaponEndPos   = Util.AngleToVector(angleBody + MathHelper.PiOver4 * 3) * 10;
                var weaponPos      = center + offset + Vector2.Lerp(weaponStartPos, weaponEndPos, (float)LerpHelper.QuadraticOut(0, 1, mace.Upswing.Slide));
                scene.DrawSpriteExt(SpriteWeapon, 0, weaponPos - SpriteWeapon.Middle, SpriteWeapon.Middle, angleBody + weaponAngle, new Vector2(weaponScale), SpriteEffects.None, Color.White, 0);
                if (!mace.Upswing.Done)
                {
                    mace.DrawMace(scene, weaponPos, Util.AngleToVector(mace.UpswingAngle) * (float)LerpHelper.QuadraticOut(0, 12, mace.MaceReturn.Slide), 2);
                }
                if (!mace.MaceReturn.Done)
                {
                    var maceOffset = mace.MacePosition - weaponPos;
                    mace.DrawMace(scene, weaponPos, Vector2.Lerp(maceOffset, Vector2.Zero, (float)LerpHelper.QuadraticOut(0, 1, mace.MaceReturn.Slide)), 8);
                }
            }
        }
Example #4
0
        public override void Draw(ICurio curio, SceneGame scene, DrawPass pass)
        {
            var spriteHelmet      = SpriteLoader.Instance.AddSprite("content/nemesis_helmet");
            var spriteBodyForward = SpriteLoader.Instance.AddSprite("content/nemesis_forward");
            var spriteBodyBack    = SpriteLoader.Instance.AddSprite("content/nemesis_back");
            var spriteWings       = SpriteLoader.Instance.AddSprite("content/nemesis_wings");
            var spriteParry       = SpriteLoader.Instance.AddSprite("content/nemesis_parry");

            var alive   = curio.GetBehavior <BehaviorAlive>();
            var nemesis = curio.GetBehavior <BehaviorNemesis>();

            if (alive.Armor > 0)
            {
                spriteBodyForward = SpriteLoader.Instance.AddSprite("content/nemesis_forward_armor");
                spriteBodyBack    = SpriteLoader.Instance.AddSprite("content/nemesis_back_armor");
            }

            var center    = curio.GetVisualPosition() + new Vector2(8, 8);
            var offset    = curio.GetOffset();
            var color     = curio.GetColor();
            var angleBody = curio.GetVisualAngle();

            scene.PushSpriteBatch(shader: scene.Shader, shaderSetup: (transform, projection) =>
            {
                scene.SetupColorMatrix(color);
            });
            SpriteReference spriteBody;
            float           headPos = MathHelper.Lerp(-4, 4, nemesis.ForwardBack);

            if (nemesis.ForwardBack > 0.5f)
            {
                spriteBody = spriteBodyForward;
            }
            else
            {
                spriteBody = spriteBodyBack;
            }
            scene.DrawSpriteExt(spriteBody, 0, center + offset - spriteBody.Middle, spriteBody.Middle, angleBody, new Vector2(1), SpriteEffects.None, Color.White, 0);
            scene.DrawSpriteExt(spriteHelmet, 0, center + offset + Util.AngleToVector(angleBody) * headPos - spriteHelmet.Middle, spriteHelmet.Middle, angleBody, new Vector2(1), SpriteEffects.None, Color.White, 0);
            if (nemesis.State == NemesisState.Parry)
            {
                scene.DrawSpriteExt(spriteParry, 0, center + offset - spriteParry.Middle, spriteParry.Middle, angleBody, new Vector2(1), SpriteEffects.None, Color.White, 0);
            }
            if (nemesis.ForwardBack > 0.5f && nemesis.WingsOpen > 0f)
            {
                Color wingColor = Color.Lerp(Color.Red, Color.Black, nemesis.WingsOpen);
                scene.DrawSpriteExt(spriteWings, 0, center + offset - spriteWings.Middle, spriteWings.Middle, angleBody, new Vector2(1), SpriteEffects.None, wingColor, 0);
            }

            scene.PopSpriteBatch();
        }
        public override void Draw(ICurio curio, SceneGame scene, DrawPass pass)
        {
            var center    = curio.GetVisualPosition() + new Vector2(8, 8);
            var offset    = curio.GetOffset();
            var color     = curio.GetColor();
            var angleBody = curio.GetVisualAngle();

            scene.PushSpriteBatch(shader: scene.Shader, shaderSetup: (transform, projection) =>
            {
                scene.SetupColorMatrix(color);
            });
            scene.DrawSpriteExt(Sprite, 0, center + offset - Sprite.Middle, Sprite.Middle, angleBody, new Vector2(1), SpriteEffects.None, Color.White, 0);
            scene.PopSpriteBatch();
        }
Example #6
0
        private void DrawDagger(ICurio curio, SceneGame scene, DrawPass pass)
        {
            var center    = curio.GetVisualPosition() + new Vector2(8, 8);
            var offset    = curio.GetOffset();
            var angleBody = curio.GetVisualAngle();
            var dagger    = curio.GetBehavior <BehaviorDagger>();

            if (dagger != null && !dagger.Upswing.Done)
            {
                var weaponAngle    = (float)LerpHelper.QuadraticOut(0, 1, dagger.Upswing.Slide);
                var weaponScale    = (float)LerpHelper.QuadraticOut(0.5, 1.0, dagger.Upswing.Slide);
                var weaponStartPos = Util.AngleToVector(angleBody + MathHelper.PiOver4 * 2) * 8;
                var weaponEndPos   = Util.AngleToVector(angleBody + MathHelper.PiOver4 * 3) * 10;
                var weaponPos      = center + offset + Vector2.Lerp(weaponStartPos, weaponEndPos, (float)LerpHelper.QuadraticOut(0, 1, dagger.Upswing.Slide));
                scene.DrawSpriteExt(SpriteWeapon, 0, weaponPos - SpriteWeapon.Middle, SpriteWeapon.Middle, angleBody + weaponAngle, new Vector2(weaponScale), SpriteEffects.None, Color.White, 0);
            }
        }
Example #7
0
        public override void Draw(ICurio curio, SceneGame scene, DrawPass pass)
        {
            var spriteHead   = SpriteLoader.Instance.AddSprite("content/lich_head");
            var spriteBody   = SpriteLoader.Instance.AddSprite("content/lich_body");
            var spriteHeart  = SpriteLoader.Instance.AddSprite("content/lich_heart");
            var spriteWeapon = SpriteLoader.Instance.AddSprite("content/lich_weapon");

            var center    = curio.GetVisualPosition() + new Vector2(8, 8);
            var offset    = curio.GetOffset();
            var color     = curio.GetColor();
            var angleBody = curio.GetVisualAngle();
            var lich      = curio.GetBehavior <BehaviorLich>();

            scene.PushSpriteBatch(shader: scene.Shader, shaderSetup: (transform, projection) =>
            {
                scene.SetupColorMatrix(color);
            });

            if (pass == DrawPass.EffectLow)
            {
                scene.DrawSpriteExt(spriteBody, 0, center - spriteBody.Middle, spriteBody.Middle, scene.Frame * 0.1f, new Vector2(1), SpriteEffects.None, Color.Red, 0);
                scene.DrawSpriteExt(spriteBody, 0, center - spriteBody.Middle, spriteBody.Middle, scene.Frame * 0.2f, new Vector2(0.8f), SpriteEffects.None, Color.DarkRed, 0);

                var weaponMiddle = new Vector2(spriteWeapon.Width / 2, spriteWeapon.Height * 2 / 3);
                var weaponOffset = Util.AngleToVector(lich.SwordAngle);
                scene.DrawSpriteExt(spriteWeapon, 0, center + Util.AngleToVector(angleBody) + weaponOffset * 8 - weaponMiddle, weaponMiddle, lich.SwordAngle, new Vector2(lich.SwordScale), SpriteEffects.None, Color.White, 0);

                scene.DrawSpriteExt(spriteBody, 0, center - spriteBody.Middle, spriteBody.Middle, scene.Frame * 0.3f, new Vector2(0.6f), SpriteEffects.None, Color.Black, 0);
            }
            if (pass == DrawPass.Creature)
            {
                if (!curio.IsHeartless())
                {
                    scene.DrawSpriteExt(spriteHeart, 0, center + offset - spriteHeart.Middle, spriteHeart.Middle, 0, new Vector2(1), SpriteEffects.None, Color.White, 0);
                }
            }
            if (pass == DrawPass.Effect)
            {
                var headOffset = Util.AngleToVector(angleBody) * -8;
                scene.DrawSpriteExt(spriteHead, 0, center + headOffset + offset - spriteHead.Middle, spriteHead.Middle, angleBody, new Vector2(1), SpriteEffects.None, Color.White, 0);
            }

            scene.PopSpriteBatch();
        }
Example #8
0
        public override void Draw(ICurio curio, SceneGame scene, DrawPass pass)
        {
            var spriteIdle = SpriteLoader.Instance.AddSprite("content/rat_idle");
            var spriteMove = SpriteLoader.Instance.AddSprite("content/rat_move");
            var center     = curio.GetVisualPosition() + new Vector2(8, 8);
            var offset     = curio.GetOffset();
            var color      = curio.GetColor();
            var angleBody  = curio.GetVisualAngle();
            var pathfinder = curio.GetBehavior <BehaviorPathfinder>();

            scene.PushSpriteBatch(shader: scene.Shader, shaderSetup: (transform, projection) =>
            {
                scene.SetupColorMatrix(color);
            });
            var spriteBody = pathfinder.HasPath ? spriteMove : spriteIdle;

            scene.DrawSpriteExt(spriteBody, 0, center + offset - spriteBody.Middle, spriteBody.Middle, angleBody, new Vector2(1), SpriteEffects.None, Color.White, 0);
            scene.PopSpriteBatch();
        }
Example #9
0
        private void UpdateFootstep(SceneGame scene)
        {
            var active = Curio.GetActionHolder(ActionSlot.Active);
            var tile   = Curio.GetMainTile();

            Footstep += scene.TimeModCurrent;
            if (Momentum.Amount >= 32 && Footstep >= 4 && tile != null && !tile.IsChasm() && active.CurrentActions.Any(CanFootstep))
            {
                Footstep = Footstep % 4;
                var angle    = Curio.GetVisualAngle();
                var offset   = Util.AngleToVector(angle);
                var lateral  = Util.AngleToVector(angle + MathHelper.PiOver2);
                var particle = new ExplosionParticle(scene, SpriteLoader.Instance.AddSprite("content/effect_moon"), Curio.GetVisualTarget() + FootstepOffset * lateral * 6 + offset * -12, 20)
                {
                    Angle    = angle + MathHelper.Pi,
                    Color    = Color.White,
                    DrawPass = DrawPass.EffectLowAdditive,
                };
                //new ScreenShakeRandom(scene, 0.5f, 5, LerpHelper.QuadraticIn);
                FootstepOffset *= -1;
            }
        }
Example #10
0
        public override void Draw(ICurio curio, SceneGame scene, DrawPass pass)
        {
            var body  = SpriteBody;
            var alive = curio.GetBehavior <BehaviorAlive>();

            if (alive.Armor > 0)
            {
                body = SpriteLoader.Instance.AddSprite($"{SpriteBody.FileName}_armor");
            }
            var center    = curio.GetVisualPosition() + new Vector2(8, 8);
            var offset    = curio.GetOffset();
            var color     = curio.GetColor();
            var angleBody = curio.GetVisualAngle();

            scene.PushSpriteBatch(shader: scene.Shader, shaderSetup: (transform, projection) =>
            {
                scene.SetupColorMatrix(color);
            });
            scene.DrawSpriteExt(body, 0, center + offset - SpriteBody.Middle, SpriteBody.Middle, angleBody, new Vector2(1), SpriteEffects.None, Color.White, 0);
            DrawDagger(curio, scene, pass);
            DrawMace(curio, scene, pass);
            scene.PopSpriteBatch();
        }
Example #11
0
        public override void Draw(ICurio curio, SceneGame scene, DrawPass pass)
        {
            var spriteHelmetForward = SpriteLoader.Instance.AddSprite("content/player_helmet_5");
            var spriteHelmetBack    = SpriteLoader.Instance.AddSprite("content/player_helmet_4");

            var spriteBodyForward = SpriteLoader.Instance.AddSprite("content/player_forward");
            var spriteBodyBack    = SpriteLoader.Instance.AddSprite("content/player_back");

            var spriteSword      = SpriteLoader.Instance.AddSprite("content/player_sword");
            var spriteGrip       = SpriteLoader.Instance.AddSprite("content/player_grip");
            var spriteSwordBlood = SpriteLoader.Instance.AddSprite("content/player_sword_bloody");
            var spriteSwordHeart = SpriteLoader.Instance.AddSprite("content/player_sword_heart");
            var spriteWings      = SpriteLoader.Instance.AddSprite("content/player_wings");

            var sword   = curio.GetBehavior <BehaviorSword>();
            var grapple = curio.GetBehavior <BehaviorGrapplingHook>();
            var player  = curio.GetBehavior <BehaviorPlayer>();
            var alive   = curio.GetBehavior <BehaviorAlive>();

            if (alive.Armor > 0)
            {
                spriteBodyForward = SpriteLoader.Instance.AddSprite("content/player_forward_armor");
                spriteBodyBack    = SpriteLoader.Instance.AddSprite("content/player_back_armor");
            }

            var world     = curio.GetWorld();
            var center    = curio.GetVisualPosition() + new Vector2(8, 8);
            var offset    = curio.GetOffset();
            var color     = curio.GetColor();
            var angleBody = curio.GetVisualAngle();

            scene.PushSpriteBatch(shader: scene.Shader, shaderSetup: (transform, projection) =>
            {
                scene.SetupColorMatrix(color);
            });
            if (grapple != null && grapple.ShouldRender)
            {
                var angleGrapple = angleBody + grapple.VisualAngle();
                scene.DrawSpriteExt(spriteGrip, 0, center + offset - spriteGrip.Middle, spriteGrip.Middle, angleGrapple, new Vector2(1), SpriteEffects.None, Color.White, 0);
            }
            if (sword != null)
            {
                var angleSword = angleBody + sword.VisualAngle();
                if (sword.HasBlood)
                {
                    spriteSword = spriteSwordBlood;
                }
                scene.DrawSpriteExt(spriteSword, 0, center + offset - spriteSword.Middle, spriteSword.Middle, angleSword, new Vector2(sword.VisualScale()), SpriteEffects.None, Color.White, 0);
                if (sword.HasHeart)
                {
                    scene.DrawSpriteExt(spriteSwordHeart, 0, center + offset - spriteSwordHeart.Middle, spriteSwordHeart.Middle, angleSword, new Vector2(sword.VisualScale()), SpriteEffects.None, Color.White, 0);
                }
            }
            SpriteReference spriteHelmet;
            SpriteReference spriteBody;
            float           headPos = MathHelper.Lerp(-4, 4, player.ForwardBack);

            if (player.ForwardBack > 0.5f)
            {
                spriteHelmet = spriteHelmetForward;
                spriteBody   = spriteBodyForward;
            }
            else
            {
                spriteHelmet = spriteHelmetBack;
                spriteBody   = spriteBodyBack;
            }
            scene.DrawSpriteExt(spriteBody, 0, center + offset - spriteBody.Middle, spriteBody.Middle, angleBody, new Vector2(1), SpriteEffects.None, Color.White, 0);
            scene.DrawSpriteExt(spriteHelmet, (int)(player.HairFrame / 4), center + offset + Util.AngleToVector(angleBody) * headPos - spriteHelmet.Middle, spriteHelmet.Middle, angleBody, new Vector2(1), SpriteEffects.None, Color.White, 0);
            //scene.PushSpriteBatch(blendState: BlendState.Additive);
            //scene.DrawSpriteExt(spriteWings, 0, center + offset - spriteWings.Middle, spriteWings.Middle, angleBody, new Vector2(1), SpriteEffects.None, new Color(200, 192, 255), 0);
            //scene.PopSpriteBatch();
            scene.PopSpriteBatch();
        }