17
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-10-26 21:44:53 +01:00
Files
maszyna/editor/editorSettings.hpp
maj00r 21595ba010 feat(editor): the tracks are laid to the PKP PLK norms unless the free laying is chosen, asked as the laying starts
The free laying isn't the default any more. The first time a session opens the laying or the plan, a window asks how the
new tracks are laid, with the two cards of the panels (the norms marked as chosen); a click on one of them takes it and
closes the window, which comes before the offer of the terrain model of a new scenery. "Remember the choice, don't ask
again" keeps it in eu07_editor.ini (track_norms ask, free or plk), and a choice kept follows a later click on the cards of
the panels; the settings of the editor (General) choose between asking and either way. The self-test scripts start with the
free laying, as they were written for it.
2026-10-21 18:23:49 +02:00

95 lines
3.1 KiB
C++

#pragma once
#include <map>
#include <string>
#include <utility>
class editorSettings
{
public:
// camera movement key scheme in the editor
enum class movement_scheme
{
wsad, // new default: W/S/A/D + E/Q
legacy // old scheme: arrows + Page Up/Down
};
editorSettings() = default;
bool load();
bool save();
movement_scheme movement() const { return m_movement; }
void movement(movement_scheme scheme) { m_movement = scheme; }
// geoportal orthophoto layer (editor_orthophoto); the origin is kept per scenery
struct orthophoto_settings
{
int radius{2};
float height{0.0f};
float opacity{0.6f};
int year{0};
bool hires{false};
bool drape{true};
float lift{0.05f};
bool in_scene{false};
};
orthophoto_settings &orthophoto() { return m_orthophoto; }
// PUWG 1992 northing/easting of the scenery's (0,0,0) point; false when none was stored
bool orthophoto_origin(std::string const &Scenery, double &North, double &East) const;
void orthophoto_origin(std::string const &Scenery, double North, double East);
double platform_edge() const { return m_platform_edge; }
void platform_edge(double Distance) { m_platform_edge = Distance; }
double signal_offset() const { return m_signal_offset; }
void signal_offset(double Distance) { m_signal_offset = Distance; }
// node bank: cards with the previews of the models or a list, and the size of the cards in pixels
bool nodebank_previews() const { return m_nodebank_previews; }
void nodebank_previews(bool Previews) { m_nodebank_previews = Previews; }
int nodebank_card() const { return m_nodebank_card; }
void nodebank_card(int Size) { m_nodebank_card = Size; }
// colours of the editor: 0 green, as the rest of the simulator; 1 amber
int palette() const { return m_palette; }
void palette(int Palette) { m_palette = Palette; }
bool first_steps() const { return m_first_steps; }
void first_steps(bool Show) { m_first_steps = Show; }
// a scenery begun with no terrain is offered the terrain model as the first track is laid
bool terrain_offer() const { return m_terrain_offer; }
void terrain_offer(bool Offer) { m_terrain_offer = Offer; }
bool track_tools_more() const { return m_track_tools_more; }
void track_tools_more(bool Show) { m_track_tools_more = Show; }
// the ballast of the railway drawn in the top view
bool top_ballast() const { return m_top_ballast; }
void top_ballast(bool Show) { m_top_ballast = Show; }
// how the new tracks are laid: asked as the laying starts, or the choice kept
enum class track_norms
{
ask,
free_laying,
plk
};
track_norms norms() const { return m_norms; }
void norms(track_norms Norms) { m_norms = Norms; }
private:
movement_scheme m_movement{movement_scheme::wsad};
orthophoto_settings m_orthophoto;
std::map<std::string, std::pair<double, double>> m_orthophoto_origins;
double m_platform_edge{1.725};
double m_signal_offset{2.25};
bool m_nodebank_previews{true};
int m_nodebank_card{96};
int m_palette{0};
bool m_first_steps{true};
bool m_terrain_offer{true};
bool m_track_tools_more{false};
bool m_top_ballast{true};
track_norms m_norms{track_norms::ask};
};
// global editor settings instance
extern editorSettings EditorSettings;