コード例 #1
0
        public override void Update(GameTime gameTime)
        {
            switch (_state)
            {
            case FontState.Typing:
                _elapsedDelayTime += gameTime.ElapsedGameTime;

                if (_elapsedDelayTime >= DelayTime)
                {
                    _elapsedDelayTime = TimeSpan.Zero;
                    _currentLetterIndex++;

                    if (_currentLetterIndex >= _textToType.ToString().Length)
                    {
                        Finished(false);
                        return;
                    }

                    EventHandler <CharacterTypedEventArgs> handler = CharacterTyped;
                    CharacterTypedEventArgs arguments = new CharacterTypedEventArgs(_textToType.ToString()[_currentLetterIndex]);
                    if (handler != null)
                    {
                        handler(this, arguments);
                    }

                    if (!arguments.Cancel)
                    {
                        _text.Append(arguments.TypedCharacter);
                    }
                    else
                    {
                        // Undo increment of the index - will retry to type later
                        _currentLetterIndex--;
                    }
                }

                break;

            default:
                //pass
                break;
            }

            base.Update(gameTime);
        }
コード例 #2
0
        public override void Update(GameTime gameTime)
        {
            switch (_state)
            {
                case FontState.Typing:
                    _elapsedDelayTime += gameTime.ElapsedGameTime;

                    if (_elapsedDelayTime >= DelayTime)
                    {
                        _elapsedDelayTime = TimeSpan.Zero;
                        _currentLetterIndex++;

                        if (_currentLetterIndex >= _textToType.ToString().Length)
                        {
                            Finished(false);
                            return;
                        }

                        EventHandler<CharacterTypedEventArgs> handler = CharacterTyped;
                        CharacterTypedEventArgs arguments = new CharacterTypedEventArgs(_textToType.ToString()[_currentLetterIndex]);
                        if (handler != null)
                        {
                            handler(this, arguments);
                        }

                        if (!arguments.Cancel)
                        {
                            _text.Append(arguments.TypedCharacter);
                        }
                        else
                        {
                            // Undo increment of the index - will retry to type later
                            _currentLetterIndex--;
                        }
                    }

                    break;

                default:
                    //pass
                    break;
            }

            base.Update(gameTime);
        }