Example #1
0
        /// <summary>
        /// Fire a projectile from ship with given type and velocity
        /// </summary>
        public void FireProjectile(ProjectileType projectile, float velocity)
        {
            switch (projectile)
            {
            case ProjectileType.Blaster:
            {
                // fire left blaster
                Matrix m = shipEntities.GetTransform("blaster_left") *
                           bobbing * transform;

                Projectile p = gameManager.AddProjectile(projectile,
                                                         playerIndex, m, velocity, 0.1f,
                                                         RenderTechnique.ViewMapping);
                p.SetExplosion(AnimSpriteType.Blaster,
                               30, 30, DrawMode.AdditiveAndGlow, 0, 0, null);

                // fire right blaster
                m = shipEntities.GetTransform("blaster_right") *
                    bobbing * transform;

                p = gameManager.AddProjectile(projectile, playerIndex,
                                              m, velocity, 0.1f, RenderTechnique.ViewMapping);
                p.SetExplosion(AnimSpriteType.Blaster,
                               30, 30, DrawMode.AdditiveAndGlow, 0, 0, null);

                // play blaster fire sound
                gameManager.PlaySound("fire_primary");
            }
            break;

            case ProjectileType.Missile:
            {
                // fire missile
                Matrix m = shipEntities.GetTransform("missile") *
                           bobbing * transform;

                Projectile p = gameManager.AddProjectile(projectile,
                                                         playerIndex, m, velocity, 0.1f,
                                                         RenderTechnique.NormalMapping);
                p.SetExplosion(AnimSpriteType.Missile,
                               90, 30, DrawMode.AdditiveAndGlow,
                               0.5f, 500, "missile_explode");

                // set missile trail
                ParticleSystem Trail = gameManager.AddParticleSystem(
                    ParticleSystemType.MissileTrail, Matrix.Identity);
                p.SetTrail(Trail,
                           Matrix.CreateTranslation(GameOptions.MissileTrailOffset));

                // play missile fire sound
                gameManager.PlaySound("fire_secondary");
            }
            break;
            }
        }
Example #2
0
        ChaseCamera chaseCamera;                 // chase camera object

        /// <summary>
        /// Create a new player ship
        /// </summary>
        public PlayerShip(
            GameManager game,        // game manager
            int player,              // player id
            Model model,             // model for player ship
            EntityList entities,     // entity list for ship model
            float radius)            // collision box radius
        {
            if (game == null)
            {
                throw new ArgumentNullException("game");
            }
            if (entities == null)
            {
                throw new ArgumentNullException("entities");
            }

            // save parameters
            gameManager  = game;
            shipModel    = model;
            shipEntities = entities;
            playerIndex  = player;

            // create movement controller
            movement             = new PlayerMovement();
            movement.maxVelocity = GameOptions.MovementVelocity;

            // enable collision sound
            collisionSound = true;

            // create engine particle system with infinite life time
            particleBoost = gameManager.AddParticleSystem(
                ParticleSystemType.ShipTrail,
                transform);
            particleBoost.SetTotalTime(1e10f);
            boostTransform = shipEntities.GetTransform("engine");

            // create the ship collision box
            box = new CollisionBox(-radius, radius);

            // random bobbing offset
            random      = new Random(player);
            bobbingTime = (float)random.NextDouble();

            // setup 3rd person camera parameters
            camera3rdPerson = false;
            chaseCamera     = new ChaseCamera();
            chaseCamera.DesiredPositionOffset = GameOptions.CameraOffset;
            chaseCamera.LookAtOffset          = GameOptions.CameraTargetOffset;
            chaseCamera.Stiffness             = GameOptions.CameraStiffness;
            chaseCamera.Damping = GameOptions.CameraDamping;
            chaseCamera.Mass    = GameOptions.CameraMass;
        }
Example #3
0
        // collision box radius
        /// <summary>
        /// Create a new player ship
        /// </summary>
        public PlayerShip(
            GameManager game,        // game manager
            int player,              // player id
            Model model,             // model for player ship
            EntityList entities,     // entity list for ship model
            float radius)
        {
            if (game == null)
            {
                throw new ArgumentNullException("game");
            }
            if (entities == null)
            {
                throw new ArgumentNullException("entities");
            }

            // save parameters
            gameManager = game;
            shipModel = model;
            shipEntities = entities;
            playerIndex = player;

            // create movement controller
            movement = new PlayerMovement();
            movement.maxVelocity = GameOptions.MovementVelocity;

            // enable collision sound
            collisionSound = true;

            // create engine particle system with infinite life time
            particleBoost = gameManager.AddParticleSystem(
                                                ParticleSystemType.ShipTrail,
                                                transform);
            particleBoost.SetTotalTime(1e10f);
            boostTransform = shipEntities.GetTransform("engine");

            // create the ship collision box
            box = new CollisionBox(-radius, radius);

            // random bobbing offset
            random = new Random(player);
            bobbingTime = (float)random.NextDouble();

            // setup 3rd person camera parameters
            camera3rdPerson = false;
            chaseCamera = new ChaseCamera();
            chaseCamera.DesiredPositionOffset = GameOptions.CameraOffset;
            chaseCamera.LookAtOffset = GameOptions.CameraTargetOffset;
            chaseCamera.Stiffness = GameOptions.CameraStiffness;
            chaseCamera.Damping = GameOptions.CameraDamping;
            chaseCamera.Mass = GameOptions.CameraMass;
        }