#include <list>
#include <string>
+#include <sstream>
#include "pump.h"
#include "splitter.h"
#include "union.h"
Simulator(const std::string &filename);
~Simulator();
- void add_pump(const std::string &name);
- void add_union(const std::string &name);
- void add_splitter(const std::string &name);
- void add_conduct(const std::string &name);
- void add_exclusa(const std::string &name);
- void add_tank(const std::string &name);
+ void add_pump(const std::string &name, float max_flow, RGB color);
+ void add_union(const std::string &name, float max_flow);
+ void add_splitter(const std::string &name, float max_flow);
+ void add_conduct(const std::string &name, float max_flow);
+ void add_exclusa(const std::string &name, bool open);
+ void add_tank(const std::string &name, float capacity, float initial, RGB color);
void add_drainage(const std::string &name);
+ /** Retorna el estado de todos los items como un XML */
+ std::string get_state_as_xml();
+
/** Conecta 2 elementos
*
* Esta funcion conecta el elemanto name1 con el elemento name2.
/// Tipos de elementos
enum {PUMP, UNION, SPLITTER, CONDUCT, EXCLUSA, TANK, DRAINAGE};
- bool pump_deactivate(const std::string &name);
+ bool set_open(const std::string &name, bool open = true);
+
+ /// Dice si el simulador está simulando una planta
+ bool is_ok() { return is_load_ok; }
protected:
// Los mantengo en listas separadas para ahorrar
// CPU y no tener que usar dinamic_cast
// Utilidades
IConector *find(const std::string &name);
+ // Conecta todos los items desde el XML
+ void do_connections(xmlNodePtr nodo);
+
// Carga del XML
void loadBomba(xmlNodePtr nodo);
- void loadCodo(xmlNodePtr nodo);
void loadConduct(xmlNodePtr nodo);
void loadExclusa(xmlNodePtr nodo);
void loadTank(xmlNodePtr nodo);
void loadUnion(xmlNodePtr nodo);
+ void loadDrain(xmlNodePtr nodo);
+
+ RGB loadRGB(xmlNodePtr nodo);
+
+ // Frame. Define el orden para los cuadros del XML
+ unsigned long int frame;
+ bool is_load_ok;
};
}