static void OnCruiseEfficiencyData(DataField *Sender, DataField::DataAccessKind_t Mode) { double clast = CRUISE_EFFICIENCY; switch(Mode){ case DataField::daGet: break; case DataField::daSpecial: GetCruiseEfficiency(); CRUISE_EFFICIENCY = cruise_efficiency; if (fabs(cruise_efficiency-clast)>0.01) { RefreshCalculator(); } break; case DataField::daPut: case DataField::daChange: cruise_efficiency = Sender->GetAsFloat()/100.0; CRUISE_EFFICIENCY = cruise_efficiency; if (fabs(cruise_efficiency-clast)>0.01) { RefreshCalculator(); } break; case DataField::daInc: case DataField::daDec: break; } }
void TaskCalculatorPanel::OnSpecial(DataField &df) { if (IsDataField(MC, df)) { const DerivedInfo &calculated = CommonInterface::Calculated(); if (positive(calculated.time_climb)) { fixed mc = calculated.total_height_gain / calculated.time_climb; DataFieldFloat &dff = (DataFieldFloat &)df; dff.Set(Units::ToUserVSpeed(mc)); ActionInterface::SetManualMacCready(mc); Refresh(); } } else if (IsDataField(CRUISE_EFFICIENCY, df)) { GetCruiseEfficiency(); } }