]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blob - Model/src/drainage.cpp
Se termina de poner prolijo Runnable:
[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         std::cout << name << "::Flujo recibido = " << actual_flow << std::endl;
36         updated = false;
37         actual_flow = 0;
38 }
39
40 void Drainage::recieve_msg(int msg, IConector *who, void *data)
41 {
42         float tmp;
43         switch (msg) {
44                 case MSG_QUERY_MAX_FLOW_OUT:
45                         // FIXME Hacer INFINITO !!!
46                         actual_flow = *((float *)data);
47                         tmp = 999999;
48                         who->recieve_msg(MSG_RESPONSE_MAX_FLOW, this, &tmp);
49                         updated = true;
50                 break;
51                 default:
52                         Drain::recieve_msg(msg, who, data);
53         }
54 }
55