Ejemplo n.º 1
0
        public virtual void Update(SAMTime gameTime)
        {
#if DEBUG
            UPSCounter.StartCycle(gameTime);
#endif
            var state = InputStateMan.GetNewState(MapOffsetX, MapOffsetY);

#if DEBUG
            if (_updateDebugSettings)
            {
                DebugSettings.Update(state);
            }
            GCMonitor.Update(gameTime, state);
#endif

            if (FloatMath.IsZero(GameSpeed))
            {
                // render these two always
                DebugDisp.Update(gameTime, state);
                GameHUD.Update(gameTime, state);
                return;
            }
            else if (FloatMath.IsOne(GameSpeed))
            {
                InternalUpdate(gameTime, state, gameTime);
            }
            else if (GameSpeed < 1f)
            {
                var internalTime = gameTime.Stretch(GameSpeed, 1);

                InternalUpdate(internalTime, state, gameTime);
            }
            else if (GameSpeed > 1f)
            {
                int runCount = (int)GameSpeed;

                var timeVirtual = gameTime.Stretch(GameSpeed / runCount, 1f / runCount);
                var timeReal    = gameTime.Stretch(1f / runCount, 1f / runCount);

                for (int i = 0; i < runCount; i++)
                {
                    InternalUpdate(timeVirtual, state, timeReal);
                }
            }
            else
            {
                // okay - dafuq
                throw new ArgumentException(nameof(GameSpeed) + " = " + GameSpeed, nameof(GameSpeed));
            }

#if DEBUG
            UPSCounter.EndCycle();
#endif
        }
Ejemplo n.º 2
0
 public void TestHUDMethods()
 {
     GameHUD HUD = new GameHUD();
     try{
         HUD.Start();
         HUD.OnGUI();
         HUD.Update();
     }catch(Exception e) {
         //Something went wrong
         Assert.True(false,"error "+e.ToString());
     }
 }
Ejemplo n.º 3
0
        public void TestHUDMethods()
        {
            GameHUD HUD = new GameHUD();

            try{
                HUD.Start();
                HUD.OnGUI();
                HUD.Update();
            }catch (Exception e) {
                //Something went wrong
                Assert.True(false, "error " + e.ToString());
            }
        }
Ejemplo n.º 4
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)
        {
            // update inputs
            foreach (var controller in controllers)
            {
                controller.UpdateInput();
            }

            if (!IsGameOver)
            {
                LevelScroller.layers[2].Enabled = true;
                LevelScroller.layers[3].Enabled = true;
                LevelScroller.layers[4].Enabled = false;
                LevelScroller.layers[5].Enabled = false;

                if (Paused)
                {
                    MediaPlayer.Pause();
                }
                else
                {
                    MediaPlayer.Resume();
                }

                GameHUD.Update(gameTime);

                // add to-spawn items to the gameobjects list
                GameObjects.AddRange(Level.ToSpawn);
                Level.ToSpawn.Clear();

                if (Mario.IsDead)
                {
                    if (Mario.TimeDied.TotalMilliseconds == 0)
                    {
                        Mario.TimeDied = gameTime.TotalGameTime;
                    }
                    else if (gameTime.TotalGameTime > Mario.TimeDied + new TimeSpan(0, 0, 0, 3))
                    {
                        if (HUDMap["Lives"] <= 0)
                        {
                            GameOver();
                        }
                        else
                        {
                            HUDMap["Lives"]--;
                            LoadGameLevel("mini_game");
                            MediaPlayer.Play(backGroundMusic);
                            Mario.Respawn();
                        }
                    }
                }

                if (Mario.ReachedGate)
                {
                    Mario.ReachedGate = false;
                    LoadGameLevel("hospital");
                    Mario.Respawn();
                }

                if (Mario.OnFlagpole)
                {
                    if (Mario.TimeWon.TotalMilliseconds == 0)
                    {
                        Mario.TimeWon = gameTime.TotalGameTime;
                    }
                    else if (gameTime.TotalGameTime > Mario.TimeWon + new TimeSpan(0, 0, 0, 5))
                    {
                        GameWon();
                    }
                }

                // update all game objects (their sprites are updated inside)
                foreach (var obj in GameObjects)
                {
                    if (!Paused)
                    {
                        obj.Update(gameTime);
                    }
                }

                UpdateCollisions();    // update collisions

                CleanDeletedObjects(); // remove any deleted items from anywhere they might remain
            }

            base.Update(gameTime);

            LevelScroller.Update();
        }
Ejemplo n.º 5
0
 void Update()
 {
     character.Update();
     hud.Update();
 }
Ejemplo n.º 6
0
        public override void Update(GameTime gameTime)
        {
            base.Update(gameTime);

            if (gameState == MazeGameState.Playing)
            {
                if (YnG.Keys.JustPressed(Keys.Escape) || YnG.Gamepad.JustPressed(PlayerIndex.One, Buttons.Back))
                {
                    gameState = MazeGameState.Terminated;
                    OnExitRequest(EventArgs.Empty);
                }

                soundTimer.Update(gameTime);

                elapsedPartyTime += gameTime.ElapsedGameTime.Milliseconds;

                timeTimer.Update(gameTime.ElapsedGameTime.Milliseconds);

                _gameHUD.Update(gameTime);
                _gameHUD.Time = timeTimer.ToString();

                control.Update(gameTime);
#if DEBUG
                if (YnG.Keys.JustPressed(Keys.F8))
                {
                    OnLevelFinished(new LevelFinishEventArgs(score, (_mazeLevel.Id + 1), false));
                }
#endif
                string collider = control.ValidatePosition(_mazeLevel.Walls);

                if (collider == "END")
                {
                    gameState = MazeGameState.Ending;
                    UpdateScore(50);
                }
                else if (collider == "WALL")
                {
                    if (YnG.AudioManager.SoundEnabled)
                    {
                        YnG.AudioManager.PlaySound("Audio/bat", 1.0f, 1.0f, 0.0f);
                        YnG.AudioManager.SoundEnabled = false;
                        soundTimer.Start();
                    }
                }

                groundPlayerBoundingSphere.Center = new Vector3(Camera.Position.X, 1, Camera.Position.Z);

                foreach (YnMeshModel model in _mazeLevel.Items)
                {
                    if (model.Active)
                    {
                        if (groundPlayerBoundingSphere.Intersects(model.BoundingSphere))
                        {
                            YnG.AudioManager.PlaySound("Audio/kristal", 1.0f, 1.0f, 0.0f);
                            UpdateScore((model as AnimatedItemMesh).Points);
                            _gameHUD.MiniMap.UpdateItemStatus(Camera.X, Camera.Z);
                            _gameHUD.UpdateNbCrystals();
                            model.Active = false;
                        }
                    }
                }

                if (_gameHUD.MiniMap.Enabled)
                {
                    _gameHUD.MiniMap.UpdatePlayerPosition(Camera.X, Camera.Z);
                }

                if (virtualPad.Enabled)
                {
                    virtualPad.Update(gameTime);
                }
            }
            else if (gameState == MazeGameState.Ending)
            {
                gameState = MazeGameState.Terminated;

                bool finishedGame = false;

                int nextLevel = (_mazeLevel.Id + 1);

                if (nextLevel > GameConfiguration.LevelCount)
                {
                    nextLevel    = 1;
                    finishedGame = true;
                }

                score.ElapsedTime = elapsedPartyTime;

                OnLevelFinished(new LevelFinishEventArgs(score, nextLevel, finishedGame));
            }
        }