00001 #ifndef RENDERER_HPP 00002 #define RENDERER_HPP 00003 00004 #include "Game/Move.hpp" 00005 #include "Utils/Listener.hpp" 00006 00007 #include <cassert> 00008 00009 template <typename BoardType> 00010 class Renderer : public Listener<Move<typename BoardType::Coords> > 00011 { 00012 typedef typename BoardType::Coords Coords; 00013 00014 protected: 00015 00016 const BoardType *m_pBoard; 00020 virtual void boardChanged() {} 00021 00022 public: 00023 00028 void setBoard(const BoardType* pBoard) 00029 { 00030 assert(pBoard); 00031 00032 m_pBoard = pBoard; 00033 boardChanged(); 00034 } 00035 00038 virtual void display() 00039 { 00040 displayBoard(); 00041 } 00042 00045 virtual void displayBoard()=0; 00046 00050 virtual void displayPiece(const Coords& position)=0; 00051 }; 00052 00062 #endif