diff --git a/Client/mods/deathmatch/logic/CClientVehicle.cpp b/Client/mods/deathmatch/logic/CClientVehicle.cpp index adce3cea82a..1c9031b3f31 100644 --- a/Client/mods/deathmatch/logic/CClientVehicle.cpp +++ b/Client/mods/deathmatch/logic/CClientVehicle.cpp @@ -1582,6 +1582,16 @@ void CClientVehicle::SetLightStatus(unsigned char ucLight, unsigned char ucStatu } } +bool CClientVehicle::AreLightsOn() +{ + if (m_pVehicle) + { + return m_pVehicle->GetLightsOn(); + } + + return false; +} + float CClientVehicle::GetHeliRotorSpeed() { if (m_pVehicle && m_eVehicleType == CLIENTVEHICLE_HELI) diff --git a/Client/mods/deathmatch/logic/CClientVehicle.h b/Client/mods/deathmatch/logic/CClientVehicle.h index 4d88506d28d..4a06641f26e 100644 --- a/Client/mods/deathmatch/logic/CClientVehicle.h +++ b/Client/mods/deathmatch/logic/CClientVehicle.h @@ -261,6 +261,8 @@ class CClientVehicle : public CClientStreamElement unsigned char GetPanelStatus(unsigned char ucPanel); unsigned char GetLightStatus(unsigned char ucLight); + bool AreLightsOn(); + void SetDoorStatus(unsigned char ucDoor, unsigned char ucStatus); void SetWheelStatus(unsigned char ucWheel, unsigned char ucStatus, bool bSilent = true); void SetPanelStatus(unsigned char ucPanel, unsigned char ucStatus); diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp b/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp index ea0fb9672e8..3cb6924210f 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp +++ b/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.cpp @@ -36,6 +36,7 @@ void CLuaVehicleDefs::LoadFunctions() {"getVehicleDoorState", GetVehicleDoorState}, {"getVehicleLightState", GetVehicleLightState}, {"getVehiclePanelState", GetVehiclePanelState}, + {"areVehicleLightsOn", AreVehicleLightsOn}, {"getVehicleOverrideLights", GetVehicleOverrideLights}, {"getVehicleTowedByVehicle", GetVehicleTowedByVehicle}, {"getVehicleTowingVehicle", GetVehicleTowingVehicle}, @@ -200,6 +201,7 @@ void CLuaVehicleDefs::AddClass(lua_State* luaVM) lua_classfunction(luaVM, "getEngineState", "getVehicleEngineState"); lua_classfunction(luaVM, "getLightState", "getVehicleLightState"); lua_classfunction(luaVM, "getAdjustableProperty", "getVehicleAdjustableProperty"); + lua_classfunction(luaVM, "areLightsOn", "areVehicleLightsOn"); lua_classfunction(luaVM, "getOverrideLights", "getVehicleOverrideLights"); lua_classfunction(luaVM, "getPanelState", "getVehiclePanelState"); lua_classfunction(luaVM, "getTurnVelocity", OOP_GetVehicleTurnVelocity); @@ -298,6 +300,7 @@ void CLuaVehicleDefs::AddClass(lua_State* luaVM) lua_classvariable(luaVM, "fuelTankExplodable", "setVehicleFuelTankExplodable", "isVehicleFuelTankExplodable"); lua_classvariable(luaVM, "engineState", "setVehicleEngineState", "getVehicleEngineState"); lua_classvariable(luaVM, "landingGearDown", "setVehicleLandingGearDown", "getVehicleLandingGearDown"); + lua_classvariable(luaVM, "lightsOn", NULL, "areVehicleLightsOn"); lua_classvariable(luaVM, "overrideLights", "setVehicleOverrideLights", "getVehicleOverrideLights"); lua_classvariable(luaVM, "undamageableDoors", "setVehicleDoorsUndamageable", NULL); lua_classvariable(luaVM, "taxiLight", "setVehicleTaxiLightOn", "isVehicleTaxiLightOn"); @@ -1008,6 +1011,20 @@ int CLuaVehicleDefs::GetVehiclePanelState(lua_State* luaVM) return 1; } +int CLuaVehicleDefs::AreVehicleLightsOn(lua_State* luaVM) +{ + CClientVehicle* pVehicle; + CScriptArgReader argStream(luaVM); + argStream.ReadUserData(pVehicle); + + if (argStream.HasErrors()) + return luaL_error(luaVM, argStream.GetFullErrorMessage()); + + bool bLightsOn = (pVehicle->AreLightsOn() || pVehicle->GetOverrideLights() == 2); + lua_pushboolean(luaVM, bLightsOn); + return 1; +} + int CLuaVehicleDefs::GetVehicleOverrideLights(lua_State* luaVM) { CClientVehicle* pVehicle = NULL; diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h b/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h index 9ce32ab02ea..81e60f7bba0 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h +++ b/Client/mods/deathmatch/logic/luadefs/CLuaVehicleDefs.h @@ -44,6 +44,7 @@ class CLuaVehicleDefs : public CLuaDefs LUA_DECLARE(GetVehicleDoorState); LUA_DECLARE(GetVehicleLightState); LUA_DECLARE(GetVehiclePanelState); + LUA_DECLARE(AreVehicleLightsOn); LUA_DECLARE(GetVehicleOverrideLights); LUA_DECLARE(GetVehicleTowedByVehicle); LUA_DECLARE(GetVehicleTowingVehicle);