]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blob - Model/include/plantitem.h
Se completa bastante el model y se crea un ejemplo que al parecer funciona
[z.facultad/75.42/plaqui.git] / Model / include / plantitem.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 namespace Model {
13                                 
14 class PlantItem:public IConector {
15 public:
16         /// Constructor
17         PlantItem(const std::string &_name);
18         PlantItem(unsigned ins, unsigned outs);
19         virtual ~PlantItem();
20
21         // FIXME: ver que parametros seran necesarios
22         virtual void send_fluid() {}
23         virtual void receive_fluid() {}
24
25         /// Hace que los elementos de la plata actualicen su flujo en esta etapa
26         virtual void update() = 0;
27         /// Hace la simulación de esta iteración
28         virtual void simulate() = 0;
29
30         /// Setea el nuevo color del fluido
31         void setColor(const RGB &c) { fluid_color = c; }
32         /// Retorna el actual color del fluido
33         const RGB &getColor() { return fluid_color; }
34
35         virtual void recieve_msg(int msg, IConector *who, void *data);
36
37         /// Mensages manejados por los elementos de la planta
38         enum {
39                 MSG_QUERY_MAX_FLOW = IConector::MSG_LAST, ///< pregunta por el maximo flujo
40                 MSG_RESPONSE_MAX_FLOW, ///< responde al mensage QUERY_MAX_FLOW. data == float
41                 MSG_LAST
42         };
43
44         /// Devuelve el nombre de la instancia
45         std::string get_name() const { return name; }
46 protected:
47         RGB fluid_color;
48         // es de solo lectura
49         std::string name;
50         bool updated;
51 private:
52         // Hago que no se puedan copiar objetos ElementosPlanta
53         PlantItem(const PlantItem &):IConector(0,0) {}
54         PlantItem &operator = (const PlantItem &) { return (*this); }
55 };
56
57 }
58 }
59
60 #endif
61