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); }
public void RestoreGameFieldAndColumnFromGameData(ICurrentGameData currentGameData, out GameField gameField, out Dictionary <BrickPosition, IBrick> column) { gameField = RestoreGameFieldFromGameData(currentGameData); column = RestoreColumnFromGameDataAndMergeWithGameField(currentGameData, gameField); }
public Engine.Game Create(IGameSettings gameSettings, ICurrentGameData currentGameData) { var game = new Engine.Game(); game.Initialize(gameSettings, currentGameData); return(game); }
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); } }
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); } }
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); }
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); }