Skip to content

Commit be82d1c

Browse files
AlexTMjugadorsaml1er
andauthored
Add get/setVehicleWheelScale (#1641)
* Add get/setVehicleWheelScale These functions, related to issue #719, expose the wheel scale size attribute of the CVehicle class to clientside Lua scripts. * Remove the new functions from CStaticFunctionDefinitions * Use override keyword in CVehicleSA new methods This keyword guarantees that these methods override the virtual methods in the CVehicle class, as intended. Co-authored-by: saml1er <[email protected]>
1 parent e82dc11 commit be82d1c

File tree

6 files changed

+48
-1
lines changed

6 files changed

+48
-1
lines changed

Client/game_sa/CVehicleSA.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,7 @@ class CVehicleSAInterface : public CPhysicalSAInterface
369369
unsigned char m_colour1, m_colour2, m_colour3, m_colour4;
370370
char m_comp1, m_comp2;
371371
short m_upgrades[MAX_UPGRADES_ATTACHED]; // 1082
372-
float m_wheelScale; // 1112
372+
float m_fWheelScale; // 1112
373373

374374
unsigned short CarAlarmState; // 1116
375375
unsigned short ForcedRandomSeed; // if this is non-zero the random wander gets deterministic
@@ -822,6 +822,8 @@ class CVehicleSA : public virtual CVehicle, public virtual CPhysicalSA
822822
std::map<SString, SVehicleFrame>& GetComponentMap() { return m_ExtraFrames; }
823823
bool SetPlateText(const SString& strText);
824824
bool SetWindowOpenFlagState(unsigned char ucWindow, bool bState);
825+
float GetWheelScale() override { return GetVehicleInterface()->m_fWheelScale; }
826+
void SetWheelScale(float fWheelScale) override { GetVehicleInterface()->m_fWheelScale = fWheelScale; }
825827

826828
void UpdateLandingGearPosition();
827829

Client/mods/deathmatch/logic/CClientVehicle.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ CClientVehicle::CClientVehicle(CClientManager* pManager, ElementID ID, unsigned
135135
m_bEnableHeliBladeCollisions = true;
136136
m_fNitroLevel = 1.0f;
137137
m_cNitroCount = 0;
138+
m_fWheelScale = 1.0f;
138139

139140
for (unsigned int i = 0; i < MAX_WINDOWS; ++i)
140141
{
@@ -2681,6 +2682,7 @@ void CClientVehicle::Create()
26812682
m_pVehicle->SetGravity(&m_vecGravity);
26822683
m_pVehicle->SetHeadLightColor(m_HeadLightColor);
26832684
m_pVehicle->SetRadioStatus(0);
2685+
m_pVehicle->SetWheelScale(m_fWheelScale);
26842686

26852687
if (IsNitroInstalled())
26862688
{
@@ -4982,3 +4984,21 @@ bool CClientVehicle::IsWindowOpen(uchar ucWindow)
49824984
}
49834985
return false;
49844986
}
4987+
4988+
void CClientVehicle::SetWheelScale(float fWheelScale)
4989+
{
4990+
if (m_pVehicle)
4991+
{
4992+
m_pVehicle->SetWheelScale(fWheelScale);
4993+
}
4994+
m_fWheelScale = fWheelScale;
4995+
}
4996+
4997+
float CClientVehicle::GetWheelScale()
4998+
{
4999+
if (m_pVehicle)
5000+
{
5001+
return m_pVehicle->GetWheelScale();
5002+
}
5003+
return m_fWheelScale;
5004+
}

Client/mods/deathmatch/logic/CClientVehicle.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -494,6 +494,9 @@ class CClientVehicle : public CClientStreamElement
494494

495495
void SetHeliBladeCollisionsEnabled(bool bEnable) { m_bEnableHeliBladeCollisions = bEnable; }
496496

497+
float GetWheelScale();
498+
void SetWheelScale(float fWheelScale);
499+
497500
bool OnVehicleFallThroughMap();
498501

499502
protected:
@@ -608,6 +611,7 @@ class CClientVehicle : public CClientStreamElement
608611
CHandlingEntry* m_pHandlingEntry;
609612
float m_fNitroLevel;
610613
char m_cNitroCount;
614+
float m_fWheelScale;
611615

612616
bool m_bChainEngine;
613617
bool m_bIsDerailed;

Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ void CLuaVehicleDefs::LoadFunctions()
8383
{"getVehicleComponents", GetVehicleComponents},
8484
{"getVehicleModelExhaustFumesPosition", GetVehicleModelExhaustFumesPosition},
8585
{"getVehicleModelDummyPosition", GetVehicleModelDummyPosition},
86+
{"getVehicleWheelScale", ArgumentParser<GetVehicleWheelScale>},
8687
{"getVehicleModelWheelSize", ArgumentParser<GetVehicleModelWheelSize>},
8788

8889
// Vehicle set funcs
@@ -140,6 +141,7 @@ void CLuaVehicleDefs::LoadFunctions()
140141
{"setVehicleWindowOpen", SetVehicleWindowOpen},
141142
{"setVehicleModelExhaustFumesPosition", SetVehicleModelExhaustFumesPosition},
142143
{"setVehicleModelDummyPosition", SetVehicleModelDummyPosition },
144+
{"setVehicleWheelScale", ArgumentParser<SetVehicleWheelScale>},
143145
{"setVehicleModelWheelSize", ArgumentParser<SetVehicleModelWheelSize>},
144146
};
145147

@@ -223,6 +225,7 @@ void CLuaVehicleDefs::AddClass(lua_State* luaVM)
223225
lua_classfunction(luaVM, "getUpgradeOnSlot", "getVehicleUpgradeOnSlot");
224226
lua_classfunction(luaVM, "getModelExhaustFumesPosition", OOP_GetVehicleModelExhaustFumesPosition);
225227
lua_classfunction(luaVM, "getVehicleModelDummyPosition", OOP_GetVehicleModelDummyPosition);
228+
lua_classfunction(luaVM, "getWheelScale", "getVehicleWheelScale");
226229
lua_classfunction(luaVM, "getModelWheelSize", "getVehicleModelWheelSize");
227230

228231
lua_classfunction(luaVM, "setComponentVisible", "setVehicleComponentVisible");
@@ -267,6 +270,7 @@ void CLuaVehicleDefs::AddClass(lua_State* luaVM)
267270
lua_classfunction(luaVM, "setGravity", "setVehicleGravity");
268271
lua_classfunction(luaVM, "setModelExhaustFumesPosition", "setVehicleModelExhaustFumesPosition");
269272
lua_classfunction(luaVM, "setVehicleModelDummyPosition", "setVehicleModelDummyPosition");
273+
lua_classfunction(luaVM, "setWheelScale", "setVehicleWheelScale");
270274
lua_classfunction(luaVM, "setModelWheelSize", "setVehicleModelWheelSize");
271275

272276
lua_classfunction(luaVM, "resetComponentPosition", "resetVehicleComponentPosition");
@@ -323,6 +327,7 @@ void CLuaVehicleDefs::AddClass(lua_State* luaVM)
323327
lua_classvariable(luaVM, "nitroRecharging", NULL, "isVehicleNitroRecharging");
324328
lua_classvariable(luaVM, "gravity", SetVehicleGravity, OOP_GetVehicleGravity);
325329
lua_classvariable(luaVM, "turnVelocity", SetVehicleTurnVelocity, OOP_GetVehicleTurnVelocity);
330+
lua_classvariable(luaVM, "wheelScale", "setVehicleWheelScale", "getVehicleWheelScale");
326331

327332
lua_registerclass(luaVM, "Vehicle", "Element");
328333
}
@@ -4057,6 +4062,18 @@ int CLuaVehicleDefs::OOP_GetVehicleModelExhaustFumesPosition(lua_State* luaVM)
40574062
return 1;
40584063
}
40594064

