示例#1
0
 /// <summary>
 /// Event handler for when the user selects ok on the "are you sure
 /// you want to quit" message box. This uses the loading screen to
 /// transition from the game back to the main menu screen.
 /// </summary>
 void ConfirmQuitMessageBoxAccepted(object sender, PlayerIndexEventArgs e)
 {
     LoadingScreen.Load(ScreenManager, false, null, new BackgroundScreen(),
                        new MainMenuScreen());
 }
示例#2
0
        /// <summary>
        /// Updates the state of the game. This method checks the GameScreen.IsActive
        /// property, so the game will stop updating when the pause menu is active,
        /// or if you tab away to a different application.
        /// </summary>
        public override void Update(GameTime gameTime, bool otherScreenHasFocus,
                                    bool coveredByOtherScreen)
        {
            base.Update(gameTime, otherScreenHasFocus, false);

            // Gradually fade in or out depending on whether we are covered by the pause screen.
            if (coveredByOtherScreen)
            {
                pauseAlpha = Math.Min(pauseAlpha + 1f / 32, 1);
            }
            else
            {
                pauseAlpha = Math.Max(pauseAlpha - 1f / 32, 0);
            }

            if (IsActive)
            {
                mouse = Mouse.GetState();
                // bloom
                bloom.Visible  = true;
                bloom.Settings = BloomSettings.PresetSettings[bloomSettingsIndex];

                // update entites
                playerBody.update(gameTime);



                if (playerBody.isAlive == false)
                {
                    bloom.Visible = false;

                    world.Clear();


                    this.ExitScreen();

                    LoadingScreen.Load(ScreenManager, false, PlayerIndex.One, new DeadScreen(2));
                }

                //game script

                foreach (Pickupable pickupable in Pickupables)
                {
                    if (pickupable.getSetIsTouchingPlayer && playerBody.getSetWantsToPickUp && !playerBody.getSetHasPickedUp)
                    {
                        // joints.Add ( JointFactory.CreateRevoluteJoint(world,playerBody.playerBody,
                        //   pickupable.getBody, new Vector2(0,0)));

                        joints.Add(JointFactory.CreateDistanceJoint(world, playerBody.playerBody, pickupable.getBody, new Vector2(0, 0), new Vector2(0, 0)));


                        playerBody.getSetWantsToPickUp      = false;
                        pickupable.getSetIsAttachedToPlayer = true;



                        playerBody.getSetHasPickedUp = true;
                    }

                    if (joints.Count > 0 && playerBody.getSetWantsTodrop && playerBody.getSetHasPickedUp && pickupable.getSetIsAttachedToPlayer)
                    {
                        // for some reason the on seperation dosn't work when removing a joint.
                        world.RemoveJoint(joints[0]);
                        joints.RemoveAt(0);
                        playerBody.getSetHasPickedUp        = false;
                        pickupable.getSetIsAttachedToPlayer = false;
                        pickupable.getSetIsTouchingPlayer   = false;
                    }
                }



                // limts on the cam.

                cam2D.MaxRotation = 0.001f;
                cam2D.MinRotation = -0.001f;

                cam2D.MaxPosition = new Vector2(((playerBody.playerBody.Position.X) * 64 + 1), ((playerBody.playerBody.Position.Y) * 64) + 1);
                cam2D.MinPosition = new Vector2(((playerBody.playerBody.Position.X) * 64) + 2, ((playerBody.playerBody.Position.Y) * 64) + 1);
                cam2D.Update(gameTime);



                world.Step((float)gameTime.ElapsedGameTime.TotalMilliseconds * 0.001f);
            }
        }
示例#3
0
 void level1_Selected(object sender, PlayerIndexEventArgs e)
 {
     LoadingScreen.Load(ScreenManager, true, e.PlayerIndex,
                        new GameplayScreen());
 }
