예제 #1
0
        protected override void Update(GameTime gameTime)
        {
            Time.Update(gameTime);

            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape))
            {
                Exit();
            }

            double deltaTime = gameTime.ElapsedGameTime.TotalSeconds;

            // No game inputs taken during transitions
            if (!isTransitionning)
            {
                inputs.Update(deltaTime);
                bottomMenu.Update();
                if (currentHighScore > 0)
                {
                    score.SetText(string.Format(PROGRESSION, Score.Total, currentHighScore));
                }
                else
                {
                    score.SetText(Score.Total);
                }

                if (isInLevelEditMode)
                {
                    editor.Update();
                }
            }
            else
            {
                delayToNextLevel -= deltaTime;
                if (delayToNextLevel <= 0)
                {
                    EndTransition();
                }
            }

            base.Update(gameTime);
        }
예제 #2
0
 public void SetText(string newText)
 {
     if (Font != null)
     {
         Text = newText;
         if (_textSprite == null)
         {
             _textSprite = new TextSprite(newText, Font, new Rectangle(0, 0, 1000, 1000));
         }
         _textSprite.SetBounds(new Rectangle(
                                   _textSprite.Bounds.X,
                                   _textSprite.Bounds.Y,
                                   1000,
                                   1000));
         _textSprite.SetText(newText);
         _textSprite.SetBoundsToText();
         SetBounds(_textSprite.Bounds);
     }
 }
예제 #3
0
        private TextSprite GetSprite(StringBuilder text, bool cached, GraphicsDevice device)
        {
            int frameNumber = device.CurrentSpriteFrameNumber;

            // Find the TextSprite instance that goes with this StringBuilder
            for (int i = 0; i < sprites.Count; i++)
            {
                if (ReferenceEquals(sprites[i].key, text) &&
                    sprites[i].cached == cached && sprites[i].foundOnFrame != frameNumber)
                {
                    return(UpdateStringBuilderInstance(text, frameNumber, i));
                }
            }

            // No match found, create one:
            string     renderedText = text.ToString();
            TextSprite sprite       = CreateSprite(text, renderedText, frameNumber, cached, device);

            sprite.SetText(renderedText);
            return(sprite);
        }
예제 #4
0
        void LoadLevel()
        {
            int levelId = SaveGame.GetLevelId(currentLevel);

            playingLevel = loader.Load(levelId);
            instruction.SetText(playingLevel.Instruction);
            if (isInLevelEditMode)
            {
                playingLevel.OnDone += LoadLevel;
            }
            else
            {
                playingLevel.OnDone += ProgressToNextLevel;
            }
            player.Reset();
            player.MoveTo(playingLevel.StartingPlayerPosition);
            player.CurrentLevel = playingLevel;
            editor.Target       = playingLevel;
            editor.LevelId      = levelId;
            progression.SetText(string.Format(PROGRESSION, currentLevel + 1, LevelLoader.LevelCount));
            currentHighScore = SaveGame.GetScore(currentLevel);
        }
예제 #5
0
        private TextSprite GetSprite(string text, bool cached, GraphicsDevice device)
        {
            int frameNumber = device.CurrentSpriteFrameNumber;

            // Strings are immutable, if an instance is matched: use it directly
            for (int i = 0; i < sprites.Count; i++)
            {
                if (ReferenceEquals(sprites[i].key, text) &&
                    sprites[i].cached == cached && sprites[i].foundOnFrame != frameNumber)
                {
                    TextSpriteInstance instance = sprites[i];
                    instance.foundOnFrame = frameNumber;
                    sprites[i]            = instance;
                    return(instance.value);
                }
            }

            // No match found, create one:
            TextSprite sprite = CreateSprite(text, null, frameNumber, cached, device);

            sprite.SetText(text);
            return(sprite);
        }