]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - Model/src/union.cpp
Se corrige el bug en la union (del modelo) que probablemente era el error
[z.facultad/75.42/plaqui.git] / Model / src / union.cpp
index 7fe666b6930726011701c6dc9cf2cf4a55cfdd4d..450b6e630211cb341e3d6ea8cdfa74d1dbb124ec 100644 (file)
@@ -91,11 +91,16 @@ void Union::recieve_msg(int msg, IConector *who, void *data)
                case MSG_RESPONSE_COLOR:
                        if (in_colors == 0) {
                                color1 = *((RGB *)data);
                case MSG_RESPONSE_COLOR:
                        if (in_colors == 0) {
                                color1 = *((RGB *)data);
-                               flow1 = static_cast<PlantItem *>(who)->get_actual_flow();
+                               entrada1 = static_cast<PlantItem *>(who);
+                               flow1 = entrada1->get_actual_flow();
                                in_colors++;
                                in_colors++;
-                       } else {
+                       } else if ((in_colors == 1) && (entrada1 != who)) {
                                color2  = *((RGB *)data);
                                flow2 = static_cast<PlantItem *>(who)->get_actual_flow();
                                color2  = *((RGB *)data);
                                flow2 = static_cast<PlantItem *>(who)->get_actual_flow();
+                               in_colors++;
+                               if (color1 == color2) {
+                                               std::cout << "TODO MAL" << std::endl << std::endl;
+                               }
 
                                /* Ya tengo mis 2 colores, los sumo */
                                int r,g,b;
 
                                /* Ya tengo mis 2 colores, los sumo */
                                int r,g,b;
@@ -104,12 +109,9 @@ void Union::recieve_msg(int msg, IConector *who, void *data)
                                if (flow2 == 0) n--;
                                float suma = flow1+flow2;
                                if (n != 0) {
                                if (flow2 == 0) n--;
                                float suma = flow1+flow2;
                                if (n != 0) {
-                                       r = (int)(color1.r()*flow1/suma + color2.r()*flow2/suma)/n;
-                                       g = (int)(color1.g()*flow1/suma + color2.g()*flow2/suma)/n;
-                                       b = (int)(color1.b()*flow1/suma + color2.b()*flow2/suma)/n;
-                                       r %= 256;
-                                       g %= 256;
-                                       b %= 256;
+                                       r = (int)(color1.r()*flow1/suma + color2.r()*flow2/suma);
+                                       g = (int)(color1.g()*flow1/suma + color2.g()*flow2/suma);
+                                       b = (int)(color1.b()*flow1/suma + color2.b()*flow2/suma);
                                        set_color(RGB(r,g,b));
                                } else {
                                        set_color(RGB(0,0,0));
                                        set_color(RGB(r,g,b));
                                } else {
                                        set_color(RGB(0,0,0));