示例#4
0
        /// <summary>
        /// Updates the state of the game. This method checks the GameScreen.IsActive
        /// property, so the game will stop updating when the pause menu is active,
        /// or if you tab away to a different application.
        /// </summary>
        public override void Update(GameTime gameTime, bool otherScreenHasFocus,
                                    bool coveredByOtherScreen)
        {
            base.Update(gameTime, otherScreenHasFocus, false);

            // Gradually fade in or out depending on whether we are covered by the pause screen.
            if (coveredByOtherScreen)
            {
                pauseAlpha = Math.Min(pauseAlpha + 1f / 32, 1);
            }
            else
            {
                pauseAlpha = Math.Max(pauseAlpha - 1f / 32, 0);
            }

            if (IsActive)
            {
                bloom.Visible = true;



                //game script
                {
                    if (Collectables.Count == 1 && ninjaGateRemoved == false)
                    {
                        world.RemoveBody(ninjaGate.shapeBody);
                        Shapes.Remove(ninjaGate);// for some reason I had to create a ninja gate object and not just add an object to the list
                        ninjaGateRemoved = true;
                    }

                    if (Collectables.Count == 0)
                    {
                        Game1.progress = 1;
                        Game1.setScore(playerBody.getScore(), 1);



                        ExitScreen();
                        bloom.Visible = false;
                        LoadingScreen.Load(ScreenManager, false, ControllingPlayer,
                                           new level2Screen());
                    }
                }


                bloom.Settings = BloomSettings.PresetSettings[bloomSettingsIndex];

                foreach (Shape shape in Shapes)
                {
                    if (shape.isTouching)
                    {
                        MediaPlayer.Pause();
                        ExitScreen();
                        bloom.Visible = false;
                        LoadingScreen.Load(ScreenManager, false, ControllingPlayer, new DeadScreen(1));
                    }
                    shape.update();
                }

                foreach (Square square in Squares)
                {
                    square.Update();
                    if (square.isTouching)
                    {
                        MediaPlayer.Pause();

                        ExitScreen();
                        bloom.Visible = false;
                        LoadingScreen.Load(ScreenManager, false, ControllingPlayer, new DeadScreen(1));


                        // ScreenManager.AddScreen(new MessageBoxScreen("You've picked up a power up!"),ControllingPlayer);
                    }
                }


                foreach (Bady bady in Badies)
                {
                    foreach (Laser laser in bady.Lasers)
                    {
                        if (laser.hasHit)
                        {
                            MediaPlayer.Pause();
                            ExitScreen();
                            bloom.Visible = false;
                            LoadingScreen.Load(ScreenManager, false, ControllingPlayer, new DeadScreen(1));
                        }
                    }
                    if (bady.hitByPlayerLaser)
                    {
                        List <playerLaser> playerLasers = playerBody.getLasers;

                        for (int k = 0; k < playerLasers.Count; ++k)
                        {
                            if (bady.playerLaserBody.Equals(playerLasers[k].laserBody))
                            {
                                bady.deltaHealth = playerLasers[k].getDamage;
                            }
                        }
                    }

                    bady.Update(gameTime);
                }



                for (int k = 0; k < Badies.Count; k++)
                {
                    if (Badies[k].isDead)
                    {
                        Badies.RemoveAt(k);
                        playerBody.updateScore(1);
                    }
                }


                foreach (Whip whip in Whips)
                {
                    whip.chainLinks[0].ApplyTorque(50); // gets the wheel spinning
                    if (whip.isTouching)                // for some reason this is true on start up
                    {
                        MediaPlayer.Pause();
                        ExitScreen();
                        bloom.Visible = false;
                        LoadingScreen.Load(ScreenManager, false, ControllingPlayer, new DeadScreen(1));
                    }
                }

                // Collectables
                {
                    foreach (Collectable collectable in Collectables)
                    {
                        collectable.Update();
                    }

                    //remove collected collectables

                    for (int k = 0; k < Collectables.Count; k++)
                    {
                        if (Collectables[k].collected)
                        {
                            world.RemoveBody(Collectables[k].collectableBody);
                            Collectables.RemoveAt(k);
                            playerBody.updateScore(2);
                        }
                    }
                }

                playerBody.update(gameTime);
                // limts on the cam.

                cam2D.MaxRotation = 0.001f;
                cam2D.MinRotation = -0.001f;

                cam2D.MaxPosition = new Vector2(((playerBody.playerBody.Position.X) * 64 + 1), ((playerBody.playerBody.Position.Y) * 64) + 1);
                cam2D.MinPosition = new Vector2(((playerBody.playerBody.Position.X) * 64) + 2, ((playerBody.playerBody.Position.Y) * 64) + 1);
                cam2D.Update(gameTime);



                world.Step((float)gameTime.ElapsedGameTime.TotalMilliseconds * 0.001f);
            }
        }
