Beispiel #1
0
        private Dictionary <BrickPosition, IBrick> RestoreColumnFromGameDataAndMergeWithGameField(
            ICurrentGameData currentGameData,
            GameField gameField)
        {
            Dictionary <BrickPosition, IBrick> column;

            if (currentGameData.Column == null)
            {
                column = null;
            }
            else
            {
                column = new Dictionary <BrickPosition, IBrick>();

                foreach (var pair in currentGameData.Column)
                {
                    var brickPosition = BrickPosition.FromTuple(pair.Key);

                    if (gameField.TryGetValue(brickPosition, out var brick))
                    {
                        column.Add(brickPosition, brick);
                    }
                }
            }

            return(column);
        }
Beispiel #2
0
        public void RestoreGameFieldAndColumnFromGameData(ICurrentGameData currentGameData, out GameField gameField,
                                                          out Dictionary <BrickPosition, IBrick> column)
        {
            gameField = RestoreGameFieldFromGameData(currentGameData);

            column = RestoreColumnFromGameDataAndMergeWithGameField(currentGameData, gameField);
        }
Beispiel #3
0
        public Engine.Game Create(IGameSettings gameSettings, ICurrentGameData currentGameData)
        {
            var game = new Engine.Game();

            game.Initialize(gameSettings, currentGameData);

            return(game);
        }
Beispiel #4
0
        private void FillColumn(ICurrentGameData currentGameData)
        {
            var columnState = ContainerProvider.Resolve <IColumnDriver>().GetColumnState();

            if (columnState != null)
            {
                currentGameData.Column =
                    columnState.ToDictionary(pair => pair.Key.ToTuple(), pair => pair.Value.BrickKind);
            }
        }
Beispiel #5
0
        private void FillGameField(ICurrentGameData currentGameData)
        {
            var fieldState = ContainerProvider.Resolve <IFieldDriver>().GetFieldState();

            if (fieldState != null)
            {
                currentGameData.GameField = fieldState
                                            .ToDictionary(pair => pair.Key.ToTuple(), pair => pair.Value.BrickKind);
            }
        }
Beispiel #6
0
        private GameField RestoreGameFieldFromGameData(ICurrentGameData currentGameData)
        {
            var settings = ContainerProvider.Resolve <ISettingsProvider>().GetSettingsInstance();

            var gameField = new GameField(settings.FieldWidth, settings.FieldHeight);

            foreach (var pair in currentGameData.GameField)
            {
                gameField.Add(BrickPosition.FromTuple(pair.Key), new Brick {
                    BrickKind = pair.Value
                });
            }

            return(gameField);
        }
Beispiel #7
0
        public void FillCurrentGameData(ICurrentGameData currentGameData)
        {
            var game = ContainerProvider.Resolve <IGameProvider>().GetGameInstance();

            if (game == null)
            {
                return;
            }

            if (!game.IsRunning && !game.IsPaused)
            {
                return;
            }

            FillColumn(currentGameData);

            FillGameField(currentGameData);
        }