#ifndef LEVEL_H
#define LEVEL_H

#include <array>

constexpr int side = 32;

using Row = std::array<char, side>;
using Map = std::array<Row, side>;

/// Abstraction over 2D array to quickly get access to unchangable level cells
class Level
{
private:
    Map map;

public:
    Level();

    /// Place a bridge cell
    void placeBridge(Row::size_type x, Row::size_type y);

    /// Get the 2D array of level map
    Map& mapArray() const;

    /// Request cell type
    bool isWater(Row::size_type x, Row::size_type y) const;

    /// Replace a charge cell with a ground cell
    void removeCharge(Row::size_type x, Row::size_type y);
};

#endif // LEVEL_H