biquadris / textdisplay.h
textdisplay.h
Raw
/*
    TextDisplay class module
    
	stores internal data of the board, scoreboard, and other game
	implementation for text output
*/

#ifndef _TEXTDISPLAY_H_
#define _TEXTDISPLAY_H_

#include "display.h"
#include <vector>
#include <ostream>
#include <string>

class Shapes;

class TextDisplay : public BiquadrisDisplay {
	std::vector<std::vector<std::vector<char>>> boards;
	std::vector<int> scores;
	std::vector<int> highScores;
	std::vector<int> levels;
	std::vector<char> nextBlocks;
	std::string hint;
	
	void printChar(std::ostream &out, char c, int amount);
	void printShape(std::ostream &out, Shapes &s, int row, int width);
	int padding(std::string &str, int width);
	
	public:
		TextDisplay(int width, int height);
		void update(int _highScore) override;
		void update(int boardId, int score) override;
		void update(int boardId, int level, char nextBlock) override;
		void update(int boardId, int row, int col, char type) override;
		void setHint(std::string _hint);
		void playerLoses() override;
		bool printable() override;
		void print(std::ostream &out);
};

#endif