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
        public override List <Bullet> Fire(Vector gunPosition, CustomCursor cursor)
        {
            var spray     = new List <Bullet>();
            var direction = (cursor.Position - gunPosition).Normalize();

            const int shotsAmount = 6;

            for (var i = 0; i < shotsAmount; i++)
            {
                var offset   = new Vector(r.Next(-3, 3), r.Next(-3, 3)) / 30;
                var e        = direction + offset;
                var position = gunPosition + e * 40;
                spray.Add(new Bullet(
                              position,
                              e * 30,
                              bulletWeight,
                              new Edge(position, position + e * 40),
                              12));
            }

            ammo--;
            ticksFromLastFire = 0;
            AudioEngine.PlayNewInstance(fireSoundPath);
            cursor.MoveBy(new Vector(r.Next(-40, 40), r.Next(-40, 40)));

            return(spray);
        }
Esempio n. 3
0
        public override List <Bullet> Fire(Vector gunPosition, CustomCursor cursor)
        {
            var spray     = new List <Bullet>();
            var direction = (cursor.Position - gunPosition).Normalize();
            var position  = gunPosition + direction * 48;

            spray.Add(new Bullet(
                          position,
                          direction * 30,
                          bulletWeight,
                          new Edge(position, position + direction * 32),
                          20));

            ammo--;
            ticksFromLastFire = 0;
            AudioEngine.PlayNewInstance(fireSoundPath);
            cursor.MoveBy(new Vector(r.Next(-10, 10), r.Next(-10, 10)));

            return(spray);
        }