Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 14 additions & 7 deletions lua/entities/base_glide_car/cl_init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,9 @@ function ENT:OnUpdateSounds()
if sounds.siren then
sounds.siren:ChangeVolume( self.SirenVolume * GetVolume( "hornVolume" ) )
else
local snd = self:CreateLoopingSound( "siren", Glide.GetRandomSound( self.SirenLoopSound ), 90, self )
local siren = self:GetSirenState()
local snd = self:CreateLoopingSound( "siren", self.SirenVehicle and self.SirenVehicle[siren] or Glide.GetRandomSound( self.SirenLoopSound ), 90, self )

snd:PlayEx( self.SirenVolume * GetVolume( "hornVolume" ), 100 )
end

Expand Down Expand Up @@ -288,13 +290,13 @@ function ENT:OnUpdateMisc()

-- Siren lights/bodygroups
local siren = self:GetSirenState()
local flashing = self:GetFlashingState()

if self.lastSirenState ~= siren then
if self.lastSirenState ~= siren or self.lastFlashingState ~= flashing then
self.lastSirenState = siren

if siren > 1 then
if siren > 0 then
self.lastSirenEnableTime = CurTime()

elseif self.lastSirenEnableTime then
if CurTime() - self.lastSirenEnableTime < 0.25 then
Glide.PlaySoundSet( self.SirenInterruptSound, self, self.SirenVolume )
Expand All @@ -304,22 +306,27 @@ function ENT:OnUpdateMisc()
end

-- Set bodygroups to default
for _, v in ipairs( self.SirenLights ) do
local SirenLights = self.NumberFlashingLights and self.SirenLights[self.lastFlashingState] or self.SirenLights
for _, v in ipairs( SirenLights ) do
if v.bodygroup then
self:SetBodygroup( v.bodygroup, 0 )
end
end

self.lastFlashingState = flashing
end

if siren < 1 then return end
if flashing < 1 then return end

local myPos = self:GetPos()
local t = ( CurTime() % self.SirenCycle ) / self.SirenCycle
local on, pos, dir, radius

local bodygroupState = {}

for _, v in ipairs( self.SirenLights ) do
local SirenLights = self.NumberFlashingLights and self.SirenLights[flashing] or self.SirenLights

for _, v in ipairs( SirenLights ) do
on = t > v.time and t < v.time + ( v.duration or 0.125 )

-- Check for optional bodygroup requirement
Expand Down
16 changes: 13 additions & 3 deletions lua/entities/base_glide_car/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,8 @@ function ENT:OnSeatInput( seatIndex, action, pressed )

if action == "siren" then
self:ChangeSirenState( self:GetSirenState() + 1 )

elseif action == "flashinglights" then
self:ChangeFlashingState( self:GetFlashingState() + 1 )
elseif action == "accelerate" and self:GetEngineState() == 0 and self:GetEngineRPM() < 1 then
self:TurnOn()
end
Expand Down Expand Up @@ -262,8 +263,8 @@ function ENT:ChangeSirenState( state )

state = math.floor( state )

if state < 0 then state = 2 end
if state > 2 then state = 0 end
if state < 0 then state = self.SirenVehicle and #self.SirenVehicle or 1 end
if state > ( self.SirenVehicle and #self.SirenVehicle or 1 ) then state = 0 end

self:SetSirenState( state )

Expand All @@ -272,6 +273,15 @@ function ENT:ChangeSirenState( state )
end
end

function ENT:ChangeFlashingState( state )
state = math.floor( state )

if state < 0 then state = 1 end
if state > ( self.NumberFlashingLights or 1 ) then state = 0 end

self:SetFlashingState( state )
end

--- Override this base class function.
function ENT:SetupWiremodPorts( inputs, outputs )
BaseClass.SetupWiremodPorts( self, inputs, outputs )
Expand Down
1 change: 1 addition & 0 deletions lua/entities/base_glide_car/shared.lua
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ function ENT:SetupDataTables()
self:NetworkVar( "Bool", "IsRedlining" )
self:NetworkVar( "Bool", "IsHonking" )
self:NetworkVar( "Int", "SirenState" )
self:NetworkVar( "Int", "FlashingState" )

self:NetworkVar( "Int", "Gear" )
self:NetworkVar( "Float", "Steering" )
Expand Down
1 change: 1 addition & 0 deletions lua/glide/sh_input.lua
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ Glide.AddInputAction( "land_controls", "throttle_modifier", KEY_LSHIFT )

Glide.AddInputAction( "land_controls", "horn", KEY_R )
Glide.AddInputAction( "land_controls", "siren", KEY_L )
Glide.AddInputAction( "land_controls", "flashinglights", KEY_M )
Glide.AddInputAction( "land_controls", "detach_trailer", KEY_K )

Glide.AddInputAction( "land_controls", "lean_forward", KEY_UP )
Expand Down
1 change: 1 addition & 0 deletions resource/localization/en/glide_vehicles.properties
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ glide.input.brake=Brake/Reverse
glide.input.handbrake=Handbrake
glide.input.horn=Horn
glide.input.siren=Siren
glide.input.flashinglights=Flashing lights
glide.input.headlights=Toggle headlights
glide.input.toggle_engine=Toggle engine
glide.input.detach_trailer=Detach trailer
Expand Down
1 change: 1 addition & 0 deletions resource/localization/fr/glide_vehicles.properties
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ glide.input.brake=Freiner/Reculer
glide.input.handbrake=Frein à main
glide.input.horn=Klaxon
glide.input.siren=Sirène
glide.input.flashinglights=Gyrophare
glide.input.headlights=Activer/désactiver les phares
glide.input.toggle_engine=Allumer/éteindre le moteur
glide.input.detach_trailer=Détacher la remorque
Expand Down