Example #1
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 #3
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 #4
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 #5
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 #6
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();
        }