static void Main() { const Waypoints way_points; InterfaceBlackboard blackboard; blackboard.SetComputerSettings().SetDefaults(); blackboard.SetComputerSettings().polar.glide_polar_task = GlidePolar(fixed(1)); blackboard.SetUISettings().SetDefaults(); TaskBehaviour task_behaviour; task_behaviour.SetDefaults(); TaskManager task_manager(task_behaviour, way_points); task_manager.SetGlidePolar(blackboard.GetComputerSettings().polar.glide_polar_task); GlideComputerTaskEvents task_events; task_manager.SetTaskEvents(task_events); Airspaces airspace_database; ProtectedTaskManager protected_task_manager(task_manager, blackboard.GetComputerSettings().task); LoadFiles(airspace_database); const TaskFactoryType task_type_default = blackboard.GetComputerSettings().task.task_type_default; OrderedTask *task = protected_task_manager.TaskCreateDefault(&way_points, task_type_default); if (task != nullptr) { protected_task_manager.TaskCommit(*task); delete task; } GlideComputer glide_computer(way_points, airspace_database, protected_task_manager, task_events); glide_computer.ReadComputerSettings(blackboard.GetComputerSettings()); glide_computer.SetTerrain(terrain); glide_computer.SetContestIncremental(false); glide_computer.Initialise(); LoadReplay(replay, glide_computer, blackboard); delete replay; SingleWindow main_window; main_window.Create(_T("RunAnalysis"), {640, 480}); dlgAnalysisShowModal(main_window, *look, blackboard, glide_computer, &protected_task_manager, &airspace_database, terrain); delete terrain; }
static void LoadReplay(DebugReplay *replay, GlideComputer &glide_computer, InterfaceBlackboard &blackboard) { unsigned i = 0; while (replay->Next()) { const MoreData &basic = replay->Basic(); glide_computer.ReadBlackboard(basic); glide_computer.ProcessGPS(); if (++i == 8) { i = 0; glide_computer.ProcessIdle(); } } glide_computer.ProcessExhaustive(); blackboard.ReadBlackboardBasic(glide_computer.Basic()); blackboard.ReadBlackboardCalculated(glide_computer.Calculated()); }
/** * Returns InterfaceBlackboard.Calculated (DERIVED_INFO) (read-only) * @return InterfaceBlackboard.Calculated */ gcc_const static const DERIVED_INFO& Calculated() { return blackboard.Calculated(); }
/** * Returns InterfaceBlackboard.Basic (NMEA_INFO) (read-only) * @return InterfaceBlackboard.Basic */ gcc_const static const NMEA_INFO& Basic() { return blackboard.Basic(); }
gcc_const static const SystemSettings& GetSystemSettings() { return blackboard.GetSystemSettings(); }
/** * Returns the InterfaceBlackboard.SettingsComputer (read-write) * @return The InterfaceBlackboard.SettingsComputer */ gcc_const static SETTINGS_COMPUTER& SetSettingsComputer() { return blackboard.SetSettingsComputer(); }
/** * Returns InterfaceBlackboard.Basic (NMEA_INFO) (read-only) * @return InterfaceBlackboard.Basic */ gcc_const static const MoreData &Basic() { return blackboard.Basic(); }
static void ReadBlackboardBasic(const MoreData &nmea_info) { blackboard.ReadBlackboardBasic(nmea_info); }
static void BroadcastComputerSettingsUpdate() { blackboard.BroadcastComputerSettingsUpdate(); }
static void BroadcastCalculatedUpdate() { blackboard.BroadcastCalculatedUpdate(); }
static void BroadcastGPSUpdate() { blackboard.BroadcastGPSUpdate(); }
static void RemoveListener(BlackboardListener &listener) { blackboard.RemoveListener(listener); }
static void AddListener(BlackboardListener &listener) { blackboard.AddListener(listener); }
gcc_const static SystemSettings &SetSystemSettings() { return blackboard.SetSystemSettings(); }
/** * Returns the InterfaceBlackboard.SettingsMap (read-write) * @return The InterfaceBlackboard.SettingsMap */ gcc_const static SETTINGS_MAP& SetSettingsMap() { return blackboard.SetSettingsMap(); }
gcc_const static UISettings &SetUISettings() { return blackboard.SetUISettings(); }
static void BroadcastUISettingsUpdate() { blackboard.BroadcastUISettingsUpdate(); }
static void ReadBlackboardCalculated(const DerivedInfo& derived_info) { blackboard.ReadBlackboardCalculated(derived_info); }
/** * Returns the InterfaceBlackboard.ComputerSettings (read-only) * @return The InterfaceBlackboard.ComputerSettings */ gcc_const static const ComputerSettings& GetComputerSettings() { return blackboard.GetComputerSettings(); }
/** * Returns InterfaceBlackboard.Calculated (DERIVED_INFO) (read-only) * @return InterfaceBlackboard.Calculated */ gcc_const static const DerivedInfo& Calculated() { return blackboard.Calculated(); }
/** * Returns the InterfaceBlackboard.ComputerSettings (read-write) * @return The InterfaceBlackboard.ComputerSettings */ gcc_const static ComputerSettings& SetComputerSettings() { return blackboard.SetComputerSettings(); }
gcc_const static const UISettings &GetUISettings() { return blackboard.GetUISettings(); }
static void ReadBlackboardBasic(const NMEA_INFO& nmea_info) { blackboard.ReadBlackboardBasic(nmea_info); }
static void ReadBlackboardCalculated(const DERIVED_INFO& derived_info) { blackboard.ReadBlackboardCalculated(derived_info); }
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, #ifdef _WIN32_WCE LPWSTR lpCmdLine, #else LPSTR lpCmdLine2, #endif int nCmdShow) #endif { #ifdef WIN32 Args args(GetCommandLine(), "DRIVER FILE"); #else Args args(argc, argv, "DRIVER FILE"); #endif DebugReplay *replay = CreateDebugReplay(args); if (replay == NULL) return EXIT_FAILURE; args.ExpectEnd(); InitialiseDataPath(); Profile::SetFiles(_T("")); Profile::Load(); const Waypoints way_points; InterfaceBlackboard blackboard; blackboard.SetComputerSettings().SetDefaults(); GlideComputerTaskEvents task_events; TaskManager task_manager(way_points); task_manager.SetTaskEvents(task_events); Airspaces airspace_database; AirspaceWarningManager airspace_warning(airspace_database); ProtectedTaskManager protected_task_manager(task_manager, blackboard.GetComputerSettings().task); LoadFiles(airspace_database); GlideComputer glide_computer(way_points, airspace_database, protected_task_manager, task_events); glide_computer.SetTerrain(terrain); glide_computer.Initialise(); glide_computer.ReadComputerSettings(blackboard.GetComputerSettings()); ScreenGlobalInit screen_init; LoadReplay(replay, glide_computer, blackboard); delete replay; #ifdef WIN32 ResourceLoader::Init(hInstance); #endif Layout::Initialize(640, 480); SingleWindow main_window; main_window.set(_T("STATIC"), _T("RunAnalysis"), PixelRect{0, 0, 640, 480}); Fonts::Initialize(); dialog_settings.SetDefaults(); Look *look = new Look(); look->Initialise(); look->InitialiseConfigured(blackboard.GetUISettings()); SetXMLDialogLook(look->dialog); dialog_look = &look->dialog; main_window.show(); dlgAnalysisShowModal(main_window, *look, blackboard, glide_computer, &protected_task_manager, &airspace_database, terrain); delete look; Fonts::Deinitialize(); delete terrain; DeinitialiseDataPath(); return 0; }