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