//@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.camera.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; } }
/// <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 = ""; }