/* Utilizo en input como el flotante de arriba y el output como el de abajo */
input = new Condition(Condition::GT, 0.9, this);
output = new Condition(Condition::LT, 0.1, this);
+ input->set_name(name+" superior");
+ output->set_name(name+" inferior");
}
Tank::~Tank()
bool Tank::get_output()
{
+ std::cout << "TODO MAL" << std::endl;
return litros > 0;
}
actual_in_flow = capacity - litros;
if (*((float *)data) < actual_in_flow)
actual_in_flow = *((float *)data);
- actual_out_flow = litros;
+ actual_flow = actual_out_flow = litros;
+ updated = true;
send_msg(OUT, MSG_QUERY_MAX_FLOW_OUT, &actual_out_flow);
who->recieve_msg(MSG_RESPONSE_MAX_FLOW, this, &actual_in_flow);
- updated = true;
break;
case MSG_RESPONSE_MAX_FLOW:
if (pos == OUT) {
if (*((float *)data) < actual_out_flow)
- actual_out_flow = *((float *)data);
+ actual_flow = actual_out_flow = *((float *)data);
}
break;
case MSG_RESPONSE_COLOR:
+ {
RGB c = *((RGB *)data);
PlantItem *ic = static_cast<PlantItem *>(*(in_list.begin()));
int r,g,b;
g %= 256;
b %= 256;
set_color(RGB(r,g,b));
+ color_updated = true;
+ }
+ break;
+ default:
+ Control::recieve_msg(msg, who, data);
}
}
out << "\t<tank name=\"" << name << "\">" << std::endl;
out << "\t\t<capacity>" << capacity << "</capacity>" << std::endl;
out << "\t\t<litros>" << litros << "</litros>" << std::endl;
+ out << "\t\t<salida id=\"inferior\"><active>" << (output->get_output()?"true":"false") << "</active></salida>" << std::endl;
+ out << "\t\t<salida id=\"superior\"><active>" << (input->get_output()?"true":"false") << "</active></salida>" << std::endl;
out << "\t</tank>" << std::endl;
}