예제 #1
0
 public PlayerScreen(IScreenHandler _screenHandler)
 {
     log.Debug("Constructing a PlayerScreen.");
     m_ScreenHandler  = _screenHandler;
     m_UniqueId       = System.Guid.NewGuid();
     m_PlayerScreenUI = new PlayerScreenUserInterface(m_FrameServer, this);
 }
예제 #2
0
파일: Program.cs 프로젝트: kreghek/Lus
        static async Task Main()
        {
            var gameState = new GameState
            {
                CurrentScreen = GameScreen.GlobeGeneration,
            };

            var battleScreenHandler          = new BattleScreenHandler();
            var globeScreenHandler           = new GlobeScreenHandler();
            var globeGenerationScreenHandler = new GlobeGenerationScreenHandler();

            IScreenHandler screenHandler = globeGenerationScreenHandler;

            do
            {
                var nextScreen = await screenHandler.StartProcessingAsync(gameState).ConfigureAwait(false);

                screenHandler = nextScreen switch
                {
                    GameScreen.Globe => globeScreenHandler,
                    GameScreen.GlobeGeneration => globeGenerationScreenHandler,
                    GameScreen.Battle => battleScreenHandler,
                    _ => throw new InvalidOperationException($"Unsupported screen {nextScreen}.")
                };
            } while (true);
        }
    }
        public CaptureScreen(IScreenHandler _screenHandler)
        {
            log.Debug("Constructing a CaptureScreen.");
            m_ScreenHandler = _screenHandler;
            view            = new CaptureScreenUserInterface(frameServer, this);

            BindCommands();
        }
예제 #4
0
 protected ScreenBase(ISessionFactory sessionFactory, IScreenHandler screenHandler, IRequestHandler requestHandler, IResponseHandler responseHandler)
 {
     SessionFactory  = sessionFactory;
     ScreenHandler   = screenHandler;
     RequestHandler  = requestHandler;
     ResponseHandler = responseHandler;
     Session         = SessionFactory.GetCurrentSession();
 }
예제 #5
0
        public void RemoveHandler <TScreen>(IScreenHandler <TScreen> handler) where TScreen : UIPanelController
        {
            screenHandlers.Remove(handler);

            if (panelControllersByPanelType.TryGetValue(typeof(TScreen), out UIPanelController basePanelController))
            {
                handler.OnScreenHide((TScreen)basePanelController);
            }
        }
예제 #6
0
        public void AddHandler <TScreen>(IScreenHandler <TScreen> handler) where TScreen : UIPanelController
        {
            screenHandlers.Add(handler);

            if (panelControllersByPanelType.TryGetValue(typeof(TScreen), out UIPanelController basePanelController))
            {
                handler.OnScreenShown((TScreen)basePanelController);
            }
        }
예제 #7
0
        public BuildingScreen(ISessionFactory sessionFactory, IScreenHandler screenHandler, IRequestHandler requestHandler, IResponseHandler responseHandler, Building building)
            : base(sessionFactory, screenHandler, requestHandler, responseHandler)
        {
            if (building == null)
            {
                throw new ArgumentNullException(nameof(building));
            }

            _building = building;
        }
예제 #8
0
        private static async Task Main()
        {
            var serviceContainer = new ServiceCollection();
            var startUp          = new StartUp();

            startUp.RegisterServices(serviceContainer);

            serviceContainer.AddSingleton <IGlobeInitializer, GlobeInitializer>();
            serviceContainer.AddSingleton <IGlobeExpander>(provider =>
                                                           (BiomeInitializer)provider.GetRequiredService <IBiomeInitializer>());
            serviceContainer.AddSingleton <IGlobeTransitionHandler, GlobeTransitionHandler>();
            serviceContainer.AddSingleton <IPersonInitializer, HumanPersonInitializer>();
            serviceContainer.AddSingleton <IPlayer, HumanPlayer>();
            serviceContainer.AddScoped <MoveCommand>();
            serviceContainer.AddScoped <IdleCommand>();
            serviceContainer.AddScoped <AttackCommand>();
            serviceContainer.AddSingleton <IMonsterIdentifierGenerator, MonsterIdentifierGenerator>();
            serviceContainer.AddScoped <SectorTransitionMoveCommand>();
            serviceContainer.AddScoped <ICommandPool, QueueCommandPool>();
            serviceContainer.AddScoped <IAnimationBlockerService, AnimationBlockerService>();

            using var serviceProvider = serviceContainer.BuildServiceProvider();

            // Create globe

            using var scope = serviceProvider.CreateScope();

            var gameState = new GameState
            {
                CurrentScreen   = GameScreen.GlobeSelection,
                ServiceScope    = scope,
                ServiceProvider = serviceProvider
            };

            var mainScreenHandler           = new MainScreenHandler();
            var globeSelectionScreenHandler = new GlobeSelectionScreenHandler();
            var scoresScreenHandler         = new ScoresScreenHandler();

            IScreenHandler screenHandler = globeSelectionScreenHandler;

            do
            {
                var nextScreen = await screenHandler.StartProcessingAsync(gameState).ConfigureAwait(false);

                screenHandler = nextScreen switch
                {
                    GameScreen.GlobeSelection => globeSelectionScreenHandler,
                    GameScreen.Main => mainScreenHandler,
                    GameScreen.Scores => scoresScreenHandler,
                    _ => throw new InvalidOperationException($"Unsupported screen {nextScreen}.")
                };
            } while (true);
        }
    }
예제 #9
0
 public ScreenHandlerProvider(
     IScreenNavigation screenNavigation,
     IScreenHandler mainMenuScreen,
     IScreenHandler characterCreationScreen,
     IScreenHandler dialogModal)
 {
     _screenNavigation        = screenNavigation;
     _mainMenuScreen          = mainMenuScreen;
     _characterCreationScreen = characterCreationScreen;
     _dialogModal             = dialogModal;
 }
예제 #10
0
 public ShelvesScreen(ISessionFactory sessionFactory, IScreenHandler screenHandler, IRequestHandler requestHandler, IResponseHandler responseHandler) : base(sessionFactory, screenHandler, requestHandler, responseHandler)
 {
 }
예제 #11
0
 public CaptureScreen(IScreenHandler _screenHandler)
 {
     log.Debug("Constructing a CaptureScreen.");
     m_ScreenHandler   = _screenHandler;
     m_CaptureScreenUI = new CaptureScreenUserInterface(m_FrameServer, this);
 }
예제 #12
0
 public BuildingsScreen(ISessionFactory sessionFactory, IScreenHandler screenHandler, IRequestHandler requestHandler, IResponseHandler responseHandler) : base(sessionFactory, screenHandler, requestHandler, responseHandler)
 {
     _buildings = Session.QueryOver <Building>().List();
 }
예제 #13
0
 internal void RemoveHandler <TScreen>(IScreenHandler <TScreen> handler) where TScreen : UIPanelController
 {
     screenController.RemoveHandler(handler);
 }
예제 #14
0
 protected CrudScreen(ISessionFactory sessionFactory, IScreenHandler screenHandler, IRequestHandler requestHandler, IResponseHandler responseHandler) : base(sessionFactory, screenHandler, requestHandler, responseHandler)
 {
 }