示例#5
0
 void test1_Selected(object sender, PlayerIndexEventArgs e)
 {
     LoadingScreen.Load(ScreenManager, true, e.PlayerIndex,
                        new TestingPickupable());
 }
示例#6
0
 void tutlevel_Selected(object sender, PlayerIndexEventArgs e)
 {
     LoadingScreen.Load(ScreenManager, true, e.PlayerIndex,
                        new TutLevel1());
 }
示例#7
0
 void levelEditEntrySelected(object sender, PlayerIndexEventArgs e)
 {
     LoadingScreen.Load(ScreenManager, true, e.PlayerIndex,
                        new LevelEditor());
 }
示例#8
0
 void chapterOne_Selected(object sender, PlayerIndexEventArgs e)
 {
     LoadingScreen.Load(ScreenManager, true, PlayerIndex.One, new ChapterOne());
 }
示例#9
0
        /// <summary>
        /// Updates the state of the game. This method checks the GameScreen.IsActive
        /// property, so the game will stop updating when the pause menu is active,
        /// or if you tab away to a different application.
        /// </summary>
        public override void Update(GameTime gameTime, bool otherScreenHasFocus,
                                    bool coveredByOtherScreen)
        {
            base.Update(gameTime, otherScreenHasFocus, false);

            // Gradually fade in or out depending on whether we are covered by the pause screen.
            if (coveredByOtherScreen)
            {
                pauseAlpha = Math.Min(pauseAlpha + 1f / 32, 1);
            }
            else
            {
                pauseAlpha = Math.Max(pauseAlpha - 1f / 32, 0);
            }

            if (IsActive)
            {
                mouse = Mouse.GetState();
                // bloom
                bloom.Visible  = true;
                bloom.Settings = BloomSettings.PresetSettings[bloomSettingsIndex];

                // update entites
                playerBody.update(gameTime);

                Drones[0].setTarget(playerBody.playerBody.Position * 64);

                foreach (SeekerDrone drone in Drones)
                {
                    drone.update(gameTime);
                }
                foreach (Pickupable pickupable in pickuables)
                {
                    if (pickupable.getSetIsTouchingPlayer && playerBody.getSetWantsToPickUp && !playerBody.getSetHasPickedUp)
                    {
                        Joints.Add(JointFactory.CreateDistanceJoint(world, playerBody.playerBody, pickupable.getBody, new Vector2(0, 0), new Vector2(0, 0)));
                        playerBody.getSetWantsToPickUp      = false;
                        pickupable.getSetIsAttachedToPlayer = true;
                        playerBody.getSetHasPickedUp        = true;
                    }

                    if (Joints.Count > 0 && playerBody.getSetWantsTodrop && playerBody.getSetHasPickedUp && pickupable.getSetIsAttachedToPlayer)
                    {
                        // for some reason the on seperation dosn't work when removing a joint. So we force the pickupable to not touching the player
                        world.RemoveJoint(Joints[0]);
                        Joints.RemoveAt(0);
                        playerBody.getSetHasPickedUp        = false;
                        pickupable.getSetIsAttachedToPlayer = false;
                        pickupable.getSetIsTouchingPlayer   = false;
                    }
                }

                if (playerBody.isAlive == false)
                {
                    bloom.Visible = false;

                    world.Clear();


                    this.ExitScreen();

                    LoadingScreen.Load(ScreenManager, false, PlayerIndex.One, new DeadScreen(2));
                }

                //game script

                if (hasMovedPickUp == false)
                {
                    if (Areas[0].getIsPickUpTouching && playerBody.getSetHasPickedUp == false)
                    {
                        hasMovedPickUp = true;
                        Collectables.Add(new Collectable(content.Load <Texture2D>("redStar"), new Vector2(0, 300), world));
                        Areas.RemoveAt(0);
                        pickuables.RemoveAt(0);
                        WallBoxes[0].removeWalls();
                        WallBoxes.RemoveAt(0);
                    }
                }

                for (int k = 0; k < Collectables.Count; ++k)
                {
                    if (Collectables[k].Collected)
                    {
                        Collectables.RemoveAt(k);
                    }
                }

                if (hasMovedPickUp)
                {
                    if (Collectables.Count == 0)
                    {
                        bloom.Visible = false;
                        ExitScreen();
                    }
                }


                // limts on the cam.

                cam2D.MaxRotation = 0.001f;
                cam2D.MinRotation = -0.001f;

                cam2D.MaxPosition = new Vector2(((playerBody.playerBody.Position.X) * 64 + 1), ((playerBody.playerBody.Position.Y) * 64) + 1);
                cam2D.MinPosition = new Vector2(((playerBody.playerBody.Position.X) * 64) + 2, ((playerBody.playerBody.Position.Y) * 64) + 1);
                cam2D.Update(gameTime);



                world.Step((float)gameTime.ElapsedGameTime.TotalMilliseconds * 0.001f);
            }
        }
