max_flow = 0.0f;
in_on_zero = 0;
in_ready = 0;
- actual_flow = 999999;
+ actual_flow = INFINITO;
updated = false;
}
float m_data = *((float *)data)*2;
float tmp;
- if (updated) {
- float tmp = actual_flow/2.0f;
+/* if (updated) {
+ if (m_data == 0) {
+ tmp = 0;
+ actual_flow /= 2.0f;
+ } else {
+ tmp = actual_flow/2.0f;
+ }
who->recieve_msg(MSG_RESPONSE_MAX_FLOW, this, &tmp);
break;
- }
+ }*/
updated = true;
if (m_data == 0) {
in_on_zero++;
tmp = 0.0f;
who->recieve_msg(MSG_RESPONSE_MAX_FLOW, this, &tmp);
- if (in_on_zero == 1) {
- if (in_ready == 0)
- tmp = max_flow;
- else
- tmp = actual_flow/2.0f;
+ switch (in_on_zero) {
+ case 1:
+ if (in_ready == 0)
+ tmp = max_flow;
+ else
+ tmp = actual_flow/2.0f;
+ break;
+ case 0:
+ if (in_ready == 1) {
+ tmp = actual_flow/2.0f;
+ }
+ break;
+ case 2:
+ tmp = 0.0f;
}
send_msg(OUT, MSG_QUERY_MAX_FLOW_OUT, &tmp);
} else {
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++;
- } else {
+ } else if ((in_colors == 1) && (entrada1 != who)) {
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;
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));
if (updated) return;
// Seteo mi actualizar en true para evitar entrar de nuevo
- // FIXME : 99999 == INFINITO!!
- actual_flow = 99999;
+ actual_flow = INFINITO;
updated = true;
switch (dir) {
case IN: