]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blob - Model/src/plantitem.cpp
* Se agrega un nuevo mensaje para intercambio de colores que anda muy bien
[z.facultad/75.42/plaqui.git] / Model / src / plantitem.cpp
1
2 #include "plantitem.h"
3 #include <iostream>
4
5 using namespace PlaQui::Model;
6
7 PlantItem::PlantItem(const std::string &_name):IConector(0, 0)
8 {
9         name = _name;
10         updated = false;
11         fluid_color = RGB(255,255,255);
12         color_updated = false;
13 }
14
15 PlantItem::PlantItem(unsigned ins, unsigned outs):IConector(ins, outs)
16 {
17         updated = false;
18 }
19
20 PlantItem::~PlantItem()
21 {
22 }
23         
24 void PlantItem::recieve_msg(int msg, IConector *who, void *data)
25 {
26         switch (msg) {
27                 case MSG_QUERY_MAX_FLOW_OUT:
28                         // TODO
29                         return;
30                 break;
31                 case MSG_QUERY_COLOR:
32                         if (color_updated) {
33                                 who->recieve_msg(MSG_RESPONSE_COLOR, this, &fluid_color);
34                         }
35                         update_color();
36                         who->recieve_msg(MSG_RESPONSE_COLOR, this, &fluid_color);
37                 break;
38                 case MSG_RESPONSE_COLOR:
39                 {
40                         RGB *c = ((RGB *)data);
41                         set_color(*c);
42                 }
43                 break;
44                 default:
45                         IConector::recieve_msg(msg, who, data);
46         }
47 }
48
49 void PlantItem::update_color()
50 {
51         if (color_updated) return;
52
53         send_msg(IConector::IN, MSG_QUERY_COLOR);
54         color_updated = true;
55 }
56
57 void PlantItem::get_state_as_xml(std::stringstream &out)
58 {
59         out << "\t<float name=\"" << name << "\">" << std::endl;
60         out << "\t\t<actual_flow>" << actual_flow << "</actual_flow>" << std::endl;
61         out << "\t</float>" << std::endl;
62         out << "\t<color name=\"" << name << "\">" << std::endl;
63         out << "\t\t<r>" << fluid_color.r() << "</r>" << std::endl;
64         out << "\t\t<g>" << fluid_color.g() << "</g>" << std::endl;
65         out << "\t\t<b>" << fluid_color.b() << "</b>" << std::endl;
66         out << "\t</color>" << std::endl;
67
68         // Para que quede bonito
69         actual_flow = 99999;
70 }