From 35d1869d330ab4bd9e58cbc80e11ac6ce91121d9 Mon Sep 17 00:00:00 2001 From: Yimura Date: Tue, 3 Aug 2021 20:29:54 +0200 Subject: [PATCH] feat(Vehicle): Added ability to change position of speedo meter --- .../backend/looped/vehicle/speedo_meter.cpp | 11 +++----- BigBaseV2/src/core/globals.hpp | 26 ++++++++++++++++--- BigBaseV2/src/gui/window/main/tab_vehicle.cpp | 20 ++++++++++++-- 3 files changed, 45 insertions(+), 12 deletions(-) diff --git a/BigBaseV2/src/backend/looped/vehicle/speedo_meter.cpp b/BigBaseV2/src/backend/looped/vehicle/speedo_meter.cpp index 4047a369..53f72058 100644 --- a/BigBaseV2/src/backend/looped/vehicle/speedo_meter.cpp +++ b/BigBaseV2/src/backend/looped/vehicle/speedo_meter.cpp @@ -6,10 +6,7 @@ namespace big { void looped::vehicle_speedo_meter() { - static const float x = .9f; - static const float y = .72f; - - SpeedoMeter speedo_type = g.vehicle.speedo_meter; + SpeedoMeter speedo_type = g.vehicle.speedo_meter.type; if (speedo_type == SpeedoMeter::DISABLED || HUD::IS_PAUSE_MENU_ACTIVE() || HUD::IS_WARNING_MESSAGE_ACTIVE() || CAM::IS_SCREEN_FADED_OUT() || CAM::IS_SCREEN_FADING_OUT() || CAM::IS_SCREEN_FADING_IN()) return; @@ -31,20 +28,20 @@ namespace big break; } - sprintf(speed, "%*d", 3, (int)veh_speed); + sprintf(speed, "%*d", g.vehicle.speedo_meter.left_side ? 0 : 3, (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::END_TEXT_COMMAND_DISPLAY_TEXT(g.vehicle.speedo_meter.x, g.vehicle.speedo_meter.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); + HUD::END_TEXT_COMMAND_DISPLAY_TEXT(g.vehicle.speedo_meter.x, g.vehicle.speedo_meter.y, 1); } } \ No newline at end of file diff --git a/BigBaseV2/src/core/globals.hpp b/BigBaseV2/src/core/globals.hpp index ede30606..2cd1acca 100644 --- a/BigBaseV2/src/core/globals.hpp +++ b/BigBaseV2/src/core/globals.hpp @@ -60,8 +60,17 @@ struct globals { }; struct vehicle { + struct speedo_meter { + SpeedoMeter type = SpeedoMeter::DISABLED; + + float x = .9f; + float y = .72f; + + bool left_side = false; + }; + bool horn_boost = false; - SpeedoMeter speedo_meter = SpeedoMeter::DISABLED; + speedo_meter speedo_meter{}; }; struct weapons { @@ -127,7 +136,11 @@ struct globals { this->self.frame_flags.super_jump = j["self"]["frame_flags"]["super_jump"]; this->vehicle.horn_boost = j["vehicle"]["horn_boost"]; - this->vehicle.speedo_meter = (SpeedoMeter)j["vehicle"]["speedo_meter"]; + + this->vehicle.speedo_meter.type = (SpeedoMeter)j["vehicle"]["speedo_meter"]["type"]; + this->vehicle.speedo_meter.left_side = j["vehicle"]["speedo_meter"]["left_side"]; + this->vehicle.speedo_meter.x = j["vehicle"]["speedo_meter"]["position_x"]; + this->vehicle.speedo_meter.y = j["vehicle"]["speedo_meter"]["position_y"]; this->weapons.custom_weapon = (CustomWeapon)j["weapons"]["custom_weapon"]; @@ -187,7 +200,14 @@ struct globals { { "vehicle", { { "horn_boost", this->vehicle.horn_boost }, - { "speedo_meter", (int)this->vehicle.speedo_meter } + { + "speedo_meter", { + { "type", (int)this->vehicle.speedo_meter.type }, + { "left_side", this->vehicle.speedo_meter.left_side }, + { "position_x", this->vehicle.speedo_meter.x }, + { "position_y", this->vehicle.speedo_meter.y } + } + } } }, { diff --git a/BigBaseV2/src/gui/window/main/tab_vehicle.cpp b/BigBaseV2/src/gui/window/main/tab_vehicle.cpp index e68c9c16..d7b4c5f5 100644 --- a/BigBaseV2/src/gui/window/main/tab_vehicle.cpp +++ b/BigBaseV2/src/gui/window/main/tab_vehicle.cpp @@ -52,15 +52,31 @@ namespace big if (ImGui::TreeNode("Speedo Meter")) { - SpeedoMeter selected = g.vehicle.speedo_meter; + SpeedoMeter selected = g.vehicle.speedo_meter.type; + ImGui::Text("Position"); + + float pos[2]; + pos[0] = g.vehicle.speedo_meter.x; + pos[1] = g.vehicle.speedo_meter.y; + if (ImGui::SliderFloat2("###speedo_pos", pos, .001f, .999f, "%.3f")) + { + g.vehicle.speedo_meter.x = pos[0]; + g.vehicle.speedo_meter.y = pos[1]; + } + + ImGui::Checkbox("Left Sided", &g.vehicle.speedo_meter.left_side); + + ImGui::Separator(); + + ImGui::Text("Type:"); if (ImGui::BeginCombo("###speedo_type", speedo_meters[(int)selected].name)) { for (const speedo_meter &speedo : speedo_meters) { if (ImGui::Selectable(speedo.name, speedo.id == selected)) { - g.vehicle.speedo_meter = speedo.id; + g.vehicle.speedo_meter.type = speedo.id; } if (speedo.id == selected)