]> 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 9405a945455e2191f23b9df591bcd5fd32e69482..50d8e9884c34571e9a786acf194828a6b7936fda 100644 (file)
@@ -1,6 +1,6 @@
 
-
 #include "plantitem.h"
+#include <iostream>
 
 using namespace PlaQui::Model;
 
@@ -9,6 +9,7 @@ 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)
@@ -27,11 +28,32 @@ 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;