X-Git-Url: https://git.llucax.com/z.facultad/75.42/plaqui.git/blobdiff_plain/c0e0cf58ce033421d125afb813636f102456592c..be1908f8097dbbc871bfd7c55432de43d25647b7:/Model/src/simulator.cpp?ds=sidebyside diff --git a/Model/src/simulator.cpp b/Model/src/simulator.cpp index 3aeacd6..72c59ca 100644 --- a/Model/src/simulator.cpp +++ b/Model/src/simulator.cpp @@ -10,9 +10,12 @@ Simulator::Simulator(const std::string &filename) xmlDocPtr document; document = xmlParseFile(filename.c_str()); if (document == NULL) { + is_load_ok = false; return; } + is_load_ok = true; + /* bien, el archivo se parseo bien! */ xmlNodePtr nodo, items; nodo = document->children; @@ -40,17 +43,25 @@ Simulator::Simulator(const std::string &filename) // Bien, la planta esta cargada, conectemos todo!! do_connections(nodo->children); } + xmlFreeDoc(document); } Simulator::~Simulator() { - // FIXME REMOVER TODOOOOOO + std::list::iterator i = items.begin(); + PlantItem *o; + + while (i != items.end()) { + o = (*i); + items.remove(o); + delete o; + i = items.begin(); + } } void Simulator::add_pump(const std::string &name, float max_flow, RGB color) { Pump *p = new Pump(name); - // FIXME no va!! p->set_max_flow(max_flow); p->set_color(color); pump_lst.push_back(p); @@ -60,7 +71,6 @@ void Simulator::add_pump(const std::string &name, float max_flow, RGB color) void Simulator::add_union(const std::string &name, float max_flow) { Union *u = new Union(name); - // FIXME no va!! u->set_max_flow(max_flow); union_lst.push_back(u); items.push_back(u); @@ -77,7 +87,6 @@ void Simulator::add_splitter(const std::string &name, float max_flow) void Simulator::add_conduct(const std::string &name, float flujo) { Conduct *p = new Conduct(name); - // FIXME no va!! p->set_max_flow(flujo); conduct_lst.push_back(p); items.push_back(p); @@ -200,8 +209,7 @@ void Simulator::loadBomba(xmlNodePtr nodo) } else if (xmlStrcmp(nodo->name, BAD_CAST"entrega") == 0) { flujo = atof( (char *)XML_GET_CONTENT(nodo->children) ); } else if (xmlStrcmp(nodo->name, BAD_CAST"color") == 0) { - // FIXME ! - color = RGB(); + color = loadRGB(nodo->children); } } nodo = nodo->next; @@ -269,7 +277,7 @@ void Simulator::loadTank(xmlNodePtr nodo) std::string name = (char *)xmlGetProp(nodo, BAD_CAST"nombre"); int orientacion=0, x, y; float capacidad, inicial; - RGB color; // TODO + RGB color; nodo = nodo->children; while (nodo != NULL) { @@ -284,6 +292,8 @@ void Simulator::loadTank(xmlNodePtr nodo) capacidad = atoi( (char *)XML_GET_CONTENT(nodo->children) ); } else if (xmlStrcmp(nodo->name, BAD_CAST"inicial") == 0) { inicial = atof( (char *)XML_GET_CONTENT(nodo->children) ); + } else if (xmlStrcmp(nodo->name, BAD_CAST"") == 0) { + color = loadRGB(nodo->children); } } nodo = nodo->next; @@ -442,3 +452,20 @@ std::string Simulator::get_state_as_xml() return out.str();; } +RGB Simulator::loadRGB(xmlNodePtr nodo) +{ + unsigned r,g,b; + while (nodo != NULL) { + if (nodo->type == XML_ELEMENT_NODE) { + if (xmlStrcmp(nodo->name, BAD_CAST"rojo")==0) + r = atoi( (char *)XML_GET_CONTENT(nodo->children) ); + if (xmlStrcmp(nodo->name, BAD_CAST"verde")==0) + g = atoi( (char *)XML_GET_CONTENT(nodo->children) ); + if (xmlStrcmp(nodo->name, BAD_CAST"azul")==0) + b = atoi( (char *)XML_GET_CONTENT(nodo->children) ); + } + nodo = nodo->next; + } + return RGB(r,g,b); +} +