Esempio n. 1
0
        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();
        }
Esempio n. 2
0
 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));
     }
 }