]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - 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
index ea3b85ee4d0f97e50ab73a6b28ab99eed4a92578..50d8e9884c34571e9a786acf194828a6b7936fda 100644 (file)
@@ -1,6 +1,6 @@
 
-
 #include "plantitem.h"
+#include <iostream>
 
 using namespace PlaQui::Model;
 
@@ -8,6 +8,8 @@ PlantItem::PlantItem(const std::string &_name):IConector(0, 0)
 {
        name = _name;
        updated = false;
+       fluid_color = RGB(255,255,255);
+       color_updated = false;
 }
 
 PlantItem::PlantItem(unsigned ins, unsigned outs):IConector(ins, outs)
@@ -26,16 +28,42 @@ void PlantItem::recieve_msg(int msg, IConector *who, void *data)
                        // TODO
                        return;
                break;
+               case MSG_QUERY_COLOR:
+                       if (color_updated) {
+                               who->recieve_msg(MSG_RESPONSE_COLOR, this, &fluid_color);
+                       }
+                       update_color();
+                       who->recieve_msg(MSG_RESPONSE_COLOR, this, &fluid_color);
+               break;
+               case MSG_RESPONSE_COLOR:
+               {
+                       RGB *c = ((RGB *)data);
+                       set_color(*c);
+               }
+               break;
                default:
                        IConector::recieve_msg(msg, who, data);
        }
 }
 
+void PlantItem::update_color()
+{
+       if (color_updated) return;
+
+       send_msg(IConector::IN, MSG_QUERY_COLOR);
+       color_updated = true;
+}
+
 void PlantItem::get_state_as_xml(std::stringstream &out)
 {
        out << "\t<float name=\"" << name << "\">" << std::endl;
        out << "\t\t<actual_flow>" << actual_flow << "</actual_flow>" << std::endl;
        out << "\t</float>" << std::endl;
+       out << "\t<color name=\"" << name << "\">" << std::endl;
+       out << "\t\t<r>" << fluid_color.r() << "</r>" << std::endl;
+       out << "\t\t<g>" << fluid_color.g() << "</g>" << std::endl;
+       out << "\t\t<b>" << fluid_color.b() << "</b>" << std::endl;
+       out << "\t</color>" << std::endl;
 
        // Para que quede bonito
        actual_flow = 99999;