|
|
|
@ -10,10 +10,15 @@
|
|
|
|
|
|
|
|
|
|
namespace palette
|
|
|
|
|
{
|
|
|
|
|
const sf::Color Brown = sf::Color(165, 42, 42);
|
|
|
|
|
const sf::Color White = sf::Color(255, 255, 255);
|
|
|
|
|
const sf::Color Blue = sf::Color(0, 255, 255);
|
|
|
|
|
const sf::Color Gray = sf::Color(125, 125, 125);
|
|
|
|
|
const sf::Color Brown = sf::Color(165, 42, 42);
|
|
|
|
|
const sf::Color White = sf::Color(255, 255, 255);
|
|
|
|
|
const sf::Color Blue = sf::Color( 0, 255, 255);
|
|
|
|
|
const sf::Color Gray = sf::Color(125, 125, 125);
|
|
|
|
|
const sf::Color Green = sf::Color( 0, 255, 0);
|
|
|
|
|
const sf::Color Red = sf::Color(250, 0, 0);
|
|
|
|
|
const sf::Color Purple = sf::Color(128, 0, 128);
|
|
|
|
|
const sf::Color Pink = sf::Color(255, 192, 203);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
enum CELL_TYPES {
|
|
|
|
@ -36,6 +41,7 @@ class Cell;
|
|
|
|
|
|
|
|
|
|
using HeroPtr = std::unique_ptr<Hero>;
|
|
|
|
|
using LevelPtr = std::unique_ptr<Level>;
|
|
|
|
|
using CellPtr = std::unique_ptr<Cell>
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////
|
|
|
|
|
|
|
|
|
@ -56,8 +62,6 @@ public:
|
|
|
|
|
|
|
|
|
|
/// Determine if Hero can move onto this cell or not
|
|
|
|
|
virtual bool onMovingTo(HeroPtr &hero, LevelPtr &level) = 0;
|
|
|
|
|
|
|
|
|
|
virtual Cell *getDefaultInstance() = 0;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////
|
|
|
|
@ -67,14 +71,12 @@ class PassableCell : public Cell
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
PassableCell(coordinate cell_row = 0,
|
|
|
|
|
coordinate cell_col = 0, // Brown
|
|
|
|
|
coordinate cell_col = 0,
|
|
|
|
|
const sf::Color &color = palette::Brown);
|
|
|
|
|
|
|
|
|
|
virtual ~PassableCell() override;
|
|
|
|
|
|
|
|
|
|
virtual bool onMovingTo(HeroPtr &hero, LevelPtr &level) override;
|
|
|
|
|
|
|
|
|
|
virtual Cell *getDefaultInstance() override;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////
|
|
|
|
@ -90,8 +92,6 @@ public:
|
|
|
|
|
virtual ~WaterCell() override;
|
|
|
|
|
|
|
|
|
|
virtual bool onMovingTo(HeroPtr &hero, LevelPtr &level) override;
|
|
|
|
|
|
|
|
|
|
virtual Cell *getDefaultInstance() override;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////
|
|
|
|
@ -101,14 +101,12 @@ class WallCell : public Cell
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
WallCell(coordinate cell_row = 0,
|
|
|
|
|
coordinate cell_col = 0, // Gray
|
|
|
|
|
coordinate cell_col = 0,
|
|
|
|
|
const sf::Color &color = palette::Gray);
|
|
|
|
|
|
|
|
|
|
virtual ~WallCell() override;
|
|
|
|
|
|
|
|
|
|
virtual bool onMovingTo(HeroPtr &hero, LevelPtr &level) override;
|
|
|
|
|
|
|
|
|
|
virtual Cell *getDefaultInstance() override;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////
|
|
|
|
@ -123,13 +121,11 @@ public:
|
|
|
|
|
ChargeCell(coordinate cell_row = 0,
|
|
|
|
|
coordinate cell_col = 0,
|
|
|
|
|
int has_charges = 1,
|
|
|
|
|
const sf::Color &color = sf::Color::Green);
|
|
|
|
|
const sf::Color &color = palette::Green);
|
|
|
|
|
|
|
|
|
|
virtual ~ChargeCell() override;
|
|
|
|
|
|
|
|
|
|
virtual bool onMovingTo(HeroPtr &hero, LevelPtr &level) override;
|
|
|
|
|
|
|
|
|
|
virtual Cell *getDefaultInstance() override;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////
|
|
|
|
@ -140,13 +136,11 @@ class ExitCell : public Cell
|
|
|
|
|
public:
|
|
|
|
|
ExitCell(coordinate cell_row = 0,
|
|
|
|
|
coordinate cell_col = 0,
|
|
|
|
|
const sf::Color &color = sf::Color::Red);
|
|
|
|
|
const sf::Color &color = palette::Red);
|
|
|
|
|
|
|
|
|
|
virtual ~ExitCell() override;
|
|
|
|
|
|
|
|
|
|
virtual bool onMovingTo(HeroPtr &hero, LevelPtr &level) override;
|
|
|
|
|
|
|
|
|
|
virtual Cell *getDefaultInstance() override;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////
|
|
|
|
@ -161,14 +155,12 @@ public:
|
|
|
|
|
TeleportCell(coordinate cell_row = 0,
|
|
|
|
|
coordinate cell_col = 0,
|
|
|
|
|
coordinate new_cell_row = 0,
|
|
|
|
|
coordinate new_cell_col = 0, // Purple
|
|
|
|
|
const sf::Color &color = sf::Color(128, 0, 128));
|
|
|
|
|
coordinate new_cell_col = 0,
|
|
|
|
|
const sf::Color &color = palette::Purple);
|
|
|
|
|
|
|
|
|
|
virtual ~TeleportCell() override;
|
|
|
|
|
|
|
|
|
|
virtual bool onMovingTo(HeroPtr &hero, LevelPtr &level) override;
|
|
|
|
|
|
|
|
|
|
virtual Cell *getDefaultInstance() override;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////
|
|
|
|
@ -178,19 +170,17 @@ class TriggerCell : public Cell
|
|
|
|
|
{
|
|
|
|
|
private:
|
|
|
|
|
// Vector of cells to place on map
|
|
|
|
|
std::vector<Cell *> cells;
|
|
|
|
|
std::vector<CellPtr> cells;
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
TriggerCell(//std::vector<CellPtr> &&cells_to_change,
|
|
|
|
|
coordinate cell_row = 0,
|
|
|
|
|
coordinate cell_col = 0, // Pink
|
|
|
|
|
const sf::Color &color = sf::Color(255, 192, 203));
|
|
|
|
|
coordinate cell_col = 0,
|
|
|
|
|
const sf::Color &color = palette::Pink);
|
|
|
|
|
|
|
|
|
|
virtual ~TriggerCell() override;
|
|
|
|
|
|
|
|
|
|
virtual bool onMovingTo(HeroPtr &hero, LevelPtr &level) override;
|
|
|
|
|
|
|
|
|
|
virtual Cell *getDefaultInstance() override;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif // CELL_H
|
|
|
|
|