]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - Model/src/plantitem.cpp
Se corrige el XML a mano para probarlo.
[z.facultad/75.42/plaqui.git] / Model / src / plantitem.cpp
index aa3aa230a36b705647f9fc3a4f1450027c1b7b60..34360b0485336bc0eb1b99ac16a68171820f9cd8 100644 (file)
@@ -1,6 +1,6 @@
 
 
-
 #include "plantitem.h"
 #include "plantitem.h"
+#include <iostream>
 
 using namespace PlaQui::Model;
 
 
 using namespace PlaQui::Model;
 
@@ -8,6 +8,8 @@ PlantItem::PlantItem(const std::string &_name):IConector(0, 0)
 {
        name = _name;
        updated = false;
 {
        name = _name;
        updated = false;
+       fluid_color = RGB(255,255,255);
+       color_updated = false;
 }
 
 PlantItem::PlantItem(unsigned ins, unsigned outs):IConector(ins, outs)
 }
 
 PlantItem::PlantItem(unsigned ins, unsigned outs):IConector(ins, outs)
@@ -22,12 +24,48 @@ PlantItem::~PlantItem()
 void PlantItem::recieve_msg(int msg, IConector *who, void *data)
 {
        switch (msg) {
 void PlantItem::recieve_msg(int msg, IConector *who, void *data)
 {
        switch (msg) {
-               case MSG_QUERY_MAX_FLOW:
+               case MSG_QUERY_MAX_FLOW_OUT:
                        // TODO
                        return;
                break;
                        // TODO
                        return;
                break;
+               case MSG_QUERY_COLOR:
+                       if (color_updated) {
+                               who->recieve_msg(MSG_RESPONSE_COLOR, this, &fluid_color);
+                               return;
+                       }
+                       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);
        }
 }
 
                default:
                        IConector::recieve_msg(msg, who, data);
        }
 }
 
+void PlantItem::update_color()
+{
+       if (color_updated) return;
+
+       color_updated = true;
+       send_msg(IConector::IN, MSG_QUERY_COLOR);
+}
+
+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 = INFINITO;
+}