示例#1
0
 /// <summary>
 /// Loads all levels into the level manager.
 /// </summary>
 private void LoadLevels()
 {
     _levelManager  = new LevelManager();
     _meteorFactory = new MeteorFactory(_entityManager, _game);
     _levelFactory  = new MeteorLevelFactory(_entityManager, _meteorFactory, _game);
     _levelManager.EnqueueLevel(_levelFactory.CreateLevel(LevelDifficulty.EASY));
     _levelManager.EnqueueLevel(_levelFactory.CreateLevel(LevelDifficulty.NORMAL));
     _levelManager.EnqueueLevel(_levelFactory.CreateLevel(LevelDifficulty.HARD));
 }
示例#2
0
        public void PlayGame()
        {
            CurrentLevelNumber = 1;
            _display.Welcome();
            var mazeData = _gameSettingLoader.GetMazeData();

            while (IsPlaying)
            {
                var maze  = _mazeFactory.CreateMaze(mazeData.LevelSettings[CurrentLevelNumber - 1]);
                var level = _levelFactory.CreateLevel(maze);
                level.PlayLevel();
                if (level.HasWon)
                {
                    _display.CongratulationsNewLevel(CurrentLevelNumber);
                    System.Threading.Thread.Sleep(TimeSpan.FromSeconds(1));
                    CurrentLevelNumber++;
                }
                else
                {
                    HandleLostLevel();
                }

                if (CurrentLevelNumber >= mazeData.MaxLevels)
                {
                    IsPlaying = false;
                }
            }

            Display.WonGame();
        }
        /// <inheritdoc/>
        public async Task<PlayerBoardViewModel> StartNewGameAsync(StartGameRequest request)
        {
            DifficultyLevel level = factory.CreateLevel(request.LevelName);

            var player = await playerRepository.FirstOrDefaultAsync(request.PlayerId);

            if(player == null)
            {
                throw new PlayerNotFoundException();
            }

            await boardRepository.DeleteAsync(board => board.PlayerId == player.Id);

            var templateBoardDb = await service.GetRandomTemplateBoardByLevelAsync(level);

            var templateBoard = mapper.Map<TemplateBoard>(templateBoardDb);

            var playerBoard = new PlayerBoard(templateBoard)
            {
                PlayerId = player.Id
            };

            var playerBoardDb = mapper.Map<PlayerBoardDbModel>(playerBoard);

            playerBoard.BoardId = await boardRepository.InsertAndGetIdAsync(playerBoardDb);

            return mapper.Map<PlayerBoardViewModel>(playerBoard);
        }
示例#4
0
 public LevelManager(IEventAggregator eventAggregator, ILevelFactory levelFactory, ICollisionManager collisionManager, IParticleManager particleManager, IDrawer drawer)
 {
     _eventAggregator  = eventAggregator;
     _collisionManager = collisionManager;
     _particleManager  = particleManager;
     _level            = levelFactory.CreateLevel();
     _drawer           = drawer;
 }
示例#5
0
        public void Run()
        {
            player.InitializePlayer();
            writer.ClearInterface();
            writer.PrintOnNewLine(MenuMessages.levelsMenu);
            string chosenLevel = reader.ReadNewLine();

            level = levelFactory.CreateLevel(chosenLevel, unityContainer, player);
            level.RunLevel();
            player.SaveScore();
        }
示例#6
0
        public MainPage()
        {
            InitializeComponent();
            var panels = SetupGamePanels();

            _levelFactory = new TimeLevelFactory(panels);
            _timeFactory  = new TimeFactory();
            _level        = _levelFactory.CreateLevel(1);

            SetTimes(_level);
        }
示例#7
0
        public void InvokeState()
        {
            var level     = levelFactory.CreateLevel();
            var inputLoop = new InputLoop();
            var playView  = new ConsolePlayView();

            var moveInteractor     = new MoveInteractor(level, playView);
            var exitGameInteractor = new ExitGameInteractor(inputLoop);

            var moveProcessor     = new MoveProcessor(moveInteractor);
            var exitGameProcessor = new ExitGameProcessor(exitGameInteractor);

            var keyboardController = new KeyboardController();

            keyboardController.AddInputProcessor(moveProcessor);
            keyboardController.AddInputProcessor(exitGameProcessor);

            inputLoop.AddUpdatable(keyboardController);

            playView.Draw(level);
            inputLoop.Start();
        }
示例#8
0
 private void InitLevel()
 {
     levelFactory.CreateLevel();
 }