public void C**k() { if (cockTimer > 0) { return; } if (Player && revolver.play) { return; } if (!cocked) { Sfx(Sound.C**k); if (Player) { revolver.Reset(1); } } cocked = true; cockTimer = Global.Values.roc; }
public override void HandleInput(InputState input) { if (!Active) { return; } Speed.X = MathHelper.Lerp(Speed.X, 0f, 0.01f); Speed.Y = MathHelper.Lerp(Speed.Y, 0f, 0.01f); Rectangle particleRect = underWater ? new Rectangle(128, 0, 16, 16) : new Rectangle(0, 0, 3, 3); engineLoop.Pause(); if (input.CurrentKeyboardState.IsKeyDown(Keys.Left) || input.CurrentKeyboardState.IsKeyDown(Keys.A) || input.CurrentGamePadState.ThumbSticks.Left.X < -0.2f) { Speed.X -= 0.05f; faceDir = -1; if (!underWater) { ParticleController.Instance.Add(Position + new Vector2(5f, 0f), new Vector2(Helper.RandomFloat(0f, 1f), Helper.RandomFloat(-0.2f, 0.2f)), 0, Helper.RandomFloat(500, 1000), 500, false, true, particleRect, new Color(new Vector3(1f) * (0.5f + Helper.RandomFloat(0.5f))), ParticleFunctions.Smoke, underWater ? 0.3f : 1f, 0f, Helper.RandomFloat(-0.1f, 0.1f), 0, ParticleBlend.Alpha); } ParticleController.Instance.Add(Position + new Vector2(5f, 0f), new Vector2(Helper.RandomFloat(0f, 0.2f), Helper.RandomFloat(-0.2f, 0.2f)), 0, underWater ? Helper.RandomFloat(500, 1000) : Helper.RandomFloat(50, 150), 50, false, true, particleRect, underWater ? Color.White : Color.Orange, ParticleFunctions.FadeInOut, underWater ? 0.3f : 1f, 0f, Helper.RandomFloat(-0.1f, 0.1f), 0, ParticleBlend.Alpha); engineLoop.Resume(); } if (input.CurrentKeyboardState.IsKeyDown(Keys.Right) || input.CurrentKeyboardState.IsKeyDown(Keys.D) || input.CurrentGamePadState.ThumbSticks.Left.X > 0.2f) { Speed.X += 0.05f; faceDir = 1; if (!underWater) { ParticleController.Instance.Add(Position + new Vector2(-5f, 0f), new Vector2(Helper.RandomFloat(0f, -1f), Helper.RandomFloat(-0.2f, 0.2f)), 0, Helper.RandomFloat(500, 1000), 500, false, true, particleRect, new Color(new Vector3(1f) * (0.5f + Helper.RandomFloat(0.5f))), ParticleFunctions.Smoke, underWater ? 0.3f : 1f, 0f, Helper.RandomFloat(-0.1f, 0.1f), 0, ParticleBlend.Alpha); } ParticleController.Instance.Add(Position + new Vector2(-5f, 0f), new Vector2(Helper.RandomFloat(0f, -0.2f), Helper.RandomFloat(-0.2f, 0.2f)), 0, underWater ? Helper.RandomFloat(500, 1000) : Helper.RandomFloat(50, 150), 50, false, true, particleRect, underWater ? Color.White : Color.Orange, ParticleFunctions.FadeInOut, underWater ? 0.3f : 1f, 0f, Helper.RandomFloat(-0.1f, 0.1f), 0, ParticleBlend.Alpha); engineLoop.Resume(); } _idleAnim.CurrentFrame = 0; if (input.CurrentKeyboardState.IsKeyDown(Keys.Up) || input.CurrentKeyboardState.IsKeyDown(Keys.W) || input.CurrentGamePadState.ThumbSticks.Left.Y > 0.2f) { Speed.Y -= 0.05f; _upAnim.Play(); _upHitAnim.Play(); if (!underWater) { ParticleController.Instance.Add(Position + new Vector2(0f, 3f), new Vector2(Helper.RandomFloat(-0.3f, 0.3f), Helper.RandomFloat(0f, 1f)), 0, Helper.RandomFloat(500, 1000), 500, false, true, particleRect, new Color(new Vector3(1f) * (0.5f + Helper.RandomFloat(0.5f))), ParticleFunctions.Smoke, underWater ? 0.3f : 1f, 0f, Helper.RandomFloat(-0.1f, 0.1f), 0, ParticleBlend.Alpha); } ParticleController.Instance.Add(Position + new Vector2(0f, 3f), new Vector2(Helper.RandomFloat(-0.3f, 0.3f), Helper.RandomFloat(0f, 0.2f)), 0, underWater ? Helper.RandomFloat(500, 1000) : Helper.RandomFloat(50, 150), 50, false, true, particleRect, underWater ? Color.White : Color.Orange, ParticleFunctions.FadeInOut, underWater ? 0.2f : 0.75f, 0f, Helper.RandomFloat(-0.1f, 0.1f), 0, ParticleBlend.Alpha); engineLoop.Resume(); } else { _upAnim.Reset(); _upHitAnim.Reset(); } if (input.CurrentKeyboardState.IsKeyDown(Keys.Down) || input.CurrentKeyboardState.IsKeyDown(Keys.S) || input.CurrentGamePadState.ThumbSticks.Left.Y < -0.2f) { Speed.Y += 0.05f; _downAnim.Play(); _downHitAnim.Play(); if (!underWater) { ParticleController.Instance.Add(Position + new Vector2(0f, -3f), new Vector2(Helper.RandomFloat(-0.3f, 0.3f), Helper.RandomFloat(0f, -1f)), 0, Helper.RandomFloat(500, 1000), 500, false, true, particleRect, new Color(new Vector3(1f) * (0.5f + Helper.RandomFloat(0.5f))), ParticleFunctions.Smoke, underWater ? 0.3f : 1f, 0f, Helper.RandomFloat(-0.1f, 0.1f), 0, ParticleBlend.Alpha); } ParticleController.Instance.Add(Position + new Vector2(0f, -3f), new Vector2(Helper.RandomFloat(-0.3f, 0.3f), Helper.RandomFloat(0f, -0.2f)), 0, underWater ? Helper.RandomFloat(500, 1000) : Helper.RandomFloat(50, 150), 50, false, true, particleRect, underWater ? Color.White : Color.Orange, ParticleFunctions.FadeInOut, underWater ? 0.2f : 0.75f, 0f, Helper.RandomFloat(-0.1f, 0.1f), 0, ParticleBlend.Alpha); engineLoop.Resume(); } else { _downAnim.Reset(); _downHitAnim.Reset(); } if (input.CurrentKeyboardState.IsKeyDown(Keys.X) || input.CurrentKeyboardState.IsKeyDown(Keys.Space) || input.CurrentGamePadState.Buttons.A == ButtonState.Pressed || input.CurrentGamePadState.Triggers.Right > 0.2f) { if (projectileTime1 <= 0) { projectileTime1 = projectileCoolDown1; if (PowerUpLevel != 1) { ProjectileController.Instance.Spawn(entity => { ((Projectile)entity).Type = ProjectileType.Forward1; ((Projectile)entity).SourceRect = new Rectangle(8, 8, 20, 8); ((Projectile)entity).Life = 1000; ((Projectile)entity).EnemyOwner = false; ((Projectile)entity).Damage = 1f; entity.Speed = new Vector2(6f * faceDir, 0f); entity.Position = Position + new Vector2(faceDir * 10, 0); }); } if (PowerUpLevel == 1) { ProjectileController.Instance.Spawn(entity => { ((Projectile)entity).Type = ProjectileType.Forward1; ((Projectile)entity).SourceRect = new Rectangle(8, 8, 20, 8); ((Projectile)entity).Life = 1000; ((Projectile)entity).EnemyOwner = false; ((Projectile)entity).Damage = 1f; entity.Speed = new Vector2(6f * faceDir, 0f); entity.Position = Position + new Vector2(faceDir * 10, -2); }); ProjectileController.Instance.Spawn(entity => { ((Projectile)entity).Type = ProjectileType.Forward1; ((Projectile)entity).SourceRect = new Rectangle(8, 8, 20, 8); ((Projectile)entity).Life = 1000; ((Projectile)entity).EnemyOwner = false; ((Projectile)entity).Damage = 1f; entity.Speed = new Vector2(6f * faceDir, 0f); entity.Position = Position + new Vector2(faceDir * 10, 2); }); } if (PowerUpLevel >= 2) { ProjectileController.Instance.Spawn(entity => { ((Projectile)entity).Type = ProjectileType.Forward1; ((Projectile)entity).SourceRect = new Rectangle(8, 8, 20, 8); ((Projectile)entity).Life = 1000; ((Projectile)entity).EnemyOwner = false; ((Projectile)entity).Damage = 1f; entity.Speed = new Vector2(6f * faceDir, -0.5f); entity.Position = Position + new Vector2(faceDir * 10, 0); }); ProjectileController.Instance.Spawn(entity => { ((Projectile)entity).Type = ProjectileType.Forward1; ((Projectile)entity).SourceRect = new Rectangle(8, 8, 20, 8); ((Projectile)entity).Life = 1000; ((Projectile)entity).EnemyOwner = false; ((Projectile)entity).Damage = 1f; entity.Speed = new Vector2(6f * faceDir, 0.5f); entity.Position = Position + new Vector2(faceDir * 10, 0); }); } } if (projectileTime2 <= 0) { projectileTime2 = projectileCoolDown2; if (PowerUpLevel >= 3) { ProjectileController.Instance.Spawn(entity => { ((Projectile)entity).Type = ProjectileType.Bomb; ((Projectile)entity).SourceRect = new Rectangle(16, 0, 8, 8); ((Projectile)entity).Life = 5000; ((Projectile)entity).Scale = 0.5f; ((Projectile)entity).EnemyOwner = false; ((Projectile)entity).Damage = 20f; entity.Speed = new Vector2(1f * faceDir, 0f); entity.Position = Position + new Vector2(0, 5); }); } } if (projectileTime3 <= 0) { projectileTime3 = projectileCoolDown3; if (PowerUpLevel >= 4) { AudioController.PlaySFX("seeker", 0.5f, -0.1f, 0.1f); ProjectileController.Instance.Spawn(entity => { ((Projectile)entity).Type = ProjectileType.Seeker; ((Projectile)entity).SourceRect = new Rectangle(1, 18, 8, 4); ((Projectile)entity).Life = 3000; ((Projectile)entity).Scale = 1f; ((Projectile)entity).EnemyOwner = false; ((Projectile)entity).Damage = 5f; ((Projectile)entity).Target = Position + new Vector2(faceDir * 300, 0); ; entity.Speed = new Vector2(0f, -0.5f); entity.Position = Position + new Vector2(0, 0); }); } } isFiring = true; gunLoop.Resume(); } else if (isFiring) { isFiring = false; gunLoop.Pause(); AudioController.PlaySFX("gun_winddown", gunLoop.Volume, -0.1f, 0.1f); } base.HandleInput(input); }