From 5e2ec981c9dcdf9be1720e885449e390b2cd0e66 Mon Sep 17 00:00:00 2001 From: Yimura Date: Tue, 29 Dec 2020 23:18:09 +0100 Subject: [PATCH] feat(TabVehicle): Added a speedo meter (km/h & mph) --- BigBaseV2/src/features/speedo_meter.cpp | 48 +++++++++++++++++++++++ BigBaseV2/src/gui/tab_bar/tab_vehicle.cpp | 22 +++++++++++ BigBaseV2/src/settings.h | 1 + 3 files changed, 71 insertions(+) create mode 100644 BigBaseV2/src/features/speedo_meter.cpp diff --git a/BigBaseV2/src/features/speedo_meter.cpp b/BigBaseV2/src/features/speedo_meter.cpp new file mode 100644 index 00000000..2b1036a2 --- /dev/null +++ b/BigBaseV2/src/features/speedo_meter.cpp @@ -0,0 +1,48 @@ +#include "features.hpp" + +namespace big +{ + void features::speedo_meter() + { + static const float x = .9f; + static const float y = .72f; + + int64_t speedo_type = g_settings.options["speedo_type"].get(); + + if (speedo_type == 0 || HUD::IS_PAUSE_MENU_ACTIVE()) return; + + Vehicle veh = PED::GET_VEHICLE_PED_IS_IN(PLAYER::GET_PLAYER_PED_SCRIPT_INDEX(g_playerId), false); + + if (veh == 0) return; + + char speed_type[16], speed[32]; + float veh_speed = ENTITY::GET_ENTITY_SPEED(veh); + switch (speedo_type) + { + case 1: + veh_speed *= 3.6; + strcpy(speed_type, "kph"); + break; + case 2: + veh_speed *= 2.2369; + strcpy(speed_type, "mph"); + break; + } + + sprintf(speed, "%d", (int)veh_speed); + + HUD::SET_TEXT_FONT(2); + HUD::SET_TEXT_SCALE(.9f, .9f); + HUD::SET_TEXT_OUTLINE(); + HUD::BEGIN_TEXT_COMMAND_DISPLAY_TEXT("STRING"); + HUD::ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(speed); + HUD::END_TEXT_COMMAND_DISPLAY_TEXT(x, y + .04f, 1); + + HUD::SET_TEXT_FONT(2); + HUD::SET_TEXT_SCALE(.91f, .91f); + HUD::SET_TEXT_OUTLINE(); + HUD::BEGIN_TEXT_COMMAND_DISPLAY_TEXT("STRING"); + HUD::ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(speed_type); + HUD::END_TEXT_COMMAND_DISPLAY_TEXT(x, y, 1); + } +} \ No newline at end of file diff --git a/BigBaseV2/src/gui/tab_bar/tab_vehicle.cpp b/BigBaseV2/src/gui/tab_bar/tab_vehicle.cpp index 56bace6c..9832ec76 100644 --- a/BigBaseV2/src/gui/tab_bar/tab_vehicle.cpp +++ b/BigBaseV2/src/gui/tab_bar/tab_vehicle.cpp @@ -7,6 +7,28 @@ namespace big { if (ImGui::BeginTabItem("Vehicle")) { + ImGui::Text("Speedometer:"); + ImGui::SameLine(); + static const char* speedo_options[] = { "None", "km/h", "mph" }; + if (ImGui::BeginCombo("##speedometer", speedo_options[g_settings.options["speedo_type"].get()])) + { + for (uint8_t i = 0; i < IM_ARRAYSIZE(speedo_options); i++) + { + bool is_selected = (g_settings.options["speedo_type"].get() == i); + if (ImGui::Selectable(speedo_options[i], is_selected)) + { + *g_settings.options["speedo_type"].get() = i; + g_settings.save(); + } + if (is_selected) + ImGui::SetItemDefaultFocus(); + } + + ImGui::EndCombo(); + } + + ImGui::Separator(); + if (ImGui::Button("Auto Pilot")) { QUEUE_JOB_BEGIN_CLAUSE() diff --git a/BigBaseV2/src/settings.h b/BigBaseV2/src/settings.h index 41ba2d1a..35872a21 100644 --- a/BigBaseV2/src/settings.h +++ b/BigBaseV2/src/settings.h @@ -25,6 +25,7 @@ namespace big "ragdoll": false, "rank": 6969, "reveal_players": false, + "speedo_type": 0, "spoof_rank": false, "sticky_tyres": false, "super_sprint": false,