35 lines
712 B
C++
35 lines
712 B
C++
#ifndef LEVEL_H
|
|
#define LEVEL_H
|
|
|
|
#include <array>
|
|
|
|
using coordinate = unsigned int;
|
|
constexpr coordinate 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(coordinate x, coordinate y);
|
|
|
|
/// Get the 2D array of level map
|
|
Map& mapArray() const;
|
|
|
|
/// Is the following cell has requested type
|
|
bool isCellOfType(coordinate x, coordinate y, char type) const;
|
|
|
|
/// Replace a charge cell with a ground cell
|
|
void removeCharge(coordinate x, coordinate y);
|
|
};
|
|
|
|
#endif // LEVEL_H
|