示例#10
0
        /// <summary>
        /// Updates the state of the game. This method checks the GameScreen.IsActive
        /// property, so the game will stop updating when the pause menu is active,
        /// or if you tab away to a different application.
        /// </summary>
        public override void Update(GameTime gameTime, bool otherScreenHasFocus,
                                    bool coveredByOtherScreen)
        {
            base.Update(gameTime, otherScreenHasFocus, false);

            // Gradually fade in or out depending on whether we are covered by the pause screen.
            if (coveredByOtherScreen)
            {
                pauseAlpha = Math.Min(pauseAlpha + 1f / 32, 1);
            }
            else
            {
                pauseAlpha = Math.Max(pauseAlpha - 1f / 32, 0);
            }

            if (IsActive)
            {
                mouse = Mouse.GetState();
                // bloom
                bloom.Visible  = true;
                bloom.Settings = BloomSettings.PresetSettings[bloomSettingsIndex];

                // update entites

                playerBody.update(gameTime);

                foreach (Pickupable pickupable in pickuables)
                {
                    if (pickupable.getSetIsTouchingPlayer && playerBody.getSetWantsToPickUp && !playerBody.getSetHasPickedUp)
                    {
                        // joints.Add ( JointFactory.CreateRevoluteJoint(world,playerBody.playerBody,
                        //   pickupable.getBody, new Vector2(0,0)));

                        Joints.Add(JointFactory.CreateDistanceJoint(world, playerBody.playerBody, pickupable.getBody, new Vector2(0, 0), new Vector2(0, 0)));


                        playerBody.getSetWantsToPickUp      = false;
                        pickupable.getSetIsAttachedToPlayer = true;



                        playerBody.getSetHasPickedUp = true;
                    }

                    if (Joints.Count > 0 && playerBody.getSetWantsTodrop && playerBody.getSetHasPickedUp && pickupable.getSetIsAttachedToPlayer)
                    {
                        // for some reason the on seperation dosn't work when removing a joint. So we force the pickupable to not touching the player
                        world.RemoveJoint(Joints[0]);
                        Joints.RemoveAt(0);
                        playerBody.getSetHasPickedUp        = false;
                        pickupable.getSetIsAttachedToPlayer = false;
                        pickupable.getSetIsTouchingPlayer   = false;
                    }
                }


                if (playerBody.isAlive == false)
                {
                    bloom.Visible = false;

                    world.Clear();


                    this.ExitScreen();

                    LoadingScreen.Load(ScreenManager, false, PlayerIndex.One, new DeadScreen(0));
                }



                //game script


                if (GreenTestStarted == false)
                {
                    Timer += gameTime.ElapsedGameTime.Milliseconds;
                }
                if (Timer > timerForGreenTest && GreenTestStarted == false && MediaPlayer.State == MediaState.Stopped)
                {
                    Timer            = 0;
                    GreenTestStarted = true;


                    UI.setSub = "Welcome my name is Vivi. Move to and touch the red square to continue.";
                    Squares.Add(new Square(content.Load <Texture2D>("Squares/redSquare"), new Vector2(800, 100), true, world));
                    //      MediaPlayer.Play(Welcome);
                    WelcomeSFXInstance.Play();
                }

                if (GreenTestStarted == true && GreenTestComplete == false)
                {
                    if (Squares[0].isTouching)
                    {
                        GreenTestComplete = true;
                        BlueTestStarted   = true;
                        UI.setSub         = "Wonderful, now fire your laser at the blue square.";
                        //  MediaPlayer.Play(Blue);
                        if (WelcomeSFXInstance.State == SoundState.Stopped)
                        {
                            WelcomeSFXInstance.Stop();
                            BlueSFX.Play();
                        }

                        Squares.Add(new Square(content.Load <Texture2D>("Squares/blueSquare"), new Vector2(100, 500), true, world));
                        playerBody.getSetLaserStatus = true;
                        world.RemoveBody(Squares[0].squareBody);
                        Squares.RemoveAt(0);
                    }
                }


                if (BlueTestStarted && BlueTestComplete == false)
                {
                    if (Squares[0].isTouchingLaser)
                    {
                        BlueTestComplete = true;
                        world.RemoveBody(Squares[0].squareBody);
                        Squares.RemoveAt(0);

                        UI.setSub = "Excellent, now pick up and move the pink square into the pink area.";
                        //    MediaPlayer.Play(Pink);

                        PinkSFX.Play();
                        pickuables.Add(new Pickupable(content.Load <Texture2D>("Squares/pinkSquare"), new Vector2(10, 50), world));
                        Areas.Add(new Area(content.Load <Texture2D>("pinkArea"), new Vector2(800, 500), 1.57f, world));

                        Timer = 0;
                    }
                }

                if (BlueTestComplete && GreenTestComplete)
                {
                    PinkTestStarted = true;

                    if (PinkTestCompleted == false)
                    {
                        if (Areas[0].getIsPickUpTouching && playerBody.getSetHasPickedUp == false)
                        {
                            PinkTestCompleted = true;
                            pickuables.RemoveAt(0);
                            Areas.RemoveAt(0);
                        }
                    }
                }

                // need to add bool for sound fx here.
                if (PinkTestCompleted && UI.Acitve == false && countDownStated == false)
                {
                    if (questionsSpoken == false)
                    {
                        UI.setSub = "You are confirmed operational. Remember only blue, red and pink neon is safe to touch. Questions?";
                        QuestionsSFX.Play();
                        questionsSpoken = true;
                    }
                    Timer += gameTime.ElapsedGameTime.Milliseconds;
                    if (Timer > 2500)
                    {
                        UI.Acitve = true;
                        playerBody.getSetChoicePoint = true;
                        countDownStated = true;
                        Timer           = 0;
                    }
                }
                if (BlueTestComplete && GreenTestComplete && PinkTestCompleted && pressedOk == false)
                {
                    if (playerBody.choiceValue == 2 && questionOneAsked == false)
                    {
                        UI.setSub   = "You are designated as an Operational Perpetuating Organism. Or Opo.";
                        UI.setTextA = "Ok, let's go!";
                        OpoSFXInstance.Play();
                        questionOneAsked = true;
                    }
                    else if (playerBody.choiceValue == 3 && questionTwoAsked == false)
                    {
                        UI.setSub   = "You are in the System.";
                        UI.setTextA = "Ok, let's go!";
                        SystemSFXInstance.Play();
                        questionTwoAsked = true;
                    }
                    else if (playerBody.choiceValue == 1)
                    {
                        pressedOk = true;
                        UI.Acitve = false;
                        UI.setSub = "Loading progress tracker.";
                        Timer     = 0;
                        iniProgressSFXInstance.Play();
                    }
                }

                if (pressedOk && progressLoaded == false)
                {
                    Timer += gameTime.ElapsedGameTime.Milliseconds;
                    if (iniProgressSFXInstance.State != SoundState.Playing && sayThree == false)
                    {
                        UI.setSub = "Three...";
                        ThreeSFXInstance.Play();
                        sayThree = true;
                    }
                    if (ThreeSFXInstance.State != SoundState.Playing && sayTwo == false)
                    {
                        UI.setSub = "Two...";
                        TwoSFXInstance.Play();
                        sayTwo = true;
                    }

                    if (TwoSFXInstance.State != SoundState.Playing && sayOne == false)
                    {
                        UI.setSub = "One...";
                        OneSFXInstance.Play();
                        sayOne = true;
                    }
                    if (OneSFXInstance.State != SoundState.Playing)
                    {
                        UI.setSub = "Progress module loaded.";
                        progressLoadedSFXInstance.Play();
                        playerBody.getSetDrawScore = true;
                        progressLoaded             = true;
                        Timer = 0;
                    }
                }

                if (progressLoaded)
                {
                    Timer += gameTime.ElapsedGameTime.Milliseconds;
                    if (Timer > 2000 && Timer < 4000 && EntryPointSFXInstance.State != SoundState.Playing)
                    {
                        UI.setSub = "Loading courpution entry point.";
                        EntryPointSFXInstance.Play();
                    }
                    if (Timer > 4000 && Timer < 6000 && ThreeSFXInstance.State != SoundState.Playing)
                    {
                        UI.setSub = "Three...";
                        ThreeSFXInstance.Play();
                    }
                    if (Timer > 6000 && Timer < 8000 && TwoSFXInstance.State != SoundState.Playing)
                    {
                        UI.setSub = "Two...";
                        TwoSFXInstance.Play();
                    }
                    if (Timer > 8000 && Timer < 10000 && OneSFXInstance.State != SoundState.Playing)
                    {
                        UI.setSub = "One...";
                        OneSFXInstance.Play();
                    }
                    if (Timer > 10000)
                    {
                        bloom.Visible = false;
                        ExitScreen();
                        LoadingScreen.Load(ScreenManager, true, PlayerIndex.One, new ChapterOne());
                    }
                }


                // limts on the cam.

                cam2D.MaxRotation = 0.001f;
                cam2D.MinRotation = -0.001f;

                cam2D.MaxPosition = new Vector2(((playerBody.playerBody.Position.X) * 64 + 1), ((playerBody.playerBody.Position.Y) * 64) + 1);
                cam2D.MinPosition = new Vector2(((playerBody.playerBody.Position.X) * 64) + 2, ((playerBody.playerBody.Position.Y) * 64) + 1);
                cam2D.Update(gameTime);



                world.Step((float)gameTime.ElapsedGameTime.TotalMilliseconds * 0.001f);
            }
        }
