public MainMenuHandler(
     IScreenNavigation screenNavigation,
     IConnectionManager connectionManager)
 {
     _screenNavigation  = screenNavigation;
     _connectionManager = connectionManager;
 }
示例#2
0
    public static void RunApplication(
        IScreenNavigation screenNavigation,
        IScreenProvider screenProvider,
        CancellationToken cancellationToken)
    {
        screenNavigation.ScreenObservable.Subscribe(screen =>
        {
            // TODO: Refactor to IObservable<IChangeDetector>.
            var cd = screenProvider.GetCurrentScreen()?.ChangeDetector;
            cd?.NotifyChanged();
        });

        while (true)
        {
            if (cancellationToken.IsCancellationRequested)
            {
                return;
            }

            if (screenNavigation.Screen == GameScreen.Exit)
            {
                return;
            }

            var screen = screenProvider.GetCurrentScreen();
            if (screen == null)
            {
                continue;
            }

            var inputHandler = screen.InputHandler;
            var cd           = screen.ChangeDetector;

            var key = Console.ReadKey(true);
            switch (key.Key)
            {
            case ConsoleKey.Escape:
                inputHandler.Escape();
                break;

            case ConsoleKey.Backspace:
                inputHandler.Backspace();
                break;

            case ConsoleKey.Tab:
                inputHandler.Tab();
                break;

            default:
                inputHandler.Type(key.KeyChar);
                break;
            }

            // A hack to redraw the screen every time a key is pressed (to highlight Typers).
            cd.NotifyChanged();
        }
    }
 public MainMenuInputHandler(
     ITyperPool typerPool,
     ComponentPool componentPool,
     MainMenuState state,
     IScreenNavigation screenNavigation,
     IConnectionManager connectionManager) : base(typerPool, componentPool)
 {
     _screenNavigation  = screenNavigation;
     _connectionManager = connectionManager;
     _state             = state;
 }
 public CharacterCreationInputHandler(
     ITyperPool typerPool,
     ComponentPool componentPool,
     CharacterCreationState state,
     IScreenNavigation screenNavigation,
     ICharactersClient charactersClient) : base(typerPool, componentPool)
 {
     _screenNavigation = screenNavigation;
     _charactersClient = charactersClient;
     _state            = state;
 }
示例#5
0
 public ScreenHandlerProvider(
     IScreenNavigation screenNavigation,
     IScreenHandler mainMenuScreen,
     IScreenHandler characterCreationScreen,
     IScreenHandler dialogModal)
 {
     _screenNavigation        = screenNavigation;
     _mainMenuScreen          = mainMenuScreen;
     _characterCreationScreen = characterCreationScreen;
     _dialogModal             = dialogModal;
 }
示例#6
0
    public StatePrinter(
        object printLock,
        IScreenNavigation screenNavigation,
        IOutput output,
        IObservable <TState> stateObservable,
        IPrinter <TState> statePrinter,
        GameScreen screen) // TODO: Make sure only one StatePrinter exists per GameScreen.
    {
        _printLock        = printLock;
        _screenNavigation = screenNavigation;
        _output           = output;
        _stateObservable  = stateObservable;
        _statePrinter     = statePrinter;
        _screen           = screen;

        Subscribe();
    }
示例#7
0
 public CharacterCreationHandler(IScreenNavigation screenNavigation)
 {
     _screenNavigation = screenNavigation;
 }