3 #ifndef _ELEMENTO_PLANTA_H_
4 #define _ELEMENTO_PLANTA_H_
12 class ElementoPlanta:public IConector {
15 ElementoPlanta(const std::string &_name);
16 ElementoPlanta(unsigned ins, unsigned outs);
17 virtual ~ElementoPlanta();
19 // FIXME: ver que parametros seran necesarios
20 virtual void send_fluid() {}
21 virtual void receive_fluid() {}
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;
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; }
33 virtual void recieve_msg(int msg, IConector *who, void *data);
35 /// Mensages manejados por los elementos de la planta
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
42 /// Devuelve el nombre de la instancia
43 std::string get_name() const { return name; }
50 // Hago que no se puedan copiar objetos ElementosPlanta
51 ElementoPlanta(const ElementoPlanta &):IConector(0,0) {}
52 ElementoPlanta &operator = (const ElementoPlanta &) { return (*this); }