Ejemplo n.º 1
0
        /// <summary>
        /// Allows the game to run logic such as updating the world,
        /// checking for collisions, gathering input, and playing audio.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Update(GameTime gameTime)
        {
            //get the new state of the game
            MouseState ms = Mouse.GetState();
            KeyboardState ks = Keyboard.GetState();
            float dt = (float)gameTime.ElapsedGameTime.TotalSeconds;
            removeOldMessages();

            if ((ks.IsKeyDown(Keys.Escape) && isKeyUp))
            {
                menu.isDisplayed = !menu.isDisplayed;
                isKeyUp = false;
            }
            if (ks.IsKeyUp(Keys.Escape)) {
            isKeyUp = true;
            }
            if (ks.IsKeyDown(Keys.F5))
            {
                saveGame(StorageContainer.TitleLocation + FileIOManager.SAVE_PREFIX + "quick-" + level.levelName + FileIOManager.SAVE_EXTENSION);
            }
            if (ks.IsKeyDown(Keys.F6))
            {
                try
                {
                    loadGame(StorageContainer.TitleLocation + FileIOManager.SAVE_PREFIX + "quick-" + level.levelName + FileIOManager.SAVE_EXTENSION);
                }
                catch (Exception e)
                {
                   displayMessage("No quicksave found");
                   e.ToString();
                }
            }
            if (menu.isDisplayed || level == null)
            {
                menu.Update(ms, ks, this);
            }
            else if (easter && ks.IsKeyDown(Keys.Y))
            {
                int tempCoins = level.player.numCoins;
                level = FileIOManager.loadLevel(StorageContainer.TitleLocation + FileIOManager.LEVEL_PREFIX + LEVEL_ORDER[++levelNumber],Content);
                level.LoadContent_OLD(Content);
                level.player.numCoins = tempCoins;
                easter = false;
                hasEaster = true;
                displayMessage("Resolution succeded: now using 'OLDSKOOL'");
            }
            else
            {
                Particle_Engine.ParticleEngine.update(dt);
                //update components
                if (!level.gameOver)
                {
                    int[] soundNums = level.Update(dt, ms, ks, IsActive);
                    for (int i = 0; i < soundNums.Length; i++)
                    {
                        if (soundNums[i] == 1)
                        {
                            FX[i].Play();
                        }
                    }
                    //if the lazer isnt playing, play it once
                    if (soundNums[2] == 2 && !lazer.State.Equals(SoundState.Playing))
                           lazer.Play();
                    //if it was playing but should stop before firing, then stop it
                    if (soundNums[2] < 2 && lazer.State.Equals(SoundState.Playing))
                    {
                        lazer.Dispose();
                        lazer = FX[FX.Length -1].CreateInstance();
                    }
                }
                else
                {
                    displayMessage("Press 'r' to restart the level or ESC to exit");
                    if (ks.IsKeyDown(Keys.R))
                    {
                        int tempCoins = level.player.numCoins - level.usedCoins.Count;
                        Particle_Engine.ParticleEngine.reset();
                        level = FileIOManager.loadLevel(StorageContainer.TitleLocation + FileIOManager.LEVEL_PREFIX + level.levelName,Content);
                        if (!hasEaster) level.LoadContent(Content);
                        else level.LoadContent_OLD(Content);
                        level.player.numCoins = tempCoins;
                    }
                }
                if (level.levelCompleted)
                {
                    if (linearOrder)
                    {
                        int tempCoins = level.player.numCoins;
                        if (tempCoins % EASTER_EGG_THRESHOLD == 0 && !hasEaster && levelNumber < LEVEL_ORDER.Length - 1 && tempCoins > 0)
                        {
                            easter = true;
                        }
                        else if (levelNumber < LEVEL_ORDER.Length - 1 && !easter)
                        {
                            Particle_Engine.ParticleEngine.reset();
                            level = FileIOManager.loadLevel(StorageContainer.TitleLocation + FileIOManager.LEVEL_PREFIX + LEVEL_ORDER[++levelNumber], Content);
                            if (!hasEaster) level.LoadContent(Content);
                            else
                            {
                                hasEaster = false;
                                level.LoadContent_OLD(Content);
                            }
                            level.player.numCoins = tempCoins;
                        }
                    }
                    else
                    {
                        menu.isDisplayed = true;
                    }
                }
            }

                base.Update(gameTime);
        }
Ejemplo n.º 2
0
 //do actual game loading - to be called from ShellMenu
 public void loadGame(string fileName)
 {
     MoonPrison.clearMessages();
     level = FileIOManager.loadGame(fileName, Content);
     level.LoadContent(Content);
     if (this.LEVEL_ORDER.Contains(level.levelName))
     {
         linearOrder = true;
         levelNumber = Array.IndexOf(LEVEL_ORDER, level.levelName);
     }
     System.Threading.Thread.Sleep(50);
 }