Rigs of Rods
2023.09
Soft-body Physics Simulation
Main Page
Related Pages
Topics
Namespaces
Data Structures
Files
File List
Globals
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Modules
Pages
Loading...
Searching...
No Matches
source
main
gui
panels
GUI_TopMenubar.h
Go to the documentation of this file.
1
/*
2
This source file is part of Rigs of Rods
3
Copyright 2005-2012 Pierre-Michel Ricordel
4
Copyright 2007-2012 Thomas Fischer
5
Copyright 2016-2020 Petr Ohlidal
6
7
For more information, see http://www.rigsofrods.org/
8
9
Rigs of Rods is free software: you can redistribute it and/or modify
10
it under the terms of the GNU General Public License version 3, as
11
published by the Free Software Foundation.
12
13
Rigs of Rods is distributed in the hope that it will be useful,
14
but WITHOUT ANY WARRANTY; without even the implied warranty of
15
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
GNU General Public License for more details.
17
18
You should have received a copy of the GNU General Public License
19
along with Rigs of Rods. If not, see <http://www.gnu.org/licenses/>.
20
*/
21
25
26
#pragma once
27
28
#include "
AddonPartFileFormat.h
"
29
#include "
CacheSystem.h
"
30
#include "RoRnet.h"
31
32
#include <imgui.h>
33
#include <imgui_internal.h>
34
#include <vector>
35
#include <rapidjson/document.h>
36
37
struct
ai_events
38
{
39
Ogre::Vector3
position
;
40
int
speed
= -1;
41
};
37
struct
ai_events
{
…
};
42
43
namespace
RoR
{
44
namespace
GUI {
45
46
class
TopMenubar
47
{
48
public
:
49
const
float
MENU_Y_OFFSET
= 40.f;
50
const
float
PANEL_HOVERBOX_HEIGHT
= 50.f;
51
const
ImVec4
GRAY_HINT_TEXT
= ImVec4(0.62f, 0.62f, 0.61f, 1.f);
52
const
ImVec4
WHITE_TEXT
= ImVec4(0.9f, 0.9f, 0.9f, 1.f);
53
const
ImVec4
GREEN_TEXT
= ImVec4(0.0f, 0.9f, 0.0f, 1.f);
54
const
ImVec4
ORANGE_TEXT
= ImVec4(0.9f, 0.6f, 0.0f, 1.f);
55
const
ImVec4
RED_TEXT
= ImVec4(1.00f, 0.00f, 0.00f, 1.f);
56
const
ImVec2
MENU_HOVERBOX_PADDING
= ImVec2(25.f, 10.f);
57
const
int
TUNING_SUBJECTID_USE_NAME
= -2;
58
59
enum class
TopMenu
{
TOPMENU_NONE
,
TOPMENU_SIM
,
TOPMENU_ACTORS
,
TOPMENU_SAVEGAMES
,
TOPMENU_SETTINGS
,
TOPMENU_TOOLS
,
TOPMENU_AI
,
TOPMENU_TUNING
};
60
enum class
StateBox
{
STATEBOX_NONE
,
STATEBOX_REPLAY
,
STATEBOX_RACE
,
STATEBOX_LIVE_REPAIR
,
STATEBOX_QUICK_REPAIR
,
STATEBOX_IMPORT_TERRAIN
,
STATEBOX_OVERWRITE_TERRAIN
};
61
62
TopMenubar
();
63
~TopMenubar
();
64
65
void
Draw
(
float
dt);
66
bool
ShouldDisplay
(ImVec2 window_pos);
67
68
bool
IsVisible
() {
return
m_open_menu
!=
TopMenu::TOPMENU_NONE
; };
69
70
// Vehicle AI
71
std::vector<ai_events>
ai_waypoints
;
72
int
ai_num
= 1;
73
int
ai_speed
= 50;
74
int
ai_times
= 1;
75
int
ai_altitude
= 1000;
76
int
ai_distance
= 20;
77
int
ai_position_scheme
= 0;
78
Ogre::String
ai_fname
=
"95bbUID-agoras.truck"
;
79
Ogre::String
ai_dname
=
"Bus RVI Agora S"
;
80
Ogre::String
ai_sectionconfig
=
""
;
81
std::string
ai_skin
=
""
;
82
bool
ai_select
=
false
;
83
bool
ai_rec
=
false
;
84
int
ai_mode
= 0;
85
bool
ai_menu
=
false
;
86
87
// Secondary selections for Drag Race and Crash driving modes
88
bool
ai_select2
=
false
;
89
Ogre::String
ai_fname2
=
"95bbUID-agoras.truck"
;
90
Ogre::String
ai_dname2
=
"Bus RVI Agora S"
;
91
Ogre::String
ai_sectionconfig2
=
""
;
92
std::string
ai_skin2
=
""
;
93
94
int
ai_num_prev
= 1;
95
int
ai_speed_prev
= 50;
96
int
ai_position_scheme_prev
= 0;
97
int
ai_times_prev
= 1;
98
int
ai_mode_prev
= 0;
99
100
// AI waypoint presets
101
void
FetchExternAiPresetsOnBackground
();
102
void
LoadBundledAiPresets
(
TerrainPtr
terrain);
103
void
RefreshAiPresets
();
104
rapidjson::Document
ai_presets_all
;
105
rapidjson::Document
ai_presets_extern
;
106
bool
ai_presets_extern_fetching
=
false
;
107
std::string
ai_presets_extern_error
;
108
rapidjson::Document
ai_presets_bundled
;
109
110
// Tuning menu
111
ActorPtr
tuning_actor
;
112
std::vector<CacheEntryPtr>
tuning_addonparts
;
113
std::vector<bool>
tuning_addonparts_conflict_w_used
;
114
AddonPartConflictVec
tuning_conflicts
;
115
CacheQuery
tuning_saves
;
116
Str<200>
tuning_savebox_buf
;
117
bool
tuning_savebox_visible
=
false
;
118
bool
tuning_savebox_overwrite
=
false
;
119
const
ImVec4
TUNING_HOLDTOCONFIRM_COLOR
= ImVec4(0.25f, 0.15f, 0.2f, 0.5f);
120
const
float
TUNING_HOLDTOCONFIRM_TIMELIMIT
= 1.5f;
121
float
tuning_rwidget_cursorx_min
= 0.f;
122
CacheEntryPtr
tuning_hovered_addonpart
;
123
void
RefreshTuningMenu
();
124
125
private
:
126
bool
IsMenuEnabled
(
TopMenu
which);
127
128
void
DrawActorListSinglePlayer
();
129
void
DrawMpUserToActorList
(
RoRnet::UserInfo
&user);
// Multiplayer
130
void
DrawSpecialStateBox
(
float
top_offset);
131
132
// Tuning menu helpers
133
void
DrawTuningBoxedSubjectIdInline
(
int
subject_id);
134
void
DrawTuningProtectedChkRightAligned
(
const
int
subject_id,
bool
is_protected,
ModifyProjectRequestType
request_type_set,
ModifyProjectRequestType
request_type_reset,
const
std::string& subject =
""
);
135
void
DrawTuningForceRemoveControls
(
const
int
subject_id,
const
std::string& name,
const
bool
is_unwanted,
const
bool
is_force_removed,
ModifyProjectRequestType
request_type_set,
ModifyProjectRequestType
request_type_reset);
136
137
ImVec2
m_open_menu_hoverbox_min
;
138
ImVec2
m_open_menu_hoverbox_max
;
139
TopMenu
m_open_menu
=
TopMenu::TOPMENU_NONE
;
140
141
ImVec2
m_state_box_hoverbox_min
;
142
ImVec2
m_state_box_hoverbox_max
;
143
StateBox
m_state_box
=
StateBox::STATEBOX_NONE
;
144
145
bool
m_confirm_remove_all
=
false
;
146
147
float
m_daytime
= 0.f;
148
float
m_waves_height
;
149
bool
m_quickload
=
false
;
150
bool
m_terrn_import_started
=
false
;
151
std::string
m_quicksave_name
;
152
std::vector<std::string>
m_savegame_names
;
153
};
46
class
TopMenubar
{
…
};
154
155
}
// namespace GUI
156
}
// namespace RoR
AddonPartFileFormat.h
CacheSystem.h
A database of user-installed content alias 'mods' (vehicles, terrains...)
RefCountingObjectPtr< Terrain >
RoR::GUI::TopMenubar
Definition
GUI_TopMenubar.h:47
RoR::GUI::TopMenubar::ai_skin
std::string ai_skin
Definition
GUI_TopMenubar.h:81
RoR::GUI::TopMenubar::ai_num_prev
int ai_num_prev
Definition
GUI_TopMenubar.h:94
RoR::GUI::TopMenubar::ai_num
int ai_num
Definition
GUI_TopMenubar.h:72
RoR::GUI::TopMenubar::ai_altitude
int ai_altitude
Definition
GUI_TopMenubar.h:75
RoR::GUI::TopMenubar::m_quickload
bool m_quickload
Definition
GUI_TopMenubar.h:149
RoR::GUI::TopMenubar::ai_dname2
Ogre::String ai_dname2
Definition
GUI_TopMenubar.h:90
RoR::GUI::TopMenubar::ai_sectionconfig
Ogre::String ai_sectionconfig
Definition
GUI_TopMenubar.h:80
RoR::GUI::TopMenubar::m_waves_height
float m_waves_height
Definition
GUI_TopMenubar.h:148
RoR::GUI::TopMenubar::TopMenubar
TopMenubar()
Definition
GUI_TopMenubar.cpp:140
RoR::GUI::TopMenubar::m_confirm_remove_all
bool m_confirm_remove_all
Definition
GUI_TopMenubar.h:145
RoR::GUI::TopMenubar::WHITE_TEXT
const ImVec4 WHITE_TEXT
Definition
GUI_TopMenubar.h:52
RoR::GUI::TopMenubar::m_savegame_names
std::vector< std::string > m_savegame_names
Definition
GUI_TopMenubar.h:152
RoR::GUI::TopMenubar::tuning_saves
CacheQuery tuning_saves
Tuneups saved by user, with category ID RoR::CID_AddonpartUser
Definition
GUI_TopMenubar.h:115
RoR::GUI::TopMenubar::m_open_menu_hoverbox_min
ImVec2 m_open_menu_hoverbox_min
Definition
GUI_TopMenubar.h:137
RoR::GUI::TopMenubar::m_state_box_hoverbox_max
ImVec2 m_state_box_hoverbox_max
Definition
GUI_TopMenubar.h:142
RoR::GUI::TopMenubar::tuning_addonparts_conflict_w_used
std::vector< bool > tuning_addonparts_conflict_w_used
1:1 with tuning_addonparts; True means the eligible (not used) addonpart conflicts with an used addon...
Definition
GUI_TopMenubar.h:113
RoR::GUI::TopMenubar::m_state_box_hoverbox_min
ImVec2 m_state_box_hoverbox_min
Definition
GUI_TopMenubar.h:141
RoR::GUI::TopMenubar::ai_sectionconfig2
Ogre::String ai_sectionconfig2
Definition
GUI_TopMenubar.h:91
RoR::GUI::TopMenubar::Draw
void Draw(float dt)
Definition
GUI_TopMenubar.cpp:154
RoR::GUI::TopMenubar::DrawTuningProtectedChkRightAligned
void DrawTuningProtectedChkRightAligned(const int subject_id, bool is_protected, ModifyProjectRequestType request_type_set, ModifyProjectRequestType request_type_reset, const std::string &subject="")
Definition
GUI_TopMenubar.cpp:2711
RoR::GUI::TopMenubar::ORANGE_TEXT
const ImVec4 ORANGE_TEXT
Definition
GUI_TopMenubar.h:54
RoR::GUI::TopMenubar::ai_speed
int ai_speed
Definition
GUI_TopMenubar.h:73
RoR::GUI::TopMenubar::ShouldDisplay
bool ShouldDisplay(ImVec2 window_pos)
Definition
GUI_TopMenubar.cpp:2073
RoR::GUI::TopMenubar::TUNING_HOLDTOCONFIRM_COLOR
const ImVec4 TUNING_HOLDTOCONFIRM_COLOR
Definition
GUI_TopMenubar.h:119
RoR::GUI::TopMenubar::ai_rec
bool ai_rec
Definition
GUI_TopMenubar.h:83
RoR::GUI::TopMenubar::tuning_savebox_buf
Str< 200 > tuning_savebox_buf
Buffer for tuneup name to be saved.
Definition
GUI_TopMenubar.h:116
RoR::GUI::TopMenubar::ai_select
bool ai_select
Definition
GUI_TopMenubar.h:82
RoR::GUI::TopMenubar::GRAY_HINT_TEXT
const ImVec4 GRAY_HINT_TEXT
Definition
GUI_TopMenubar.h:51
RoR::GUI::TopMenubar::StateBox
StateBox
Definition
GUI_TopMenubar.h:60
RoR::GUI::TopMenubar::StateBox::STATEBOX_REPLAY
@ STATEBOX_REPLAY
RoR::GUI::TopMenubar::StateBox::STATEBOX_RACE
@ STATEBOX_RACE
RoR::GUI::TopMenubar::StateBox::STATEBOX_IMPORT_TERRAIN
@ STATEBOX_IMPORT_TERRAIN
RoR::GUI::TopMenubar::StateBox::STATEBOX_QUICK_REPAIR
@ STATEBOX_QUICK_REPAIR
RoR::GUI::TopMenubar::StateBox::STATEBOX_LIVE_REPAIR
@ STATEBOX_LIVE_REPAIR
RoR::GUI::TopMenubar::StateBox::STATEBOX_OVERWRITE_TERRAIN
@ STATEBOX_OVERWRITE_TERRAIN
RoR::GUI::TopMenubar::StateBox::STATEBOX_NONE
@ STATEBOX_NONE
RoR::GUI::TopMenubar::ai_fname
Ogre::String ai_fname
Definition
GUI_TopMenubar.h:78
RoR::GUI::TopMenubar::ai_presets_bundled
rapidjson::Document ai_presets_bundled
Presets bundled with the terrain, see [AI Presets] section in .terrn2 file format.
Definition
GUI_TopMenubar.h:108
RoR::GUI::TopMenubar::m_open_menu
TopMenu m_open_menu
Definition
GUI_TopMenubar.h:139
RoR::GUI::TopMenubar::PANEL_HOVERBOX_HEIGHT
const float PANEL_HOVERBOX_HEIGHT
Definition
GUI_TopMenubar.h:50
RoR::GUI::TopMenubar::tuning_savebox_overwrite
bool tuning_savebox_overwrite
Status of "Overwrite?" checkbox.
Definition
GUI_TopMenubar.h:118
RoR::GUI::TopMenubar::ai_presets_extern_fetching
bool ai_presets_extern_fetching
True if the (down)load of 'extern' waypoints is in progress.
Definition
GUI_TopMenubar.h:106
RoR::GUI::TopMenubar::TUNING_SUBJECTID_USE_NAME
const int TUNING_SUBJECTID_USE_NAME
Definition
GUI_TopMenubar.h:57
RoR::GUI::TopMenubar::m_terrn_import_started
bool m_terrn_import_started
Definition
GUI_TopMenubar.h:150
RoR::GUI::TopMenubar::DrawMpUserToActorList
void DrawMpUserToActorList(RoRnet::UserInfo &user)
Definition
GUI_TopMenubar.cpp:2122
RoR::GUI::TopMenubar::tuning_conflicts
AddonPartConflictVec tuning_conflicts
Conflicts between eligible addonparts tweaking the same element.
Definition
GUI_TopMenubar.h:114
RoR::GUI::TopMenubar::DrawActorListSinglePlayer
void DrawActorListSinglePlayer()
Definition
GUI_TopMenubar.cpp:2192
RoR::GUI::TopMenubar::TUNING_HOLDTOCONFIRM_TIMELIMIT
const float TUNING_HOLDTOCONFIRM_TIMELIMIT
Delete button must be held for several sec to confirm.
Definition
GUI_TopMenubar.h:120
RoR::GUI::TopMenubar::m_daytime
float m_daytime
Definition
GUI_TopMenubar.h:147
RoR::GUI::TopMenubar::ai_presets_extern
rapidjson::Document ai_presets_extern
Externally provided presets (GitHub repo or local 'savegames/waypoints.json' file).
Definition
GUI_TopMenubar.h:105
RoR::GUI::TopMenubar::GREEN_TEXT
const ImVec4 GREEN_TEXT
Definition
GUI_TopMenubar.h:53
RoR::GUI::TopMenubar::m_quicksave_name
std::string m_quicksave_name
Definition
GUI_TopMenubar.h:151
RoR::GUI::TopMenubar::ai_presets_all
rapidjson::Document ai_presets_all
The full list of presets, used for display. Needs to be refreshed when terrain is loaded.
Definition
GUI_TopMenubar.h:104
RoR::GUI::TopMenubar::RefreshTuningMenu
void RefreshTuningMenu()
Definition
GUI_TopMenubar.cpp:2616
RoR::GUI::TopMenubar::m_open_menu_hoverbox_max
ImVec2 m_open_menu_hoverbox_max
Definition
GUI_TopMenubar.h:138
RoR::GUI::TopMenubar::ai_times
int ai_times
Definition
GUI_TopMenubar.h:74
RoR::GUI::TopMenubar::ai_skin2
std::string ai_skin2
Definition
GUI_TopMenubar.h:92
RoR::GUI::TopMenubar::ai_select2
bool ai_select2
Definition
GUI_TopMenubar.h:88
RoR::GUI::TopMenubar::ai_dname
Ogre::String ai_dname
Definition
GUI_TopMenubar.h:79
RoR::GUI::TopMenubar::ai_times_prev
int ai_times_prev
Definition
GUI_TopMenubar.h:97
RoR::GUI::TopMenubar::ai_position_scheme_prev
int ai_position_scheme_prev
Definition
GUI_TopMenubar.h:96
RoR::GUI::TopMenubar::tuning_addonparts
std::vector< CacheEntryPtr > tuning_addonparts
Addonparts eligible for current actor, both matched by GUID and force-installed by user via [browse a...
Definition
GUI_TopMenubar.h:112
RoR::GUI::TopMenubar::MENU_Y_OFFSET
const float MENU_Y_OFFSET
Definition
GUI_TopMenubar.h:49
RoR::GUI::TopMenubar::ai_waypoints
std::vector< ai_events > ai_waypoints
Definition
GUI_TopMenubar.h:71
RoR::GUI::TopMenubar::DrawTuningBoxedSubjectIdInline
void DrawTuningBoxedSubjectIdInline(int subject_id)
Definition
GUI_TopMenubar.cpp:2747
RoR::GUI::TopMenubar::RefreshAiPresets
void RefreshAiPresets()
Refresh the list of presets, used for display. Needs to be called when terrain is loaded.
Definition
GUI_TopMenubar.cpp:2595
RoR::GUI::TopMenubar::tuning_rwidget_cursorx_min
float tuning_rwidget_cursorx_min
Avoid drawing right-side widgets ('Delete' button or 'Protected' chk) over saved tuneup names.
Definition
GUI_TopMenubar.h:121
RoR::GUI::TopMenubar::ai_menu
bool ai_menu
Definition
GUI_TopMenubar.h:85
RoR::GUI::TopMenubar::ai_presets_extern_error
std::string ai_presets_extern_error
Error message from the (down)load of 'extern' waypoints.
Definition
GUI_TopMenubar.h:107
RoR::GUI::TopMenubar::tuning_actor
ActorPtr tuning_actor
Detecting actor change to update cached values.
Definition
GUI_TopMenubar.h:111
RoR::GUI::TopMenubar::RED_TEXT
const ImVec4 RED_TEXT
Definition
GUI_TopMenubar.h:55
RoR::GUI::TopMenubar::ai_position_scheme
int ai_position_scheme
Definition
GUI_TopMenubar.h:77
RoR::GUI::TopMenubar::DrawSpecialStateBox
void DrawSpecialStateBox(float top_offset)
Definition
GUI_TopMenubar.cpp:2260
RoR::GUI::TopMenubar::ai_distance
int ai_distance
Definition
GUI_TopMenubar.h:76
RoR::GUI::TopMenubar::~TopMenubar
~TopMenubar()
Definition
GUI_TopMenubar.cpp:149
RoR::GUI::TopMenubar::IsVisible
bool IsVisible()
Definition
GUI_TopMenubar.h:68
RoR::GUI::TopMenubar::IsMenuEnabled
bool IsMenuEnabled(TopMenu which)
Definition
GUI_TopMenubar.cpp:2820
RoR::GUI::TopMenubar::tuning_savebox_visible
bool tuning_savebox_visible
User pressed 'save active' to open savebox.
Definition
GUI_TopMenubar.h:117
RoR::GUI::TopMenubar::LoadBundledAiPresets
void LoadBundledAiPresets(TerrainPtr terrain)
Loads JSON files from [AI Presets] section in .terrn2 file format.
Definition
GUI_TopMenubar.cpp:2547
RoR::GUI::TopMenubar::m_state_box
StateBox m_state_box
Definition
GUI_TopMenubar.h:143
RoR::GUI::TopMenubar::ai_mode_prev
int ai_mode_prev
Definition
GUI_TopMenubar.h:98
RoR::GUI::TopMenubar::ai_speed_prev
int ai_speed_prev
Definition
GUI_TopMenubar.h:95
RoR::GUI::TopMenubar::FetchExternAiPresetsOnBackground
void FetchExternAiPresetsOnBackground()
Initiate threaded (down)load of 'extern' waypoints from GitHub repo.
Definition
GUI_TopMenubar.cpp:2586
RoR::GUI::TopMenubar::DrawTuningForceRemoveControls
void DrawTuningForceRemoveControls(const int subject_id, const std::string &name, const bool is_unwanted, const bool is_force_removed, ModifyProjectRequestType request_type_set, ModifyProjectRequestType request_type_reset)
Definition
GUI_TopMenubar.cpp:2762
RoR::GUI::TopMenubar::ai_fname2
Ogre::String ai_fname2
Definition
GUI_TopMenubar.h:89
RoR::GUI::TopMenubar::TopMenu
TopMenu
Definition
GUI_TopMenubar.h:59
RoR::GUI::TopMenubar::TopMenu::TOPMENU_ACTORS
@ TOPMENU_ACTORS
RoR::GUI::TopMenubar::TopMenu::TOPMENU_SAVEGAMES
@ TOPMENU_SAVEGAMES
RoR::GUI::TopMenubar::TopMenu::TOPMENU_AI
@ TOPMENU_AI
RoR::GUI::TopMenubar::TopMenu::TOPMENU_TOOLS
@ TOPMENU_TOOLS
RoR::GUI::TopMenubar::TopMenu::TOPMENU_SIM
@ TOPMENU_SIM
RoR::GUI::TopMenubar::TopMenu::TOPMENU_TUNING
@ TOPMENU_TUNING
RoR::GUI::TopMenubar::TopMenu::TOPMENU_NONE
@ TOPMENU_NONE
RoR::GUI::TopMenubar::TopMenu::TOPMENU_SETTINGS
@ TOPMENU_SETTINGS
RoR::GUI::TopMenubar::ai_mode
int ai_mode
Definition
GUI_TopMenubar.h:84
RoR::GUI::TopMenubar::MENU_HOVERBOX_PADDING
const ImVec2 MENU_HOVERBOX_PADDING
Definition
GUI_TopMenubar.h:56
RoR::GUI::TopMenubar::tuning_hovered_addonpart
CacheEntryPtr tuning_hovered_addonpart
Definition
GUI_TopMenubar.h:122
RoR::Str
Wrapper for classic c-string (local buffer) Refresher: strlen() excludes '\0' terminator; strncat() A...
Definition
Str.h:36
RoR
Definition
AppContext.h:36
RoR::ModifyProjectRequestType
ModifyProjectRequestType
Definition
CacheSystem.h:225
RoR::AddonPartConflictVec
std::vector< AddonPartConflict > AddonPartConflictVec
Definition
AddonPartFileFormat.h:53
RoR::CacheQuery
Definition
CacheSystem.h:168
RoRnet::UserInfo
Definition
RoRnet.h:190
ai_events
Definition
GUI_TopMenubar.h:38
ai_events::position
Ogre::Vector3 position
Definition
GUI_TopMenubar.h:39
ai_events::speed
int speed
Definition
GUI_TopMenubar.h:40
Generated on Fri Jan 2 2026 09:37:02 for Rigs of Rods by
1.9.8