private void ProcessMessage(TimeSpan totalGameTime)
        {
            bool processingMessage = _messageRenderer != null;
            bool messageAvailable = !_worldInstance.WorldTime.Paused && _worldInstance.MessageMananger.Count > 0;

            if (processingMessage || !messageAvailable)
            {
                return;
            }

            _messageRendererState = new MessageRendererState
                {
                    Message = _worldInstance.MessageMananger.DequeueMessage()
                };
            _messageRenderer = new MessageRenderer(_messageRendererState);
            _messageFadeInAndScaleUpdater = new MessageFadeInAndScaleUpdater(_messageRendererState, totalGameTime, MessageOpened);

            _rendererCollection.Add(_messageRenderer);
            _updaterCollection.Add(_messageFadeInAndScaleUpdater);

            _inputManager.ClaimFocus(Focus.Message);
        }
        private void MessageOpened(IXnaGameTime gameTime)
        {
            _updaterCollection.Remove(_messageFadeInAndScaleUpdater);
            _messageFadeInAndScaleUpdater = null;

            _messageInputHandler = new MessageInputHandler(_worldInstance, _messageRendererState, gameTime.TotalGameTime, MessageClosing);
            _updaterCollection.Add(_messageInputHandler);

            _worldInstance.MessageMananger.MessageOpened(_messageRendererState.Message);
        }