4065+
4066+
float CLuaVehicleDefs::GetVehicleWheelScale(CClientVehicle* const pVehicle)
4067+
{
4068+
return pVehicle->GetWheelScale();
4069+
}
4070+
4071+
bool CLuaVehicleDefs::SetVehicleWheelScale(CClientVehicle* const pVehicle, const float fWheelScale)
4072+
{
4073+
pVehicle->SetWheelScale(fWheelScale);
4074+
return true;
4075+
}
4076+
40604077
std::variant<float, std::unordered_map<std::string, float>> CLuaVehicleDefs::GetVehicleModelWheelSize(
40614078
const unsigned short usModel, const std::optional<eResizableVehicleWheelGroup> eWheelGroup)
40624079
{

Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,8 @@ class CLuaVehicleDefs : public CLuaDefs
143143
LUA_DECLARE(SetVehicleModelExhaustFumesPosition);
144144
LUA_DECLARE_OOP(GetVehicleModelExhaustFumesPosition);
145145

146+
static float GetVehicleWheelScale(CClientVehicle* const pVehicle);
147+
static bool SetVehicleWheelScale(CClientVehicle* const pVehicle, const float fWheelScale);
146148
static std::variant<float, std::unordered_map<std::string, float>> GetVehicleModelWheelSize(const unsigned short usModel,
147149
const std::optional<eResizableVehicleWheelGroup> eWheelGroup);
148150
static bool SetVehicleModelWheelSize(const unsigned short usModel, const eResizableVehicleWheelGroup eWheelGroup, const float fWheelSize);

Client/sdk/game/CVehicle.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,5 +327,7 @@ class CVehicle : public virtual CPhysical
327327
virtual void UpdateLandingGearPosition() = 0;
328328
virtual bool SetPlateText(const SString& strText) = 0;
329329
virtual bool SetWindowOpenFlagState(unsigned char ucWindow, bool bState) = 0;
330+
virtual float GetWheelScale() = 0;
331+
virtual void SetWheelScale(float fWheelScale) = 0;
330332
virtual CAEVehicleAudioEntity* GetVehicleAudioEntity() = 0;
331333
};

0 commit comments

Comments
 (0)