コード例 #1
0
        public void Update(TimeSpan t)
        {
            // Update world
            starField.Pan(0, StarField.StarSpeed, t);
            if (State == GameStateType.Playing)
            {
                Player.Update(t);
            }
            Energy.Update(t);
            Asteroids.Update(t);

            if (State == GameStateType.Playing)
            {
                Player.HandleCollisions(t);
                survival += t;
            }
            else
            {
                dying += t;
                if (dying.TotalSeconds > DyingDuration)
                {
                    game.ChangeToGameOverScreen(survival);
                }
            }

            if (Player.Energy <= 0.0f)
            {
                State = GameStateType.Dying;
            }

            // Render world
            game.Screen.Clear(Palette.ClearFill);
            starField.Render(game.Screen);
            Energy.Render(game.Screen);
            Player.RenderPlayer(game.Screen);
            Asteroids.Render(game.Screen);
            Player.RenderEnergyBar(game.Screen);
            Fonts.HeavyData.Render(String.Format("SURVIVAL: {0:D2}:{1:D2}", survival.Minutes, survival.Seconds), 10, 5, 22, Palette.Energy1, game.Screen);

            // Fade out while dying
            if (State == GameStateType.Dying)
            {
                fadeRect.Opacity = dying.TotalSeconds / (double)DyingDuration;
                game.Screen.Render(fadeRect, fadeTransform);
            }

            game.Screen.Invalidate();
        }