X-Git-Url: https://git.llucax.com/z.facultad/75.42/plaqui.git/blobdiff_plain/a8803d96a8a33195ae9234b5e6ea84d7eefa0fd9..4ddd90e71988f16c5ea79f5de86a9fcb63973ded:/Model/include/simulator.h diff --git a/Model/include/simulator.h b/Model/include/simulator.h index cd68c05..12f0ba0 100644 --- a/Model/include/simulator.h +++ b/Model/include/simulator.h @@ -15,6 +15,9 @@ #include "drainage.h" #include "iconector.h" #include "libxml/parser.h" +#include "not.h" +#include "or.h" +#include "and.h" namespace PlaQui { namespace Model { @@ -50,7 +53,10 @@ public: /// 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 @@ -61,15 +67,19 @@ protected: std::list tank_lst; std::list drainage_lst; std::list exclusa_lst; + std::list control_lst; // Tambien tengo una lista generica! std::list items; // Utilidades IConector *find(const std::string &name); + LogicControl *find_logic(const std::string &name); // Conecta todos los items desde el XML void do_connections(xmlNodePtr nodo); + void do_logic_connetions(xmlNodePtr nodo); + void connect_logic(LogicControl *current, xmlNodePtr); // Carga del XML void loadBomba(xmlNodePtr nodo); @@ -78,9 +88,15 @@ protected: void loadTank(xmlNodePtr nodo); void loadUnion(xmlNodePtr nodo); void loadDrain(xmlNodePtr nodo); + void loadNot(xmlNodePtr nodo); + void loadOr(xmlNodePtr nodo); + void loadAnd(xmlNodePtr nodo); + + RGB loadRGB(xmlNodePtr nodo); // Frame. Define el orden para los cuadros del XML unsigned long int frame; + bool is_load_ok; }; }