/* Board class module the abstract class for BaseBoard and BoardDecorator more documentation on baseboard.h and boardDecorator.h */ #ifndef _BOARD_H_ #define _BOARD_H_ #include "subject.h" #include <string> #include <memory> class Block; class Board: public Subject { public: virtual ~Board(); virtual std::shared_ptr<Board> getComponent() = 0; virtual void move(char direction, int n, int weight) = 0; virtual void drop() = 0; virtual void placeCurrBlock() = 0; virtual void replaceCurrBlock(char type, bool safety = true) = 0; virtual int getLevel() const noexcept = 0; virtual int getWidth() const noexcept = 0; virtual int getHeight() const noexcept = 0; virtual int getBoardId() const noexcept = 0; virtual char getNextBlock() const noexcept = 0; virtual int getLastNumLinesCleared() const noexcept = 0; virtual char getType(int row, int col) = 0; virtual std::string getHint() = 0; virtual void hint() = 0; virtual Block* getBlock(int row, int col) = 0; virtual void drawBlock(int row, int col, Block *block) = 0; virtual void eraseBlock(int row, int col) = 0; virtual void rotate(bool isClockwise, int n, int weight) = 0; virtual void levelUp() = 0; virtual void levelDown() = 0; virtual void setSequence(std::string file) = 0; virtual void setRandom(bool r) = 0; virtual void restart() = 0; }; #endif