]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blob - Model/include/elementoplanta.h
82a3031173e0e1dd4493246a63d1c9e00378f9ff
[z.facultad/75.42/plaqui.git] / Model / include / elementoplanta.h
1
2
3 #ifndef _ELEMENTO_PLANTA_H_
4 #define _ELEMENTO_PLANTA_H_
5
6 #include <string>
7 #include "iconector.h"
8 #include "rgb.h"
9
10 namespace PlaQui {
11
12 class ElementoPlanta:public IConector {
13 public:
14         /// Constructor
15         ElementoPlanta(const std::string &_name);
16         ElementoPlanta(unsigned ins, unsigned outs);
17         virtual ~ElementoPlanta();
18
19         // FIXME: ver que parametros seran necesarios
20         virtual void send_fluid() {}
21         virtual void receive_fluid() {}
22
23         /// Hace que los elementos de la plata actualicen su flujo en esta etapa
24         virtual void update() = 0;
25         /// Hace la simulación de esta iteración
26         virtual void simulate() = 0;
27
28         /// Setea el nuevo color del fluido
29         void setColor(const RGB &c) { fluid_color = c; }
30         /// Retorna el actual color del fluido
31         const RGB &getColor() { return fluid_color; }
32
33         /// Recibe un mensage
34         virtual void recieve_msg(int msg, IConector *who);
35
36         /// Mensages manejados por los elementos de la planta
37         enum {
38                 MSG_QUERY_MAX_FLOW = IConector::MSG_LAST, ///< pregunta por el maximo flujo
39                 MSG_LAST
40         };
41 protected:
42         RGB fluid_color;
43         std::string name;
44
45 private:
46         // Hago que no se puedan copiar objetos ElementosPlanta
47         ElementoPlanta(const ElementoPlanta &):IConector(0,0) {}
48         ElementoPlanta &operator = (const ElementoPlanta &) { return (*this); }
49 };
50
51 }
52
53 #endif
54