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(); }
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(); }
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(); }
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(); }
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(); }