]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blob - Model/include/elementoplanta.h
- El modelo comienza a cobrar vida y a ganar funcionalidad.
[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         virtual void recieve_msg(int msg, IConector *who, void *data);
34
35         /// Mensages manejados por los elementos de la planta
36         enum {
37                 MSG_QUERY_MAX_FLOW = IConector::MSG_LAST, ///< pregunta por el maximo flujo
38                 MSG_RESPONSE_MAX_FLOW, ///< responde al mensage QUERY_MAX_FLOW. data == float
39                 MSG_LAST
40         };
41
42         /// Devuelve el nombre de la instancia
43         std::string get_name() const { return name; }
44 protected:
45         RGB fluid_color;
46         // es de solo lectura
47         std::string name;
48
49 private:
50         // Hago que no se puedan copiar objetos ElementosPlanta
51         ElementoPlanta(const ElementoPlanta &):IConector(0,0) {}
52         ElementoPlanta &operator = (const ElementoPlanta &) { return (*this); }
53 };
54
55 }
56
57 #endif
58