]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blob - Model/src/drainage.cpp
* Se mejora la deteccion de conexiones en el constructor
[z.facultad/75.42/plaqui.git] / Model / src / drainage.cpp
1
2 #include "drainage.h"
3 #include <iostream>
4
5 using namespace PlaQui::Model;
6
7 Drainage::Drainage(const std::string &_name):Drain(_name),Control(_name)
8 {
9         in_slots = 1;
10         out_slots = 0;
11         // FIXME hacer INFINITO!
12         capacity = 99999;
13         actual_flow = 0.0f;
14 }
15
16 Drainage::~Drainage()
17 {
18 }
19
20 void Drainage::update(int dir)
21 {
22         // El drenaje no tiene que actualizar
23         if (updated) return;
24         actual_flow = 0;
25         updated = true;
26 }
27
28 void Drainage::simulate()
29 {
30         std::list<IConector *>::iterator i = in_list.begin();
31         if (i != in_list.end()) {
32                 PlantItem *o = (PlantItem *)(*i);
33                 set_color( o->get_color() );
34         }
35 #ifdef DEBUG
36         std::cout << name << "::Flujo recibido = " << actual_flow << std::endl;
37 #endif
38         updated = false;
39         actual_flow = 0;
40 }
41
42 void Drainage::recieve_msg(int msg, IConector *who, void *data)
43 {
44         float tmp;
45         switch (msg) {
46                 case MSG_QUERY_MAX_FLOW_OUT:
47                         // FIXME Hacer INFINITO !!!
48                         actual_flow = *((float *)data);
49                         tmp = 999999;
50                         who->recieve_msg(MSG_RESPONSE_MAX_FLOW, this, &tmp);
51                         updated = true;
52                 break;
53                 default:
54                         Drain::recieve_msg(msg, who, data);
55         }
56 }
57