示例#11
0
        /// <summary>
        /// Updates the state of the game. This method checks the GameScreen.IsActive
        /// property, so the game will stop updating when the pause menu is active,
        /// or if you tab away to a different application.
        /// </summary>
        public override void Update(GameTime gameTime, bool otherScreenHasFocus,
                                    bool coveredByOtherScreen)
        {
            base.Update(gameTime, otherScreenHasFocus, false);

            // Gradually fade in or out depending on whether we are covered by the pause screen.
            if (coveredByOtherScreen)
            {
                pauseAlpha = Math.Min(pauseAlpha + 1f / 32, 1);
            }
            else
            {
                pauseAlpha = Math.Max(pauseAlpha - 1f / 32, 0);
            }

            if (IsActive)
            {
                mouse = Mouse.GetState();
                // bloom
                bloom.Visible  = true;
                bloom.Settings = BloomSettings.PresetSettings[bloomSettingsIndex];

                foreach (Square square in Squares)
                {
                    square.Update();
                    if (square.isTouching)
                    {
                        playerBody.isAlive = false;
                    }
                }



                // update entites
                playerBody.update(gameTime);

                spinningWheel.shapeBody.IsStatic = false;
                if (spinningWheel.shapeBody.AngularVelocity < 0.5)
                {
                    spinningWheel.shapeBody.ApplyTorque(0.1f);
                }
                if (playerBody.isAlive == false)
                {
                    bloom.Visible = false;

                    world.Clear();


                    this.ExitScreen();

                    LoadingScreen.Load(ScreenManager, false, PlayerIndex.One, new DeadScreen(3));
                }

                //game script



                // limts on the cam.

                cam2D.MaxRotation = 0.001f;
                cam2D.MinRotation = -0.001f;

                cam2D.MaxPosition = new Vector2(((playerBody.playerBody.Position.X) * 64 + 1), ((playerBody.playerBody.Position.Y) * 64) + 1);
                cam2D.MinPosition = new Vector2(((playerBody.playerBody.Position.X) * 64) + 2, ((playerBody.playerBody.Position.Y) * 64) + 1);
                cam2D.Update(gameTime);



                world.Step((float)gameTime.ElapsedGameTime.TotalMilliseconds * 0.001f);
            }
        }