#include "Deserializer.h" #include "Exception.h" #include "TileAppearance.h" void Deserializer::set_target(Museum * museum) { this->museum = museum; } Deserializer::~Deserializer() { this->finalize(); } void Deserializer::finalize() { // TODO: remove artists outside the canvas } Museum & Deserializer::get_target() { if (this->museum == nullptr) throw Exception("no museum given to Deserializer"); return *this->museum; } void Deserializer::add_artist(ArtistData data) { printf("add artist(%1.2f, %1.2f)...\n", data.x, data.y); Museum & museum = this->get_target(); // museum.people.add_artist(data); } void Deserializer::set_canvas(CanvasData data) { printf("set canvas(%dx%d)...\n", data.rows, data.columns); Museum & museum = this->get_target(); museum.canvas.data = data; museum.canvas.update(); } void Deserializer::add_tile(unsigned int x, unsigned int y, TileData data) { printf("add tile(%d,%d) data(%s)...\n", x, y, data.type.c_str()); Museum & museum = this->get_target(); museum.canvas.set_tile(x, y, data); } void Deserializer::add_type(std::string type, Color color, unsigned int weight) { if (type.length() == 0) return; printf("add type(%s) color(#%02x%02x%02x) weight(%d)...\n", type.c_str(), color.red, color.green, color.blue, weight); TileAppearance::register_color(type, color); }