public void LoadLevel(Level level) { Width = level.Width; Height = level.Height; _goalsCount = 0; _goalsFilled = 0; _level = new Element[level.Data.Length][]; for (int row = 0; row < level.Data.Length; row++) { _level[row] = new Element[level.Data[row].Length]; for (int column = 0; column < level.Data[row].Length; column++) { _level[row][column] = new Element() {Row = row, Column = column}; switch (level.Data[row][column]) { case '@': _level[row][column].Type = ElementType.Player; _player = _level[row][column]; break; case '+': _level[row][column].Type = ElementType.PlayerOnGoal; _player = _level[row][column]; break; case '#': _level[row][column].Type = ElementType.Wall; break; case '$': _level[row][column].Type = ElementType.Box; break; case '*': _level[row][column].Type = ElementType.BoxOnGoal; _goalsCount++; _goalsFilled++; break; case '.': _level[row][column].Type = ElementType.Goal; _goalsCount++; break; case ' ': _level[row][column].Type = ElementType.Floor; break; } } } _movesHistory.Clear(); }
public Sokoban(Level level) { LoadLevel(level); }