37 #include <imgui_internal.h>
46 ImGuiWindowFlags flags = ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoTitleBar;
47 ImGui::SetNextWindowPos(ImVec2(theme.
screen_edge_padding.x - ImGui::GetStyle().WindowPadding.x, 100.f));
48 ImVec2 window_pos = ImVec2(158, 0);
49 ImGui::SetNextWindowSize(window_pos);
50 ImGui::PushStyleColor(ImGuiCol_WindowBg, ImVec4(0,0,0,0));
57 bool is_visible =
false;
64 fmt::format(
_LC(
"VehicleButtons",
"Hover the mouse on the left to see controls")),
"lightbulb.png");
74 (ImGui::GetIO().MousePos.x <= window_pos.x + ImGui::GetStyle().WindowPadding.x) && ImGui::GetIO().MousePos.y <= ImGui::GetIO().DisplaySize.y && !ImGui::IsMouseDown(1))
79 ImGui::Begin(
"VehicleButtons",
nullptr, flags);
81 ImGui::SetCursorPosX(ImGui::GetCursorPosX() + ImGui::GetStyle().ItemInnerSpacing.x);
82 if (is_visible && ImGui::CollapsingHeader(
_LC(
"VehicleButtons",
"Main Controls")))
128 ImGui::SetCursorPosX(ImGui::GetCursorPosX() + ImGui::GetStyle().ItemInnerSpacing.x);
129 if (is_visible && ImGui::CollapsingHeader(
_LC(
"VehicleButtons",
"Custom Lights")))
134 ImGui::SetCursorPosX(ImGui::GetCursorPosX() + ImGui::GetStyle().ItemInnerSpacing.x);
135 if (is_visible && ImGui::CollapsingHeader(
_LC(
"VehicleButtons",
"Commands")))
141 ImGui::PopStyleColor(1);
146 bool has_headlight =
false;
147 for (
int i = 0; i < actorx->
GetActor()->ar_flares.size(); i++)
151 has_headlight =
true;
157 ImGui::PushItemFlag(ImGuiItemFlags_Disabled,
true);
158 ImGui::PushStyleVar(ImGuiStyleVar_Alpha, ImGui::GetStyle().Alpha * 0.5f);
162 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_ButtonActive]);
166 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_Button]);
169 if (ImGui::ImageButton(
reinterpret_cast<ImTextureID
>(
m_headlight_icon->getHandle()), ImVec2(24, 24)))
176 ImGui::PopItemFlag();
177 ImGui::PopStyleVar();
181 ImGui::PopStyleColor();
184 if (ImGui::IsItemHovered())
186 ImGui::BeginTooltip();
194 bool has_blink =
false;
195 for (
int i = 0; i < actorx->
GetActor()->ar_flares.size(); i++)
205 ImGui::PushItemFlag(ImGuiItemFlags_Disabled,
true);
206 ImGui::PushStyleVar(ImGuiStyleVar_Alpha, ImGui::GetStyle().Alpha * 0.5f);
210 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_ButtonActive]);
214 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_Button]);
217 if (ImGui::ImageButton(
reinterpret_cast<ImTextureID
>(
m_left_blinker_icon->getHandle()), ImVec2(24, 24)))
224 ImGui::PopItemFlag();
225 ImGui::PopStyleVar();
229 ImGui::PopStyleColor();
232 if (ImGui::IsItemHovered())
234 ImGui::BeginTooltip();
242 bool has_blink =
false;
243 for (
int i = 0; i < actorx->
GetActor()->ar_flares.size(); i++)
253 ImGui::PushItemFlag(ImGuiItemFlags_Disabled,
true);
254 ImGui::PushStyleVar(ImGuiStyleVar_Alpha, ImGui::GetStyle().Alpha * 0.5f);
258 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_ButtonActive]);
262 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_Button]);
265 if (ImGui::ImageButton(
reinterpret_cast<ImTextureID
>(
m_right_blinker_icon->getHandle()), ImVec2(24, 24)))
272 ImGui::PopItemFlag();
273 ImGui::PopStyleVar();
277 ImGui::PopStyleColor();
280 if (ImGui::IsItemHovered())
282 ImGui::BeginTooltip();
290 bool has_blink =
false;
291 for (
int i = 0; i < actorx->
GetActor()->ar_flares.size(); i++)
301 ImGui::PushItemFlag(ImGuiItemFlags_Disabled,
true);
302 ImGui::PushStyleVar(ImGuiStyleVar_Alpha, ImGui::GetStyle().Alpha * 0.5f);
306 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_ButtonActive]);
310 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_Button]);
313 if (ImGui::ImageButton(
reinterpret_cast<ImTextureID
>(
m_warning_light_icon->getHandle()), ImVec2(24, 24)))
320 ImGui::PopItemFlag();
321 ImGui::PopStyleVar();
325 ImGui::PopStyleColor();
328 if (ImGui::IsItemHovered())
330 ImGui::BeginTooltip();
340 ImGui::PushItemFlag(ImGuiItemFlags_Disabled,
true);
341 ImGui::PushStyleVar(ImGuiStyleVar_Alpha, ImGui::GetStyle().Alpha * 0.5f);
345 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_ButtonActive]);
349 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_Button]);
354 if (ImGui::ImageButton(
reinterpret_cast<ImTextureID
>(
m_horn_icon->getHandle()), ImVec2(24, 24)))
363 ImGui::ImageButton(
reinterpret_cast<ImTextureID
>(
m_horn_icon->getHandle()), ImVec2(24, 24));
364 if (ImGui::IsItemActive())
376 ImGui::PopItemFlag();
377 ImGui::PopStyleVar();
381 ImGui::PopStyleColor();
384 if (ImGui::IsItemHovered())
386 ImGui::BeginTooltip();
396 ImGui::PushItemFlag(ImGuiItemFlags_Disabled,
true);
397 ImGui::PushStyleVar(ImGuiStyleVar_Alpha, ImGui::GetStyle().Alpha * 0.5f);
401 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_ButtonActive]);
405 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_Button]);
408 if (ImGui::ImageButton(
reinterpret_cast<ImTextureID
>(
m_mirror_icon->getHandle()), ImVec2(24, 24)))
422 ImGui::PopItemFlag();
423 ImGui::PopStyleVar();
427 ImGui::PopStyleColor();
430 if (ImGui::IsItemHovered())
432 ImGui::BeginTooltip();
442 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_ButtonActive]);
446 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_Button]);
449 if (ImGui::ImageButton(
reinterpret_cast<ImTextureID
>(
m_repair_icon->getHandle()), ImVec2(24, 24)))
457 ImGui::PopStyleColor();
459 if (ImGui::IsItemHovered())
461 ImGui::BeginTooltip();
471 ImGui::PushItemFlag(ImGuiItemFlags_Disabled,
true);
472 ImGui::PushStyleVar(ImGuiStyleVar_Alpha, ImGui::GetStyle().Alpha * 0.5f);
476 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_ButtonActive]);
480 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_Button]);
483 if (ImGui::ImageButton(
reinterpret_cast<ImTextureID
>(
m_parking_brake_icon->getHandle()), ImVec2(24, 24)))
490 ImGui::PopItemFlag();
491 ImGui::PopStyleVar();
495 ImGui::PopStyleColor();
498 if (ImGui::IsItemHovered())
500 ImGui::BeginTooltip();
510 ImGui::PushItemFlag(ImGuiItemFlags_Disabled,
true);
511 ImGui::PushStyleVar(ImGuiStyleVar_Alpha, ImGui::GetStyle().Alpha * 0.5f);
515 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_ButtonActive]);
519 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_Button]);
529 ImGui::PopItemFlag();
530 ImGui::PopStyleVar();
534 ImGui::PopStyleColor();
537 if (ImGui::IsItemHovered())
539 ImGui::BeginTooltip();
549 ImGui::PushItemFlag(ImGuiItemFlags_Disabled,
true);
550 ImGui::PushStyleVar(ImGuiStyleVar_Alpha, ImGui::GetStyle().Alpha * 0.5f);
554 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_ButtonActive]);
558 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_Button]);
561 if (ImGui::ImageButton(
reinterpret_cast<ImTextureID
>(
m_abs_icon->getHandle()), ImVec2(24, 24)))
568 ImGui::PopItemFlag();
569 ImGui::PopStyleVar();
573 ImGui::PopStyleColor();
576 if (ImGui::IsItemHovered())
578 ImGui::BeginTooltip();
588 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_ButtonActive]);
592 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_Button]);
595 if (ImGui::ImageButton(
reinterpret_cast<ImTextureID
>(
m_physics_icon->getHandle()), ImVec2(24, 24)))
607 ImGui::PopStyleColor();
609 if (ImGui::IsItemHovered())
611 ImGui::BeginTooltip();
621 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_ButtonActive]);
625 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_Button]);
628 if (ImGui::ImageButton(
reinterpret_cast<ImTextureID
>(
m_actor_physics_icon->getHandle()), ImVec2(24, 24)))
637 ImGui::PopStyleColor();
639 if (ImGui::IsItemHovered())
641 ImGui::BeginTooltip();
651 ImGui::PushItemFlag(ImGuiItemFlags_Disabled,
true);
652 ImGui::PushStyleVar(ImGuiStyleVar_Alpha, ImGui::GetStyle().Alpha * 0.5f);
656 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_ButtonActive]);
660 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_Button]);
663 if (ImGui::ImageButton(
reinterpret_cast<ImTextureID
>(
m_a_icon->getHandle()), ImVec2(24, 24)))
671 ImGui::PopItemFlag();
672 ImGui::PopStyleVar();
676 ImGui::PopStyleColor();
679 if (ImGui::IsItemHovered())
681 ImGui::BeginTooltip();
691 ImGui::PushItemFlag(ImGuiItemFlags_Disabled,
true);
692 ImGui::PushStyleVar(ImGuiStyleVar_Alpha, ImGui::GetStyle().Alpha * 0.5f);
696 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_ButtonActive]);
700 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_Button]);
703 if (ImGui::ImageButton(
reinterpret_cast<ImTextureID
>(
m_w_icon->getHandle()), ImVec2(24, 24)))
711 ImGui::PopItemFlag();
712 ImGui::PopStyleVar();
716 ImGui::PopStyleColor();
719 if (ImGui::IsItemHovered())
721 ImGui::BeginTooltip();
732 ImGui::PushItemFlag(ImGuiItemFlags_Disabled,
true);
733 ImGui::PushStyleVar(ImGuiStyleVar_Alpha, ImGui::GetStyle().Alpha * 0.5f);
737 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_ButtonActive]);
741 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_Button]);
744 if (ImGui::ImageButton(
reinterpret_cast<ImTextureID
>(
m_m_icon->getHandle()), ImVec2(24, 24)))
753 ImGui::PopItemFlag();
754 ImGui::PopStyleVar();
758 ImGui::PopStyleColor();
761 if (ImGui::IsItemHovered())
763 ImGui::BeginTooltip();
774 ImGui::PushItemFlag(ImGuiItemFlags_Disabled,
true);
775 ImGui::PushStyleVar(ImGuiStyleVar_Alpha, ImGui::GetStyle().Alpha * 0.5f);
779 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_ButtonActive]);
783 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_Button]);
786 if (ImGui::ImageButton(
reinterpret_cast<ImTextureID
>(
m_g_icon->getHandle()), ImVec2(24, 24)))
795 ImGui::PopItemFlag();
796 ImGui::PopStyleVar();
800 ImGui::PopStyleColor();
803 if (ImGui::IsItemHovered())
805 ImGui::BeginTooltip();
815 ImGui::PushItemFlag(ImGuiItemFlags_Disabled,
true);
816 ImGui::PushStyleVar(ImGuiStyleVar_Alpha, ImGui::GetStyle().Alpha * 0.5f);
820 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_ButtonActive]);
824 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_Button]);
827 if (ImGui::ImageButton(
reinterpret_cast<ImTextureID
>(
m_particle_icon->getHandle()), ImVec2(24, 24)))
834 ImGui::PopItemFlag();
835 ImGui::PopStyleVar();
839 ImGui::PopStyleColor();
842 if (ImGui::IsItemHovered())
844 ImGui::BeginTooltip();
852 bool has_beacon =
false;
855 if (prop.pp_beacon_type != 0)
863 ImGui::PushItemFlag(ImGuiItemFlags_Disabled,
true);
864 ImGui::PushStyleVar(ImGuiStyleVar_Alpha, ImGui::GetStyle().Alpha * 0.5f);
868 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_ButtonActive]);
872 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_Button]);
875 if (ImGui::ImageButton(
reinterpret_cast<ImTextureID
>(
m_beacons_icon->getHandle()), ImVec2(24, 24)))
882 ImGui::PopItemFlag();
883 ImGui::PopStyleVar();
887 ImGui::PopStyleColor();
890 if (ImGui::IsItemHovered())
892 ImGui::BeginTooltip();
902 ImGui::PushItemFlag(ImGuiItemFlags_Disabled,
true);
903 ImGui::PushStyleVar(ImGuiStyleVar_Alpha, ImGui::GetStyle().Alpha * 0.5f);
907 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_ButtonActive]);
911 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_Button]);
914 if (ImGui::ImageButton(
reinterpret_cast<ImTextureID
>(
m_shift_icon->getHandle()), ImVec2(24, 24)))
921 const char* msg =
nullptr;
941 ImGui::PopItemFlag();
942 ImGui::PopStyleVar();
946 ImGui::PopStyleColor();
949 if (ImGui::IsItemHovered())
951 ImGui::BeginTooltip();
990 ImGui::PushItemFlag(ImGuiItemFlags_Disabled,
true);
991 ImGui::PushStyleVar(ImGuiStyleVar_Alpha, ImGui::GetStyle().Alpha * 0.5f);
995 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_ButtonActive]);
999 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_Button]);
1002 if (ImGui::ImageButton(
reinterpret_cast<ImTextureID
>(
m_engine_icon->getHandle()), ImVec2(24, 24)))
1016 ImGui::PopItemFlag();
1017 ImGui::PopStyleVar();
1021 ImGui::PopStyleColor();
1024 if (ImGui::IsItemHovered())
1026 ImGui::BeginTooltip();
1035 ImGui::EndTooltip();
1041 int num_custom_flares = 0;
1048 num_custom_flares++;
1050 if (i == 5 || i == 9)
1055 std::string label =
"L" + std::to_string(i + 1);
1059 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_ButtonActive]);
1063 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_Button]);
1066 if (ImGui::Button(label.c_str(), ImVec2(32, 0)))
1070 if (ImGui::IsItemHovered())
1072 ImGui::BeginTooltip();
1074 ImGui::EndTooltip();
1078 ImGui::PopStyleColor();
1082 if (num_custom_flares > 0)
1101 std::string label =
"C" + std::to_string(i);
1106 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_ButtonActive]);
1110 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_Button]);
1115 ImGui::Button(label.c_str(), ImVec2(32, 0));
1116 if (ImGui::IsItemActive())
1124 if (ImGui::IsItemHovered())
1126 ImGui::BeginTooltip();
1127 std::string desc =
"unknown function";
1135 ImGui::EndTooltip();
1139 if (ImGui::GetCursorPos().
x > 150)
1144 ImGui::PopStyleColor();
1151 if (ImGui::ImageButton(
reinterpret_cast<ImTextureID
>(
m_camera_icon->getHandle()), ImVec2(24, 24)))
1158 if (ImGui::IsItemHovered())
1160 ImGui::BeginTooltip();
1162 ImGui::EndTooltip();
1170 ImGui::PushItemFlag(ImGuiItemFlags_Disabled,
true);
1171 ImGui::PushStyleVar(ImGuiStyleVar_Alpha, ImGui::GetStyle().Alpha * 0.5f);
1175 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_ButtonActive]);
1179 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_Button]);
1182 if (ImGui::ImageButton(
reinterpret_cast<ImTextureID
>(
m_lock_icon->getHandle()), ImVec2(24, 24)))
1199 ImGui::PopItemFlag();
1200 ImGui::PopStyleVar();
1204 ImGui::PopStyleColor();
1207 if (ImGui::IsItemHovered())
1209 ImGui::BeginTooltip();
1211 ImGui::EndTooltip();
1219 ImGui::PushItemFlag(ImGuiItemFlags_Disabled,
true);
1220 ImGui::PushStyleVar(ImGuiStyleVar_Alpha, ImGui::GetStyle().Alpha * 0.5f);
1224 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_ButtonActive]);
1228 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_Button]);
1231 if (ImGui::ImageButton(
reinterpret_cast<ImTextureID
>(
m_secure_icon->getHandle()), ImVec2(24, 24)))
1238 ImGui::PopItemFlag();
1239 ImGui::PopStyleVar();
1243 ImGui::PopStyleColor();
1246 if (ImGui::IsItemHovered())
1248 ImGui::BeginTooltip();
1250 ImGui::EndTooltip();
1258 ImGui::PushItemFlag(ImGuiItemFlags_Disabled,
true);
1259 ImGui::PushStyleVar(ImGuiStyleVar_Alpha, ImGui::GetStyle().Alpha * 0.5f);
1263 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_ButtonActive]);
1267 ImGui::PushStyleColor(ImGuiCol_Button, ImGui::GetStyle().Colors[ImGuiCol_Button]);
1270 if (ImGui::ImageButton(
reinterpret_cast<ImTextureID
>(
m_cruise_control_icon->getHandle()), ImVec2(24, 24)))
1277 ImGui::PopItemFlag();
1278 ImGui::PopStyleVar();
1282 ImGui::PopStyleColor();
1285 if (ImGui::IsItemHovered())
1287 ImGui::BeginTooltip();
1289 ImGui::EndTooltip();