Ejemplo n.º 1
0
void
System::CalcStatus()
{
    if (components.size() > 0) {
        availability = 1.0f;
        safety       = 1.0f;
        stability    = 1.0f;

        ListIter<Component> comp = components;
        while (++comp) {
            if (comp->DamageEfficiency())
            availability *= comp->Availability() / 100.0f;

            if (comp->DamageSafety())
            safety       *= comp->Availability() / 100.0f;

            if (comp->DamageStability())
            stability    *= comp->Availability() / 100.0f;

            if (comp->IsJerried()) {
                safety       *= 0.95f;
                stability    *= 0.95f;
            }
        }

        if (net_avail >= 0 && availability < net_avail)
        availability = net_avail;
    }
}