mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
Upload
This commit is contained in:
150
lua/entities/lvs_base/cl_seatswitcher.lua
Normal file
150
lua/entities/lvs_base/cl_seatswitcher.lua
Normal file
@@ -0,0 +1,150 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
|
||||
ENT.IconVehicleLocked = Material( "lvs/locked.png" )
|
||||
|
||||
LVS:AddHudEditor( "SeatSwitcher", ScrW() - 360, 10, 350, 30, 350, 30, "SEAT SWITCHER",
|
||||
function( self, vehicle, X, Y, W, H, ScrX, ScrY, ply )
|
||||
if not vehicle.LVSHudPaintSeatSwitcher then return end
|
||||
vehicle:LVSHudPaintSeatSwitcher( X, Y, W, H, ScrX, ScrY, ply )
|
||||
end
|
||||
)
|
||||
|
||||
function ENT:LVSHudPaintSeatSwitcher( X, Y, w, h, ScrX, ScrY, ply )
|
||||
local pSeats = self:GetPassengerSeats()
|
||||
local SeatCount = table.Count( pSeats )
|
||||
|
||||
if SeatCount <= 0 then return end
|
||||
|
||||
pSeats[0] = self:GetDriverSeat()
|
||||
|
||||
draw.NoTexture()
|
||||
|
||||
local HasAI = self:GetAI()
|
||||
local MySeat = ply:GetVehicle():GetNWInt( "pPodIndex", -1 )
|
||||
|
||||
local Passengers = {}
|
||||
for _, player in pairs( player.GetAll() ) do
|
||||
if player:lvsGetVehicle() == self then
|
||||
local Pod = player:GetVehicle()
|
||||
Passengers[ Pod:GetNWInt( "pPodIndex", -1 ) ] = player:GetName()
|
||||
end
|
||||
end
|
||||
|
||||
if HasAI then
|
||||
Passengers[1] = "[AI] "..self.PrintName
|
||||
|
||||
for _, Pod in pairs( self:GetPassengerSeats() ) do
|
||||
if IsValid( Pod:GetDriver() ) then continue end
|
||||
|
||||
local weapon = Pod:lvsGetWeapon()
|
||||
|
||||
if not IsValid( weapon ) then continue end
|
||||
|
||||
Passengers[ weapon:GetPodIndex() ] = "[AI] Gunner"
|
||||
end
|
||||
end
|
||||
|
||||
ply.SwitcherTime = ply.SwitcherTime or 0
|
||||
ply._lvsoldPassengers = ply._lvsoldPassengers or {}
|
||||
|
||||
local Time = CurTime()
|
||||
for k, v in pairs( Passengers ) do
|
||||
if ply._lvsoldPassengers[k] ~= v then
|
||||
ply._lvsoldPassengers[k] = v
|
||||
ply.SwitcherTime = Time + 2
|
||||
end
|
||||
end
|
||||
for k, v in pairs( ply._lvsoldPassengers ) do
|
||||
if not Passengers[k] then
|
||||
ply._lvsoldPassengers[k] = nil
|
||||
ply.SwitcherTime = Time + 2
|
||||
end
|
||||
end
|
||||
for _, v in pairs( LVS.pSwitchKeysInv ) do
|
||||
if input.IsKeyDown(v) then
|
||||
ply.SwitcherTime = Time + 2
|
||||
end
|
||||
end
|
||||
|
||||
local Hide = ply.SwitcherTime > Time
|
||||
|
||||
ply.smHider = ply.smHider and (ply.smHider + ((Hide and 1 or 0) - ply.smHider) * RealFrameTime() * 15) or 0
|
||||
|
||||
local Alpha1 = 135 + 110 * ply.smHider
|
||||
local HiderOffset = 270 * ply.smHider
|
||||
local xPos = w - 35
|
||||
local yPos = Y - (SeatCount + 1) * 30 + h + 5
|
||||
|
||||
local SwapY = false
|
||||
local SwapX = false
|
||||
|
||||
local xHider = HiderOffset
|
||||
|
||||
if X < (ScrX * 0.5 - w * 0.5) then
|
||||
SwapX = true
|
||||
xPos = 0
|
||||
xHider = 0
|
||||
end
|
||||
|
||||
if Y < (ScrY * 0.5 - h * 0.5) then
|
||||
SwapY = true
|
||||
yPos = Y - h
|
||||
end
|
||||
|
||||
for _, Pod in pairs( pSeats ) do
|
||||
if not IsValid( Pod ) then continue end
|
||||
|
||||
local I = Pod:GetNWInt( "pPodIndex", -1 )
|
||||
|
||||
if I <= 0 then continue end
|
||||
|
||||
if I == MySeat then
|
||||
draw.RoundedBox(5, X + xPos - xHider, yPos + I * 30, 35 + HiderOffset, 25, Color(LVS.ThemeColor.r, LVS.ThemeColor.g, LVS.ThemeColor.b,100 + 50 * ply.smHider) )
|
||||
else
|
||||
draw.RoundedBox(5, X + xPos - xHider, yPos + I * 30, 35 + HiderOffset, 25, Color(0,0,0,100 + 50 * ply.smHider) )
|
||||
end
|
||||
|
||||
if Hide then
|
||||
if Passengers[I] then
|
||||
draw.DrawText( Passengers[I], "LVS_FONT_SWITCHER", X + 40 + xPos - xHider, yPos + I * 30 + 2.5, Color( 255, 255, 255, Alpha1 ), TEXT_ALIGN_LEFT )
|
||||
else
|
||||
draw.DrawText( "-", "LVS_FONT_SWITCHER", X + 40 + xPos - xHider, yPos + I * 30 + 2.5, Color( 255, 255, 255, Alpha1 ), TEXT_ALIGN_LEFT )
|
||||
end
|
||||
|
||||
draw.DrawText( "["..I.."]", "LVS_FONT_SWITCHER", X + 17 + xPos - xHider, yPos + I * 30 + 2.5, Color( 255, 255, 255, Alpha1 ), TEXT_ALIGN_CENTER )
|
||||
else
|
||||
if Passengers[I] then
|
||||
draw.DrawText( "[^"..I.."]", "LVS_FONT_SWITCHER", X + 17 + xPos - xHider, yPos + I * 30 + 2.5, Color( 255, 255, 255, Alpha1 ), TEXT_ALIGN_CENTER )
|
||||
else
|
||||
draw.DrawText( "["..I.."]", "LVS_FONT_SWITCHER", X + 17 + xPos - xHider, yPos + I * 30 + 2.5, Color( 255, 255, 255, Alpha1 ), TEXT_ALIGN_CENTER )
|
||||
end
|
||||
end
|
||||
|
||||
if not self:GetlvsLockedStatus() then continue end
|
||||
|
||||
local xLocker = SwapX and 35 + HiderOffset or -25 - HiderOffset
|
||||
|
||||
if SwapY then
|
||||
if I == 1 then
|
||||
surface.SetDrawColor( 255, 255, 255, 255 )
|
||||
surface.SetMaterial( self.IconVehicleLocked )
|
||||
surface.DrawTexturedRect( X + xPos + xLocker, yPos + I * 30, 25, 25 )
|
||||
end
|
||||
else
|
||||
if I == SeatCount then
|
||||
surface.SetDrawColor( 255, 255, 255, 255 )
|
||||
surface.SetMaterial( self.IconVehicleLocked )
|
||||
surface.DrawTexturedRect( X + xPos + xLocker, yPos + I * 30, 25, 25 )
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user