Example #1
0
        /// <summary>
        /// This is the main game loop
        /// </summary>
        /// <param name="gameTime">Game Time</param>
        public override void Update(GameTime gameTime)
        {
            PlayerIndex pi;

            //Frame timing
            FlxG.getTimer      = (uint)gameTime.TotalGameTime.TotalMilliseconds;
            FlxG.elapsed       = (float)gameTime.ElapsedGameTime.TotalSeconds;
            FlxG.elapsedTotal += (float)gameTime.ElapsedGameTime.TotalSeconds;
            FlxG.elapsedFrames++;
            FlxG.elapsedAsGameTime = gameTime;
            if (FlxG.elapsed > FlxG.maxElapsed)
            {
                FlxG.elapsed = FlxG.maxElapsed;
            }
            FlxG.elapsed *= FlxG.timeScale;

            //Animate flixel HUD elements
            _console.update();

            hud.update();

            if (_soundTrayTimer > 0)
            {
                _soundTrayTimer -= FlxG.elapsed;
            }
            else if (FlxG.mute || FlxG.volume < 0.05f)
            {
                // Volume is mute or 0, so leave it on-screen;
            }
            else if (_soundTrayRect.Y > -_soundTrayRect.Height)
            {
                _soundTrayRect.Y -= (int)(FlxG.elapsed * FlxG.height * 2);
                _soundCaption.y   = (_soundTrayRect.Y + 4);
                for (int i = 0; i < _soundTrayBars.Length; i++)
                {
                    _soundTrayBars[i].y = (_soundTrayRect.Y + _soundTrayRect.Height - _soundTrayBars[i].height - 2);
                }
                if (_soundTrayRect.Y < -_soundTrayRect.Height)
                {
                    _soundTrayVisible = false;
                }
            }

            //State updating
            FlxG.keys.update();
            FlxG.gamepads.update();
            FlxG.mouse.update();

            //set a helper for last control type used.
            updateLastUsedControl();


            FlxG.updateSounds();
            if (FlxG.keys.isNewKeyPress(Keys.OemPipe, null, out pi))
            {
                FlxG.mute = !FlxG.mute;
                showSoundTray();
            }
            else if (FlxG.keys.isNewKeyPress(Keys.OemOpenBrackets, null, out pi))
            {
                FlxG.mute    = false;
                FlxG.volume -= 0.1f;
                showSoundTray();
            }
            else if (FlxG.keys.isNewKeyPress(Keys.OemCloseBrackets, null, out pi))
            {
                FlxG.mute    = false;
                FlxG.volume += 0.1f;
                showSoundTray();
            }
            else if (FlxG.keys.isNewKeyPress(Keys.OemTilde, null, out pi) ||
                     FlxG.keys.isNewKeyPress(Keys.D0, null, out pi))
            {
                //FlxG.keys.isNewKeyPress(Keys.D1, null, out pi) ||
                if (FlxG.debug == true)
                {
                    //Console.WriteLine("TOGGLING THE CONSOLE");

                    _console.toggle();
                }
            }
            else if (FlxG.debug && FlxG.gamepads.isButtonDown(Buttons.DPadDown))
            {
#if ANDROID
                if (FlxG.debug == true)
                {
                    _console.toggle();
                }
#endif
            }
            else if (FlxG.autoHandlePause && (FlxG.keys.isPauseGame(FlxG.controllingPlayer) || FlxG.gamepads.isPauseGame(FlxG.controllingPlayer)))
            {
                //Previously, causing a double up of pause.
                //FlxG.pause = !FlxG.pause;

                _paused = !_paused;

                if (_paused == true)
                {
                    FlxG.pauseSounds();
                }
                else if (_paused == false)
                {
                    FlxG.playSounds();
                }
            }



            if (_paused)
            {
                if (FlxG.gamepads.isNewButtonPress(Buttons.Y))
                {
                    _paused          = !_paused;
                    FlxG.pauseAction = "Exit";
                }
                else
                {
                    FlxG.pauseAction = "";
                }

                return;
            }

            if (FlxG.state != null)
            {
                //Update the camera and game state
                FlxG.doFollow();
                FlxG.state.update();

                //Update the various special effects
                if (FlxG.flash.exists)
                {
                    FlxG.flash.update();
                }
                if (FlxG.fade.exists)
                {
                    FlxG.fade.update();
                }
                if (FlxG.transition.exists)
                {
                    FlxG.transition.update();
                }

                FlxG.quake.update();
                _quakeOffset.X = FlxG.quake.x;
                _quakeOffset.Y = FlxG.quake.y;
            }

            FlxGlobal.cheatString = "";
            FlxG.pauseAction      = "";
        }
Example #2
0
        //@desc		This is the main game loop
        public override void Update(GameTime gameTime)
        {
            PlayerIndex pi;

            //Frame timing
            FlxG.getTimer = (uint)gameTime.TotalGameTime.TotalMilliseconds;
            FlxG.elapsed  = (float)gameTime.ElapsedGameTime.TotalSeconds;
            if (FlxG.elapsed > FlxG.maxElapsed)
            {
                FlxG.elapsed = FlxG.maxElapsed;
            }
            FlxG.elapsed *= FlxG.timeScale;

            //Animate flixel HUD elements
            _console.update();

            if (_soundTrayTimer > 0)
            {
                _soundTrayTimer -= FlxG.elapsed;
            }
            else if (_soundTrayRect.Y > -_soundTrayRect.Height)
            {
                _soundTrayRect.Y -= (int)(FlxG.elapsed * FlxG.height * 2);
                _soundCaption.y   = (_soundTrayRect.Y + 4);
                for (int i = 0; i < _soundTrayBars.Length; i++)
                {
                    _soundTrayBars[i].y = (_soundTrayRect.Y + _soundTrayRect.Height - _soundTrayBars[i].height - 2);
                }
                if (_soundTrayRect.Y < -_soundTrayRect.Height)
                {
                    _soundTrayVisible = false;
                }
            }

            //State updating
            FlxG.keys.update();
            FlxG.gamepads.update();
            FlxG.mouse.update();
            FlxG.updateSounds();
            if (FlxG.keys.isNewKeyPress(Keys.D0, null, out pi))
            {
                FlxG.mute = !FlxG.mute;
                showSoundTray();
            }
            else if (FlxG.keys.isNewKeyPress(Keys.OemMinus, null, out pi))
            {
                FlxG.mute    = false;
                FlxG.volume -= 0.1f;
                showSoundTray();
            }
            else if (FlxG.keys.isNewKeyPress(Keys.OemPlus, null, out pi))
            {
                FlxG.mute    = false;
                FlxG.volume += 0.1f;
                showSoundTray();
            }
            else if (FlxG.keys.isNewKeyPress(Keys.D1, null, out pi) || FlxG.keys.isNewKeyPress(Keys.OemTilde, null, out pi))
            {
                _console.toggle();
            }
            else if (FlxG.autoHandlePause && (FlxG.keys.isPauseGame(FlxG.controllingPlayer) || FlxG.gamepads.isPauseGame(FlxG.controllingPlayer)))
            {
                FlxG.pause = !FlxG.pause;
            }

            if (_paused)
            {
                return;
            }

            if (FlxG.state != null)
            {
                //Update the camera and game state
                FlxG.doFollow();
                FlxG.state.update();

                //Update the various special effects
                if (FlxG.flash.exists)
                {
                    FlxG.flash.update();
                }
                if (FlxG.fade.exists)
                {
                    FlxG.fade.update();
                }
                FlxG.quake.update();
                _quakeOffset.X = FlxG.quake.x;
                _quakeOffset.Y = FlxG.quake.y;
            }
        }