+ case MSG_RESPONSE_COLOR:
+ if (in_colors == 0) {
+ color1 = *((RGB *)data);
+ flow1 = static_cast<PlantItem *>(who)->get_actual_flow();
+ in_colors++;
+ } else {
+ color2 = *((RGB *)data);
+ flow2 = static_cast<PlantItem *>(who)->get_actual_flow();
+
+ /* Ya tengo mis 2 colores, los sumo */
+ int r,g,b;
+ int n=2;
+ if (flow1 == 0) n--;
+ 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;
+ set_color(RGB(r,g,b));
+ } else {
+ set_color(RGB(0,0,0));
+ }
+ color_updated = true;
+ }
+ break;