/* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #pragma once #include "uilayer.h" #include "Classes.h" class drivingaid_panel : public ui_panel { public: drivingaid_panel( std::string const &Name, bool const Isopen ) : ui_panel( Name, Isopen ) {} void update() override; bool is_expanded { false }; private: // members std::array m_buffer; }; class timetable_panel : public ui_panel { public: timetable_panel( std::string const &Name, bool const Isopen ) : ui_panel( Name, Isopen ) {} void update() override; bool is_expanded{ false }; private: // members std::array m_buffer; }; class debug_panel : public ui_panel { public: debug_panel( std::string const &Name, bool const Isopen ) : ui_panel( Name, Isopen ) {} void update() override; void render() override; private: // types struct input_data { TTrain const *train; TDynamicObject const *controlled; TCamera const *camera; TDynamicObject const *vehicle; TMoverParameters const *mover; TController const *mechanik; }; // methods // generate and send section data to provided output void update_section_vehicle( std::vector &Output ); void update_section_engine( std::vector &Output ); void update_section_ai( std::vector &Output ); void update_section_scantable( std::vector &Output ); void update_section_scenario( std::vector &Output ); void update_section_eventqueue( std::vector &Output ); void update_section_camera( std::vector &Output ); void update_section_renderer( std::vector &Output ); // section update helpers std::string update_vehicle_coupler( int const Side ); std::string update_vehicle_brake() const; // renders provided lines, under specified collapsing header bool render_section( std::string const &Header, std::vector const &Lines ); // members std::array m_buffer; input_data m_input; std::vector m_vehiclelines, m_enginelines, m_ailines, m_scantablelines, m_cameralines, m_scenariolines, m_eventqueuelines, m_rendererlines; int tprev { 0 }; // poprzedni czas double VelPrev { 0.0 }; // poprzednia prędkość double Acc { 0.0 }; // przyspieszenie styczne bool m_eventqueueactivevehicleonly { false }; }; class transcripts_panel : public ui_panel { public: transcripts_panel( std::string const &Name, bool const Isopen ) : ui_panel( Name, Isopen ) {} void update() override; void render() override; };