]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - Model/include/simulator.h
* Se arregla la union, por n-esima vez, para que actualice correctamente los flujos.
[z.facultad/75.42/plaqui.git] / Model / include / simulator.h
index cd68c051ae4caf51dfc65a48147ed79de81edc4e..12f0ba01a02e0dc32f74ddfbdd1236a75e8c26bd 100644 (file)
@@ -15,6 +15,9 @@
 #include "drainage.h"
 #include "iconector.h"
 #include "libxml/parser.h"
 #include "drainage.h"
 #include "iconector.h"
 #include "libxml/parser.h"
+#include "not.h"
+#include "or.h"
+#include "and.h"
 
 namespace PlaQui {
 namespace Model {
 
 namespace PlaQui {
 namespace Model {
@@ -50,7 +53,10 @@ public:
        /// Tipos de elementos
        enum {PUMP, UNION, SPLITTER, CONDUCT, EXCLUSA, TANK, DRAINAGE};
 
        /// 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
 protected:
        // Los mantengo en listas separadas para ahorrar
        // CPU y no tener que usar dinamic_cast
@@ -61,15 +67,19 @@ protected:
        std::list<Tank *> tank_lst;
        std::list<Drainage *> drainage_lst;
        std::list<Exclusa *> exclusa_lst;
        std::list<Tank *> tank_lst;
        std::list<Drainage *> drainage_lst;
        std::list<Exclusa *> exclusa_lst;
+       std::list<LogicControl *> control_lst;
 
        // Tambien tengo una lista generica!
        std::list<PlantItem *> items;
 
        // Utilidades
        IConector *find(const std::string &name);
 
        // Tambien tengo una lista generica!
        std::list<PlantItem *> 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);
 
        // 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);
 
        // 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 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;
 
        // Frame. Define el orden para los cuadros del XML
        unsigned long int frame;
+       bool is_load_ok;
 };
 
 }
 };
 
 }