private void UpdatePlayer() { var previousPosition = player.Position.Copy(); player.UpdatePosition(keyState, currentLevel.StaticShapes); currentLevel.CollisionsInfo = CollisionSolver.ResolveCollisions(currentLevel.SceneShapes); AudioEngine.UpdateListenerPosition(player.Position); var realVelocity = player.Position - previousPosition; player.MeleeWeapon.MoveRangeBy(realVelocity); cursor.MoveBy(viewForm.GetCursorDiff() + realVelocity); player.UpdateSprites(cursor.Position); if (mouseState.RMB && player.MeleeWeapon.IsReady) { player.RaiseMeleeWeapon(); } else if (mouseState.LMB && player.CurrentWeapon.IsReady && !player.IsMeleeWeaponInAction) { player.HideMeleeWeapon(); var firedBullets = player.CurrentWeapon.Fire(player.Position, cursor); AudioEngine.PlayNewInstance("event:/gunfire/2D/misc/DROPPED_SHELL"); currentLevel.Bullets.AddRange(firedBullets); currentLevel.Particles.Add(ParticleFactory.CreateShell(player.Position, cursor.Position - player.Position, player.CurrentWeapon)); } player.IncrementTick(); }
private void Fire(Vector aim, List <Bullet> sceneBullets, List <AbstractParticleUnit> particles) { RotateToPrey(aim); if (currentWeapon.IsReady) { sceneBullets.AddRange(currentWeapon.Fire(Position, sight)); particles.Add(ParticleFactory.CreateShell(Position, sight, currentWeapon)); } }