diff --git a/README.md b/README.md index e0f7cca..0b29323 100644 --- a/README.md +++ b/README.md @@ -53,21 +53,6 @@ Install [Crash info](https://www.mixmods.com.br/2021/06/crashinfo.html) & reprod You can either open a issue here or directly contact me on discord (Recommended). - -## Required to build -1. [Build Tools 2022](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) -2. [DirectX9 SDK](https://www.microsoft.com/en-us/download/details.aspx?id=6812) -4. [Plugin SDK](https://github.com/DK22Pac/plugin-sdk) -5. [Premake5](https://premake.github.io/) - Comes with already. - -## Projects used -1. [ImGui](https://github.com/ocornut/imgui) -2. [Kiero](https://github.com/Rebzzel/kiero) -3. [MinHook](https://github.com/TsudaKageyu/minhook) -4. [Plugin SDK](https://github.com/DK22Pac/plugin-sdk) - -All credits are given in Menu/About tab. - ## Images
Show Images @@ -92,6 +77,26 @@ All credits are given in Menu/About tab.
+## Submit Translations +*How to translate Cheat Menu to another language* + +The translations are loaded from `CheatMenu/locale/*.json` files. Make a copy of the `English.json` file and translate the texts there to your language. Rename the file to `your_language.json` and make a pull request. + + +## Required to build +1. [Build Tools 2022](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) +2. [DirectX9 SDK](https://www.microsoft.com/en-us/download/details.aspx?id=6812) +4. [Plugin SDK](https://github.com/DK22Pac/plugin-sdk) +5. [Premake5](https://premake.github.io/) - Comes with already. + +## Projects used +1. [ImGui](https://github.com/ocornut/imgui) +2. [Kiero](https://github.com/Rebzzel/kiero) +3. [MinHook](https://github.com/TsudaKageyu/minhook) +4. [Plugin SDK](https://github.com/DK22Pac/plugin-sdk) + +All credits are given in Menu/About tab. + ## How to add ___ to CheatMenu (SA Only) *Be careful about editing 'json' files, especially commas! Check [here](https://en.wikipedia.org/wiki/JSON). Use [Magic TXD](https://gtaforums.com/topic/851436-relopensrc-magictxd/) to open **.txd** files* diff --git a/resource/common/locale/English.json b/resource/common/locale/English.json index c0b8e6b..008b69d 100644 --- a/resource/common/locale/English.json +++ b/resource/common/locale/English.json @@ -239,7 +239,7 @@ "LockControl": "Lock control", "LungCapacity": "Lung capacity", "MaxAppeal": "Max sex appeal", - "MaxArmour" : "Max armour", + "MaxArmour": "Max armour", "MaxHealth": "Max health", "MeeleProof": "Meele proof", "MegaJump": "Mega jump", @@ -287,6 +287,161 @@ "TeleportMarker": "Teleport to marker", "TeleportToCoord": "Teleport to coordinates" }, + "Vehicle": { + "Abs": "Abs", + "ADM": "Anti dive multiplier", + "AggroDriver": "Aggressive driver", + "AimDrive": "Aim while driving", + "All": "All", + "AllNitro": "All cars have nitro", + "AllTaxiNitro": "All taxis have nitro", + "AnimGroup": "Anim group", + "Big": "Big", + "BikeFly": "Bikes fly", + "Black": "Black", + "BlowCar": "Blow up cars", + "BoatFly": "Boats fly", + "BrakeBias": "Brake bias", + "BrakeDecel": "Brake deceleration", + "BulletProof": "Bullet proof", + "CarFly": "Cars fly", + "CarHeavy": "Cars heavy", + "CDM": "Collision damage multiplier", + "CemterMassX": "Centre of mass X", + "CemterMassY": "Centre of mass Y", + "CemterMassZ": "Centre of mass Z", + "Cheap": "Cheap", + "Color": "Color", + "ColorPicker": "Color picker", + "ColProof": "Collision proof", + "Component": "Component", + "Country": "Country", + "Damage": "Damage", + "DampingLvl": "Damping level", + "DensityMul": "Density multiplier", + "DirtLvl": "Dirt level", + "Diseal": "Diseal", + "DmgProof": "Damage proof", + "DmgProofTip": "Every vehicle entered will be damage proof\nBullet, Collision, Explosion, Fire, Meele etc", + "Doors": "Doors", + "DragMult": "Drag multiplier", + "Driver": "Driver", + "DriverTarget": "Driver targetable", + "DriveType": "Drive type", + "DriveWater": "Drive on water", + "Electric": "Electric", + "EngineAccel": "Engine acceleration", + "EngineInertia": "Engine inertia", + "EngineOn": "Engine on", + "EngineType": "Engine type", + "EnterNearVeh": "Enter nearest vehicle as", + "ExplosionProof": "Explosion proof", + "Fast": "Fast", + "FireProof": "Fire proof", + "Fix": "Fix", + "FixCar": "Fix vehicle", + "FlipCar": "Flip vehicle", + "FloatOnHit": "Float away when hit", + "ForceLevel": "Force level", + "ForCurVeh": "For current vehicle,", + "FourWheelDrive": "Four wheel drive", + "FrontLights": "Front lights", + "FrontWheelDrive": "Front wheel drive", + "GreenLights": "Green traffic lights", + "HandlingFlags": "Handling flags", + "HandlingTab": "Handling", + "HighSpeedDamping": "High speed damping", + "HSTarget": "HS targetable", + "HSTargetTip": "Heat Seaker missile can target this", + "InfNitro": "Unlimited nitro", + "InfNitroTip": "Nitro will activate when left clicked\n\n\nEnabling this would disable\nAll cars have nitro\nAll taxis have nitro", + "InstantStop": "Instant stop", + "InvisCar": "Invisible car", + "LessDmg": "Take less damage", + "LessTraffic": "Decreased traffic", + "LightsOn": "Lights on", + "LockDoor": "Lock doors", + "LockSpeed": "Lock speed", + "LockTrainCam": "Lock train camera", + "Long": "Long", + "LowerLimit": "Lower limit", + "Mass": "Mass", + "MatFilter": "Material filter", + "MaxVelocity": "Max velocity", + "MeleeProof": "Melee proof", + "ModelFlags": "Model flags", + "MonValue": "Monetary value", + "NeonsTab": "Neons", + "NoColl": "Disable collisions", + "NoNearVeh": "No nearby vehicles", + "NoParticles": "Disable particles", + "NumGears": "Number of gears", + "Off": "Off", + "On": "On", + "OnlyWheels": "Wheels only", + "Open": "Open", + "Paintjob": "Paintjob", + "Passenger": "Passenger ", + "PentrolTank": "Petrol tank KO", + "PercentSubmerged": "Percent submerged", + "PerfectHandling": "Perfect handling", + "Petrol": "Petrol", + "PetrolTankTip": "Vehicle will blow up if petrol tank is shot", + "Pink": "Pink", + "PlateText": "License plate text", + "Pop": "Pop", + "Primary": "Primary", + "PulsingNeon": "Pulsing neons", + "Quaternary": "Quaternary", + "Radius": "Radius", + "RainbowNeon": "Rainbow neons", + "RainbowNeonMSG": "Rainbow effect to neon lights", + "ReadMore": "Read more", + "RearLights": "Rear lights", + "RearWheelDrive": "Rear wheel drive", + "RemoveNeon": "Remove neon", + "RemoveNeonMSG": "Neon removed sucessfully", + "RemoveVeh": "Remove vehicles", + "RemoveVehRadius": "Remove vehicles in radius", + "ResetColor": "Reset color", + "ResetColorMSG": "Color reset sucessfully", + "ResetHandling": "Reset handling", + "ResetHandlingMSG": "Handling reset sucessfully", + "ResetTexture": "Reset texture", + "ResetTextureMSG": "Texture reset sucessfully", + "SaveFile": "Save to file", + "SaveFileMSG": "Handling saved successfully", + "SeatOffset": "Seat offset", + "Secondary": "Secondary", + "SelectPreset": "Select preset:", + "Set": "Set", + "SetSpeed": "Set speed", + "Siren": "Siren", + "SkidMarks": "Always skid marks", + "Small": "Small", + "SpawnInAir": "Spawn aircraft in air", + "SpawnInside": "Spawn inside as driver", + "StayOnBike": "Don't fall off bike", + "SteeringLock": "Steering lock", + "SuspensionBias": "Suspension bias", + "Tall": "Tall", + "TankMode": "Tank mode", + "Tertiary": "Tertiary", + "TextureTab": "Textures", + "TotalSeats": "Total seats: %d", + "TractionBias": "Traction bias", + "TractionLoss": "Traction loss", + "TractionMul": "Traction multiplier", + "TrafficNeon": "Traffic neons", + "TrafficNeonMSG": "Adds neon lights to traffic vehicles.\n\nOnly some vehicles will have them.", + "TrafficOpt": "Traffic options", + "TuneTab": "Tune", + "TurnMass": "Turn mass", + "Type": "Type", + "UpperLimit": "Upper limit", + "Watertight": "Watertight car", + "WatertightTip": "Peds inside won't drown if the vehicle\nis submerged in water" + }, "Visual": { "Ambient": "Ambient", "AmbientBl": "Ambient bl", @@ -443,108 +598,5 @@ "VehiclePage": "Vehicle", "VisualPage": "Visual", "WeaponPage": "Weapon" - }, - "Vehicle" : { - "BlowCar" : "Blow up cars", - "FixCar" : "Fix vehicle", - "FlipCar" : "Flip vehicle", - "AimDrive" : "Aim while driving", - "AllNitro" : "All cars have nitro", - "AggroDriver" : "Aggressive driver", - "AllTaxiNitro" : "All taxis have nitro", - "BikeFly" : "Bikes fly", - "BoatFly" : "Boats fly", - "CarFly" : "Cars fly", - "CarHeavy" : "Cars heavy", - "DmgProof" : "Damage proof", - "DmgProofTip" : "Every vehicle entered will be damage proof\nBullet, Collision, Explosion, Fire, Meele etc", - "LessTraffic" : "Decreased traffic", - "NoColl" : "Disable collisions", - "StayOnBike" : "Don't fall off bike", - "DriveWater" : "Drive on water", - "LockTrainCam" : "Lock train camera", - "FloatOnHit" : "Float away when hit", - "GreenLights" : "Green traffic lights", - "PerfectHandling" : "Perfect handling", - "TankMode" : "Tank mode", - "InfNitro" : "Unlimited nitro", - "InfNitroTip" : "Nitro will activate when left clicked\n\n\nEnabling this would disable\nAll cars have nitro\nAll taxis have nitro", - "Watertight" : "Watertight car", - "WatertightTip" : "Peds inside won't drown if the vehicle\nis submerged in water", - "OnlyWheels" : "Wheels only", - "ForCurVeh" : "For current vehicle,", - "SkidMarks" : "Always skid marks", - "BulletProof" : "Bullet proof", - "ColProof" : "Collision proof", - "NoParticles" : "Disable particles", - "DriverTarget" : "Driver targetable", - "EngineOn" : "Engine on", - "ExplosionProof" : "Explosion proof", - "FireProof" : "Fire proof", - "HSTarget" : "HS targetable", - "HSTargetTip" : "Heat Seaker missile can target this", - "InvisCar" : "Invisible car", - "LightsOn" : "Lights on", - "LockDoor" : "Lock doors", - "MeleeProof" :"Melee proof", - "PentrolTank" : "Petrol tank KO", - "PetrolTankTip" : "Vehicle will blow up if petrol tank is shot", - "Siren" : "Siren", - "LessDmg" : "Take less damage", - "DensityMul" : "Density multiplier", - "EnterNearVeh" : "Enter nearest vehicle as", - "TotalSeats" : "Total seats: %d", - "Driver" : "Driver", - "Passenger" : "Passenger ", - "NoNearVeh" : "No nearby vehicles", - "RemoveVehRadius" : "Remove vehicles in radius", - "Radius" : "Radius", - "RemoveVeh" : "Remove vehicles", - "TrafficOpt" : "Traffic options", - "Black" : "Black", - "Pink" : "Pink", - "Color" : "Color", - "Cheap" : "Cheap", - "Country" : "Country", - "Fast" : "Fast", - "Type" : "Type", - "DirtLvl" : "Dirt level", - "Doors" : "Doors", - "Damage" : "Damage", - "Fix" : "Fix", - "Open" : "Open", - "Pop" : "Pop", - "All" : "All", - "SetSpeed" : "Set speed", - "LockSpeed" : "Lock speed", - "InstantStop" : "Instant stop", - "Set" : "Set", - "SpawnInside" : "Spawn inside as driver", - "SpawnInAir" : "Spawn aircraft in air", - "PlateText" : "License plate text", - "ResetColor" : "Reset color", - "ResetColorMSG" : "Color reset sucessfully", - "Component" : "Component", - "ColorPicker" : "Color picker", - "MatFilter" : "Material filter", - "Primary" : "Primary", - "Secondary" : "Secondary", - "Tertiary" : "Tertiary", - "Quaternary" : "Quaternary", - "SelectPreset" : "Select preset:", - "NeonsTab" : "Neons", - "RemoveNeon" : "Remove neon", - "RemoveNeonMSG" : "Neon removed sucessfully", - "PulsingNeon" : "Pulsing neons", - "RainbowNeon" : "Rainbow neons", - "RainbowNeonMSG" : "Rainbow effect to neon lights", - "TrafficNeon" : "Traffic neons", - "TrafficNeonMSG" : "Adds neon lights to traffic vehicles.\n\nOnly some vehicles will have them.", - "TextureTab" : "Textures", - "ResetTexture" : "Reset texture", - "ResetTextureMSG" : "Texture reset sucessfully", - "Paintjob" : "Paintjob", - "TuneTab" : "Tune", - "HandlingTab" : "Handling" } } \ No newline at end of file diff --git a/src/vehicle.cpp b/src/vehicle.cpp index d5eb48f..a016cfc 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -1239,23 +1239,23 @@ void Vehicle::ShowPage() int handlingID = patch::Get((int)pInfo + 74, false); // CBaseModelInfo + 74 = handlingID tHandlingData *pHandlingData = reinterpret_cast(0xC2B9DC + (handlingID * 224)); // sizeof(tHandlingData) = 224 - if (ImGui::Button("Reset handling", ImVec2(Ui::GetSize(3)))) + if (ImGui::Button(TEXT("Vehicle.ResetHandling"), ImVec2(Ui::GetSize(3)))) { gHandlingDataMgr.LoadHandlingData(); - SetHelpMessage("Handling reset", false, false, false); + SetHelpMessage(TEXT("Vehicle.ResetHandlingMSG"), false, false, false); } ImGui::SameLine(); - if (ImGui::Button("Save to file", ImVec2(Ui::GetSize(3)))) + if (ImGui::Button(TEXT("Vehicle.SaveFile"), ImVec2(Ui::GetSize(3)))) { FileHandler::GenerateHandlingFile(pHandlingData, m_VehicleIDE); - SetHelpMessage("Handling saved", false, false, false); + SetHelpMessage(TEXT("Vehicle.SaveFileMSG"), false, false, false); } ImGui::SameLine(); - if (ImGui::Button("Read more", ImVec2(Ui::GetSize(3)))) + if (ImGui::Button(TEXT("Vehicle.ReadMore"), ImVec2(Ui::GetSize(3)))) { ShellExecute(NULL, "open", "https://projectcerbera.com/gta/sa/tutorials/handling", NULL, NULL, SW_SHOWNORMAL); @@ -1265,81 +1265,89 @@ void Vehicle::ShowPage() ImGui::BeginChild("HandlingChild"); - static std::vector abs{ {"On", 1}, {"Off", 0} }; - Ui::EditRadioButtonAddressEx("Abs", (int)&pHandlingData->m_bABS, abs); + std::vector abs{ {TEXT("Vehicle.On"), 1}, {TEXT("Vehicle.Off"), 0} }; + Ui::EditRadioButtonAddressEx(TEXT("Vehicle.Abs"), (int)&pHandlingData->m_bABS, abs); - Ui::EditFloat("Anti dive multiplier", (int)&pHandlingData->m_fSuspensionAntiDiveMultiplier, 0.0f, 0.0f, 1.0f); - Ui::EditFloat("Brake bias", (int)&pHandlingData->m_fBrakeBias, 0.0f, 0.0f, 1.0f); + Ui::EditFloat(TEXT("Vehicle.ADM"), (int)&pHandlingData->m_fSuspensionAntiDiveMultiplier, 0.0f, 0.0f, 1.0f); + Ui::EditAddress(TEXT("Vehicle.AnimGroup"), (int)&pHandlingData->m_nAnimGroup, 0, 0, 20); + Ui::EditFloat(TEXT("Vehicle.BrakeBias"), (int)&pHandlingData->m_fBrakeBias, 0.0f, 0.0f, 1.0f); // Brake deceleration calculation float BrakeDeceleration = pHandlingData->m_fBrakeDeceleration * 2500; - Ui::EditFloat("Brake deceleration", (int)&pHandlingData->m_fBrakeDeceleration, 0.0f, 0.0f, 20.0f, 2500.0f); + Ui::EditFloat(TEXT("Vehicle.BrakeDecel"), (int)&pHandlingData->m_fBrakeDeceleration, 0.0f, 0.0f, 20.0f, 2500.0f); pHandlingData->m_fBrakeDeceleration = BrakeDeceleration / 2500; - Ui::EditFloat("Centre of mass X", (int)&pHandlingData->m_vecCentreOfMass.x, -10.0f, -10.0f, 10.0f); - Ui::EditFloat("Centre of mass Y", (int)&pHandlingData->m_vecCentreOfMass.y, -10.0f, -10.0f, 10.0f); - Ui::EditFloat("Centre of mass Z", (int)&pHandlingData->m_vecCentreOfMass.z, -10.0f, -10.0f, 10.0f); + Ui::EditFloat(TEXT("Vehicle.CemterMassX"), (int)&pHandlingData->m_vecCentreOfMass.x, -10.0f, -10.0f, 10.0f); + Ui::EditFloat(TEXT("Vehicle.CemterMassY"), (int)&pHandlingData->m_vecCentreOfMass.y, -10.0f, -10.0f, 10.0f); + Ui::EditFloat(TEXT("Vehicle.CemterMassZ"), (int)&pHandlingData->m_vecCentreOfMass.z, -10.0f, -10.0f, 10.0f); // CDM calculations float factor = (1.0 / pHandlingData->m_fMass); float fCDM = pHandlingData->m_fCollisionDamageMultiplier / (2000.0f * factor); - Ui::EditFloat("Collision damage multiplier", (int)&fCDM, 0.0f, 0.0f, 1.0f, 0.3381f); + Ui::EditFloat(TEXT("Vehicle.CDM"), (int)&fCDM, 0.0f, 0.0f, 1.0f, 0.3381f); pHandlingData->m_fCollisionDamageMultiplier = factor * fCDM * 2000.0f; - Ui::EditFloat("Damping level", (int)&pHandlingData->m_fSuspensionDampingLevel, -10.0f, -10.0f, 10.0f); // test later - Ui::EditFloat("Drag mult", (int)&pHandlingData->m_fDragMult, 0.0f, 0.0f, 30.0f); + Ui::EditFloat(TEXT("Vehicle.DampingLvl"), (int)&pHandlingData->m_fSuspensionDampingLevel, -10.0f, -10.0f, 10.0f); // test later + Ui::EditFloat(TEXT("Vehicle.DragMult"), (int)&pHandlingData->m_fDragMult, 0.0f, 0.0f, 30.0f); - static std::vector drive_type + std::vector drive_type { - {"Front wheel drive", 70}, {"Rear wheel drive", 82}, {"Four wheel drive", 52} + {TEXT("Vehicle.FrontWheelDrive"), 70}, + {TEXT("Vehicle.RearWheelDrive"), 82}, + {TEXT("Vehicle.FourWheelDrive"), 52} }; - Ui::EditRadioButtonAddressEx("Drive type", (int)&pHandlingData->m_transmissionData.m_nDriveType, drive_type); + Ui::EditRadioButtonAddressEx(TEXT("Vehicle.DriveType"), (int)&pHandlingData->m_transmissionData.m_nDriveType, drive_type); // Engine acceleration calculation float fEngineAcceleration = pHandlingData->m_transmissionData.m_fEngineAcceleration * 12500; - Ui::EditFloat("Engine acceleration", (int)&fEngineAcceleration, 0.0f, 0.0f, 49.0f, 12500.0f); + Ui::EditFloat(TEXT("Vehicle.EngineAccel"), (int)&fEngineAcceleration, 0.0f, 0.0f, 49.0f, 12500.0f); pHandlingData->m_transmissionData.m_fEngineAcceleration = fEngineAcceleration / 12500; - Ui::EditFloat("Engine inertia", (int)&pHandlingData->m_transmissionData.m_fEngineInertia, 0.1f, 0.1f, 400.0f); + Ui::EditFloat(TEXT("Vehicle.EngineInertia"), (int)&pHandlingData->m_transmissionData.m_fEngineInertia, 0.1f, 0.1f, 400.0f); - static std::vector engine_type{ {"Petrol", 80}, {"Diseal", 68}, {"Electric", 69} }; - Ui::EditRadioButtonAddressEx("Engine type", (int)&pHandlingData->m_transmissionData.m_nEngineType, engine_type); + std::vector engine_type + { + {TEXT("Vehicle.Petrol"), 80}, {TEXT("Vehicle.Diseal"), 68}, {TEXT("Vehicle.Electric"), 69} + }; + Ui::EditRadioButtonAddressEx(TEXT("Vehicle.EngineType"), (int)&pHandlingData->m_transmissionData.m_nEngineType, engine_type); - std::vector front_lights{ {"Long", 0}, {"Small", 1}, {"Big", 2}, {"Tall", 3} }; - Ui::EditRadioButtonAddressEx("Front lights", (int)&pHandlingData->m_nFrontLights, front_lights); + std::vector lights + { + {TEXT("Vehicle.Long"), 0}, {TEXT("Vehicle.Small"), 1}, + {TEXT("Vehicle.Big"), 2}, {TEXT("Vehicle.Tall"), 3} + }; + Ui::EditRadioButtonAddressEx(TEXT("Vehicle.FrontLights"), (int)&pHandlingData->m_nFrontLights, lights); - Ui::EditFloat("Force level", (int)&pHandlingData->m_fSuspensionForceLevel, -10.0f, -10.0f, 10.0f); // test later + Ui::EditFloat(TEXT("Vehicle.ForceLevel"), (int)&pHandlingData->m_fSuspensionForceLevel, -10.0f, -10.0f, 10.0f); // test later - Ui::EditBits("Handling flags", (int)&pHandlingData->m_nHandlingFlags, m_HandlingFlagNames); + Ui::EditBits(TEXT("Vehicle.HandlingFlags"), (int)&pHandlingData->m_nHandlingFlags, m_HandlingFlagNames); - Ui::EditFloat("High speed damping", (int)&pHandlingData->m_fSuspensionDampingLevel, -10.0f, -10.0f, 10.0f); // test later - Ui::EditFloat("Lower limit", (int)&pHandlingData->m_fSuspensionLowerLimit, -10.0f, -10.0f, 10.0f); // test later - Ui::EditFloat("Mass", (int)&pHandlingData->m_fMass, 1.0f, 1.0f, 50000.0f); + Ui::EditFloat(TEXT("Vehicle.HighSpeedDamping"), (int)&pHandlingData->m_fSuspensionDampingLevel, -10.0f, -10.0f, 10.0f); // test later + Ui::EditFloat(TEXT("Vehicle.LowerKimit"), (int)&pHandlingData->m_fSuspensionLowerLimit, -10.0f, -10.0f, 10.0f); // test later + Ui::EditFloat(TEXT("Vehicle.Mass"), (int)&pHandlingData->m_fMass, 1.0f, 1.0f, 50000.0f); // Max Velocity calculation int MaxVelocity = pHandlingData->m_transmissionData.m_fMaxGearVelocity / *(float*)0xC2B9BC; - Ui::EditFloat("Max velocity", (int)&MaxVelocity, 1.0f, 1.0f, 1000.0f); + Ui::EditFloat(TEXT("Vehicle.MaxVelocity"), (int)&MaxVelocity, 1.0f, 1.0f, 1000.0f); pHandlingData->m_transmissionData.m_fMaxGearVelocity = MaxVelocity * (*(float*)0xC2B9BC); - Ui::EditBits("Model flags", (int)&pHandlingData->m_nModelFlags, m_ModelFlagNames); + Ui::EditBits(TEXT("Vehicle.ModelFlags"), (int)&pHandlingData->m_nModelFlags, m_ModelFlagNames); - Ui::EditAddress("Monetary value", (int)&pHandlingData->m_nMonetaryValue, 1, 1, 100000); - Ui::EditAddress("Number of gears", (int)&pHandlingData->m_transmissionData.m_nNumberOfGears, 1, 1, 10); - Ui::EditAddress("Percent submerged", (int)&pHandlingData->m_nPercentSubmerged, 10, 10, 120); + Ui::EditAddress(TEXT("Vehicle.MonValue"), (int)&pHandlingData->m_nMonetaryValue, 1, 1, 100000); + Ui::EditAddress(TEXT("Vehicle.NumGears"), (int)&pHandlingData->m_transmissionData.m_nNumberOfGears, 1, 1, 10); + Ui::EditAddress(TEXT("Vehicle.PercentSubmerged"), (int)&pHandlingData->m_nPercentSubmerged, 10, 10, 120); - static std::vector rear_lights{ {"Long", 0}, {"Small", 1}, {"Big", 2}, {"Tall", 3} }; - Ui::EditRadioButtonAddressEx("Rear lights", (int)&pHandlingData->m_nRearLights, rear_lights); + Ui::EditRadioButtonAddressEx(TEXT("Vehicle.RearLights"), (int)&pHandlingData->m_nRearLights, lights); - Ui::EditFloat("Seat offset distance", (int)&pHandlingData->m_fSeatOffsetDistance, 0.0f, 0.0f, 1.0f); - Ui::EditFloat("Steering lock", (int)&pHandlingData->m_fSteeringLock, 10.0f, 10.0f, 50.0f); - Ui::EditFloat("Suspension bias", (int)&pHandlingData->m_fSuspensionBiasBetweenFrontAndRear, 0.0f, 0.0f, 1.0f); - Ui::EditFloat("Traction bias", (int)&pHandlingData->m_fTractionBias, 0.0f, 0.0f, 1.0f); - Ui::EditFloat("Traction loss", (int)&pHandlingData->m_fTractionLoss, 0.0f, 0.0f, 1.0f); - Ui::EditFloat("Traction multiplier", (int)&pHandlingData->m_fTractionMultiplier, 0.5f, 0.5f, 2.0f); - Ui::EditFloat("Turn mass", (int)&pHandlingData->m_fTurnMass, 20.0f, 20.0f, 1000.0f); // test later - Ui::EditFloat("Upper limit", (int)&pHandlingData->m_fSuspensionUpperLimit, -1.0f, -1.0f, 1.0f); - Ui::EditAddress("Vehicle anim group", (int)&pHandlingData->m_nAnimGroup, 0, 0, 20); + Ui::EditFloat(TEXT("Vehicle.SeatOffset"), (int)&pHandlingData->m_fSeatOffsetDistance, 0.0f, 0.0f, 1.0f); + Ui::EditFloat(TEXT("Vehicle.SteeringLock"), (int)&pHandlingData->m_fSteeringLock, 10.0f, 10.0f, 50.0f); + Ui::EditFloat(TEXT("Vehicle.SuspensionBias"), (int)&pHandlingData->m_fSuspensionBiasBetweenFrontAndRear, 0.0f, 0.0f, 1.0f); + Ui::EditFloat(TEXT("Vehicle.TractionBias"), (int)&pHandlingData->m_fTractionBias, 0.0f, 0.0f, 1.0f); + Ui::EditFloat(TEXT("Vehicle.TractionLoss"), (int)&pHandlingData->m_fTractionLoss, 0.0f, 0.0f, 1.0f); + Ui::EditFloat(TEXT("Vehicle.TractionMul"), (int)&pHandlingData->m_fTractionMultiplier, 0.5f, 0.5f, 2.0f); + Ui::EditFloat(TEXT("Vehicle.TurnMass"), (int)&pHandlingData->m_fTurnMass, 20.0f, 20.0f, 1000.0f); // test later + Ui::EditFloat(TEXT("Vehicle.UpperLimit"), (int)&pHandlingData->m_fSuspensionUpperLimit, -1.0f, -1.0f, 1.0f); ImGui::EndChild();