예제 #1
0
        protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.Black);

            switch (GameStateManager.currentState.ToLower())
            {
            case "overworldstate":
                spriteBatch.Begin(SpriteSortMode.FrontToBack, BlendState.AlphaBlend, null, null, null, null, camera.GetTransformation());
                break;

            case "shooterstate":
            case "introsecondstate":
            case "planetstate":
            case "stationstate":
                spriteBatch.Begin(SpriteSortMode.FrontToBack, BlendState.AlphaBlend);
                break;

            default:
                spriteBatch.Begin();
                break;
            }

            stateManager.Draw(spriteBatch);
            missionManager.Draw(spriteBatch);
            tutorialManager.Draw(spriteBatch);

            if (!PopupHandler.TextBufferEmpty &&
                !ZoomMap.IsMapOn)
            {
                popupHandler.Draw(spriteBatch);
            }
            else if (ZoomMap.IsMapOn)
            {
                ZoomMap.DrawOverlay(spriteBatch, stateManager.overworldState.GetZoomObjects);
            }

            helper.Draw(spriteBatch);
            beaconMenu.Draw(spriteBatch);

            if (showFPS && !ZoomMap.IsMapOn && !stateManager.overworldState.IsBurnOutEndingActivated)
            {
                if (GameStateManager.currentState == "OverworldState")
                {
                    spriteBatch.DrawString(fontManager.GetFont(14), "Fps: " + fps.ToString(),
                                           new Vector2((camera.cameraPos.X + ScreenCenter.X) - fontManager.GetFont(14).MeasureString("Fps: " + fps.ToString()).X,
                                                       camera.cameraPos.Y - ScreenCenter.Y) + fontManager.FontOffset,
                                           fontManager.FontColor, 0f, Vector2.Zero, 1f, SpriteEffects.None, 1f);
                }
                else
                {
                    spriteBatch.DrawString(fontManager.GetFont(14), "Fps: " + fps.ToString(),
                                           new Vector2(Window.ClientBounds.Width - fontManager.GetFont(14).MeasureString("Fps: " + fps.ToString()).X,
                                                       0) + fontManager.FontOffset,
                                           fontManager.FontColor, 0f, Vector2.Zero, 1f, SpriteEffects.None, 1f);
                }
            }

            spriteBatch.End();

            base.Draw(gameTime);
        }
예제 #2
0
        protected override void Update(GameTime gameTime)
        {
            Window.Title = "The Sun Will Go Out";
            //Window.Title = "Pos x: " + player.position.X + " Pos y: " + player.position.Y;

            if (IsActive)
            {
                ControlManager.Update(gameTime);

                //Toggles fullscreen on/off
                if (ControlManager.CurrentKeyboardState.IsKeyDown(Keys.LeftAlt) && ControlManager.CheckKeyPress(Keys.F))
                {
                    graphics.ToggleFullScreen();
                    graphics.ApplyChanges();
                }

                //Checks if the player should be used
                if (GameStateManager.currentState == "OverworldState" || GameStateManager.currentState == "System1State" ||
                    GameStateManager.currentState == "System2State" || GameStateManager.currentState == "System3State")
                {
                    player.IsUsed = true;
                }
                else
                {
                    player.IsUsed = false;
                }

                if (!Paused)
                {
                    if (player.IsUsed)
                    {
                        player.Update(gameTime);
                    }

                    stateManager.Update(gameTime);
                    missionManager.Update(gameTime);
                    tutorialManager.Update(gameTime);
                    shopManager.Update(gameTime);
                }

                else if (ZoomMap.IsMapOn)
                {
                    camera.CameraUpdate(gameTime, player);
                }

                soundEffectsManager.Update(gameTime);

                if (ControlManager.CheckPress(RebindableKeys.Map) &&
                    GameStateManager.currentState == "OverworldState" &&
                    !PopupHandler.IsMenuOpen)
                {
                    ZoomMap.ToggleMap();
                    soundEffectsManager.StopSoundEffect(SoundEffects.OverworldEngine);
                }

                if (ZoomMap.IsMapOn)
                {
                    ZoomMap.Update(gameTime, stateManager.overworldState.GetZoomObjects, camera);
                }

                popupHandler.Update(gameTime);
                helper.Update(gameTime);
                beaconMenu.Update(gameTime);

                fpsTimer -= gameTime.ElapsedGameTime.Milliseconds;
                if (fpsTimer <= 0)
                {
                    fps      = (float)Math.Round((1 / gameTime.ElapsedGameTime.TotalSeconds), 0);
                    fpsTimer = 250;
                }

                if (ControlManager.CurrentKeyboardState.IsKeyDown(Keys.LeftAlt) &&
                    ControlManager.CheckKeyPress(Keys.M))
                {
                    musicManager.SwitchMusicMuted();
                }

                menuBGController.Update(gameTime);

                base.Update(gameTime);
            }
        }