Replace raw chars with CellType enum variables
This commit is contained in:
parent
0e647faf20
commit
5e5ea14693
4
game.cpp
4
game.cpp
|
@ -90,7 +90,7 @@ void Game::onMoving(sf::Keyboard::Key &key)
|
|||
//////////////////////////
|
||||
|
||||
// If the following cell is water
|
||||
if (level->isCellOfType(attempt_x, attempt_y, '.'))
|
||||
if (level->isCellOfType(attempt_x, attempt_y, CellType::Water))
|
||||
{
|
||||
// Try to use one charge to place a bridge
|
||||
if (hero->useCharge())
|
||||
|
@ -103,7 +103,7 @@ void Game::onMoving(sf::Keyboard::Key &key)
|
|||
//////////////////////////
|
||||
|
||||
// If the following cell is a charge
|
||||
if (level->isCellOfType(attempt_x, attempt_y, '$'))
|
||||
if (level->isCellOfType(attempt_x, attempt_y, CellType::Charge))
|
||||
{
|
||||
// Hero picks up the charge; remove it from the map
|
||||
hero->refillCharges(1);
|
||||
|
|
27
level.cpp
27
level.cpp
|
@ -5,34 +5,33 @@ Level::Level()
|
|||
// Fill the level with water
|
||||
for (Row &row : map)
|
||||
{
|
||||
for (char &cell : row)
|
||||
cell = '.';
|
||||
for (CellType &cell : row)
|
||||
cell = CellType::Water;
|
||||
}
|
||||
|
||||
// Temporary mock
|
||||
|
||||
// Ground
|
||||
map[1][2] = '-';
|
||||
map[1][3] = '-';
|
||||
map[1][4] = '-';
|
||||
map[2][2] = '-';
|
||||
map[3][2] = '-';
|
||||
map[3][3] = '-';
|
||||
// Charge
|
||||
map[2][3] = '$';
|
||||
map[1][2] = CellType::Ground;
|
||||
map[1][3] = CellType::Ground;
|
||||
map[1][4] = CellType::Ground;
|
||||
map[2][2] = CellType::Ground;
|
||||
map[3][2] = CellType::Ground;
|
||||
map[3][3] = CellType::Ground;
|
||||
|
||||
map[2][3] = CellType::Charge;
|
||||
}
|
||||
|
||||
void Level::placeBridge(coordinate x, coordinate y)
|
||||
{
|
||||
map[x][y] = static_cast<char>(177);
|
||||
map[x][y] = CellType::Bridge;
|
||||
}
|
||||
|
||||
bool Level::isCellOfType(coordinate x, coordinate y, char type) const
|
||||
bool Level::isCellOfType(coordinate x, coordinate y, CellType type) const
|
||||
{
|
||||
return (map[x][y] == type);
|
||||
}
|
||||
|
||||
void Level::removeCharge(coordinate x, coordinate y)
|
||||
{
|
||||
map[x][y] = '-';
|
||||
map[x][y] = CellType::Ground;
|
||||
}
|
||||
|
|
14
level.h
14
level.h
|
@ -3,13 +3,21 @@
|
|||
|
||||
#include <array>
|
||||
|
||||
enum CellType
|
||||
{
|
||||
Water = '.',
|
||||
Ground = '-',
|
||||
Charge = '$',
|
||||
Bridge = char(177)
|
||||
};
|
||||
|
||||
using coordinate = unsigned int;
|
||||
constexpr coordinate side = 32;
|
||||
|
||||
using Row = std::array<char, side>;
|
||||
using Row = std::array<CellType, side>;
|
||||
using Map = std::array<Row, side>;
|
||||
|
||||
/// Abstraction over 2D array to quickly get access to unchangable level cells
|
||||
/// Abstraction over 2D array to quickly get access to level cells
|
||||
class Level
|
||||
{
|
||||
private:
|
||||
|
@ -25,7 +33,7 @@ public:
|
|||
Map& mapArray() const;
|
||||
|
||||
/// Is the following cell has requested type
|
||||
bool isCellOfType(coordinate x, coordinate y, char type) const;
|
||||
bool isCellOfType(coordinate x, coordinate y, CellType type) const;
|
||||
|
||||
/// Replace a charge cell with a ground cell
|
||||
void removeCharge(coordinate x, coordinate y);
|
||||
|
|
Loading…
Reference in New Issue