Initial Reupload
This commit is contained in:
291
gamemodes/fretta/gamemode/cl_hud.lua
Normal file
291
gamemodes/fretta/gamemode/cl_hud.lua
Normal file
@@ -0,0 +1,291 @@
|
||||
|
||||
local hudScreen = nil
|
||||
local Alive = false
|
||||
local Class = nil
|
||||
local Team = 0
|
||||
local WaitingToRespawn = false
|
||||
local InRound = false
|
||||
local RoundResult = 0
|
||||
local RoundWinner = nil
|
||||
local IsObserver = false
|
||||
local ObserveMode = 0
|
||||
local ObserveTarget = NULL
|
||||
local InVote = false
|
||||
|
||||
function GM:AddHUDItem( item, pos, parent )
|
||||
hudScreen:AddItem( item, parent, pos )
|
||||
end
|
||||
|
||||
function GM:HUDNeedsUpdate()
|
||||
|
||||
if ( !IsValid( LocalPlayer() ) ) then return false end
|
||||
|
||||
if ( Class != LocalPlayer():GetNWString( "Class", "Default" ) ) then return true end
|
||||
if ( Alive != LocalPlayer():Alive() ) then return true end
|
||||
if ( Team != LocalPlayer():Team() ) then return true end
|
||||
if ( WaitingToRespawn != ( (LocalPlayer():GetNWFloat( "RespawnTime", 0 ) > CurTime()) && LocalPlayer():Team() != TEAM_SPECTATOR && !LocalPlayer():Alive()) ) then return true end
|
||||
if ( InRound != GetGlobalBool( "InRound", false ) ) then return true end
|
||||
if ( RoundResult != GetGlobalInt( "RoundResult", 0 ) ) then return true end
|
||||
if ( RoundWinner != GetGlobalEntity( "RoundWinner", nil ) ) then return true end
|
||||
if ( IsObserver != LocalPlayer():IsObserver() ) then return true end
|
||||
if ( ObserveMode != LocalPlayer():GetObserverMode() ) then return true end
|
||||
if ( ObserveTarget != LocalPlayer():GetObserverTarget() ) then return true end
|
||||
if ( InVote != GAMEMODE:InGamemodeVote() ) then return true end
|
||||
|
||||
return false
|
||||
end
|
||||
|
||||
function GM:OnHUDUpdated()
|
||||
Class = LocalPlayer():GetNWString( "Class", "Default" )
|
||||
Alive = LocalPlayer():Alive()
|
||||
Team = LocalPlayer():Team()
|
||||
WaitingToRespawn = (LocalPlayer():GetNWFloat( "RespawnTime", 0 ) > CurTime()) && LocalPlayer():Team() != TEAM_SPECTATOR && !Alive
|
||||
InRound = GetGlobalBool( "InRound", false )
|
||||
RoundResult = GetGlobalInt( "RoundResult", 0 )
|
||||
RoundWinner = GetGlobalEntity( "RoundWinner", nil )
|
||||
IsObserver = LocalPlayer():IsObserver()
|
||||
ObserveMode = LocalPlayer():GetObserverMode()
|
||||
ObserveTarget = LocalPlayer():GetObserverTarget()
|
||||
InVote = GAMEMODE:InGamemodeVote()
|
||||
end
|
||||
|
||||
function GM:OnHUDPaint()
|
||||
|
||||
end
|
||||
|
||||
function GM:RefreshHUD()
|
||||
|
||||
if ( !GAMEMODE:HUDNeedsUpdate() ) then return end
|
||||
GAMEMODE:OnHUDUpdated()
|
||||
|
||||
if ( IsValid( hudScreen ) ) then hudScreen:Remove() end
|
||||
hudScreen = vgui.Create( "DHudLayout" )
|
||||
|
||||
if ( InVote ) then return end
|
||||
|
||||
if ( RoundWinner and RoundWinner != NULL ) then
|
||||
GAMEMODE:UpdateHUD_RoundResult( RoundWinner, Alive )
|
||||
elseif ( RoundResult != 0 ) then
|
||||
GAMEMODE:UpdateHUD_RoundResult( RoundResult, Alive )
|
||||
elseif ( IsObserver ) then
|
||||
GAMEMODE:UpdateHUD_Observer( WaitingToRespawn, InRound, ObserveMode, ObserveTarget )
|
||||
elseif ( !Alive ) then
|
||||
GAMEMODE:UpdateHUD_Dead( WaitingToRespawn, InRound )
|
||||
else
|
||||
GAMEMODE:UpdateHUD_Alive( InRound )
|
||||
|
||||
if ( GetGlobalBool( "RoundWaitForPlayers" ) && ( ( team.NumPlayers( TEAM_HUNTERS ) < 1 ) || ( team.NumPlayers( TEAM_PROPS ) < 1 ) ) ) then
|
||||
GAMEMODE:UpdateHUD_WaitForPlayers( InRound )
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function GM:HUDPaint()
|
||||
|
||||
self.BaseClass:HUDPaint()
|
||||
|
||||
GAMEMODE:OnHUDPaint()
|
||||
GAMEMODE:RefreshHUD()
|
||||
|
||||
end
|
||||
|
||||
function GM:UpdateHUD_WaitForPlayers( InRound )
|
||||
|
||||
if ( InRound && Alive ) then
|
||||
|
||||
local WaitText = vgui.Create( "DHudElement" );
|
||||
WaitText:SizeToContents()
|
||||
WaitText:SetText( "Waiting for players..." )
|
||||
GAMEMODE:AddHUDItem( WaitText, 8 )
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function GM:UpdateHUD_RoundResult( RoundResult, Alive )
|
||||
|
||||
local txt = GetGlobalString( "RRText" )
|
||||
|
||||
if ( type( RoundResult ) == "number" ) && ( team.GetAllTeams()[ RoundResult ] && txt == "" ) then
|
||||
local TeamName = team.GetName( RoundResult )
|
||||
if ( TeamName ) then txt = TeamName .. " Wins!" end
|
||||
elseif ( type( RoundResult ) == "Player" && IsValid( RoundResult ) && txt == "" ) then
|
||||
txt = RoundResult:Name() .. " Wins!"
|
||||
end
|
||||
|
||||
local RespawnText = vgui.Create( "DHudElement" );
|
||||
RespawnText:SizeToContents()
|
||||
RespawnText:SetText( txt )
|
||||
GAMEMODE:AddHUDItem( RespawnText, 8 )
|
||||
|
||||
end
|
||||
|
||||
function GM:UpdateHUD_Observer( bWaitingToSpawn, InRound, ObserveMode, ObserveTarget )
|
||||
|
||||
local lbl = nil
|
||||
local txt = nil
|
||||
local col = Color( 255, 255, 255 );
|
||||
|
||||
if ( IsValid( ObserveTarget ) && ObserveTarget:IsPlayer() && ObserveTarget != LocalPlayer() && ObserveMode != OBS_MODE_ROAMING ) then
|
||||
lbl = "SPECTATING"
|
||||
txt = ObserveTarget:Nick()
|
||||
col = team.GetColor( ObserveTarget:Team() );
|
||||
end
|
||||
|
||||
if ( ObserveMode == OBS_MODE_DEATHCAM || ObserveMode == OBS_MODE_FREEZECAM ) then
|
||||
txt = "You Died!" // were killed by?
|
||||
end
|
||||
|
||||
if ( txt ) then
|
||||
local txtLabel = vgui.Create( "DHudElement" );
|
||||
txtLabel:SetText( txt )
|
||||
if ( lbl ) then txtLabel:SetLabel( lbl ) end
|
||||
txtLabel:SetTextColor( col )
|
||||
|
||||
GAMEMODE:AddHUDItem( txtLabel, 2 )
|
||||
end
|
||||
|
||||
|
||||
GAMEMODE:UpdateHUD_Dead( bWaitingToSpawn, InRound )
|
||||
|
||||
end
|
||||
|
||||
function GM:UpdateHUD_Dead( bWaitingToSpawn, InRound )
|
||||
|
||||
if ( !InRound && GAMEMODE.RoundBased ) then
|
||||
|
||||
local RespawnText = vgui.Create( "DHudElement" );
|
||||
RespawnText:SizeToContents()
|
||||
RespawnText:SetText( "Waiting for round start" )
|
||||
GAMEMODE:AddHUDItem( RespawnText, 8 )
|
||||
return
|
||||
|
||||
end
|
||||
|
||||
if ( bWaitingToSpawn ) then
|
||||
|
||||
local RespawnTimer = vgui.Create( "DHudCountdown" );
|
||||
RespawnTimer:SizeToContents()
|
||||
RespawnTimer:SetValueFunction( function() return LocalPlayer():GetNWFloat( "RespawnTime", 0 ) end )
|
||||
RespawnTimer:SetLabel( "SPAWN IN" )
|
||||
GAMEMODE:AddHUDItem( RespawnTimer, 8 )
|
||||
return
|
||||
|
||||
end
|
||||
|
||||
--[[
|
||||
if ( InRound ) then
|
||||
|
||||
local RoundTimer = vgui.Create( "DHudCountdown" );
|
||||
RoundTimer:SizeToContents()
|
||||
RoundTimer:SetValueFunction( function()
|
||||
if ( GetGlobalFloat( "RoundStartTime", 0 ) > CurTime() ) then return GetGlobalFloat( "RoundStartTime", 0 ) end
|
||||
return GetGlobalFloat( "RoundEndTime" ) end )
|
||||
RoundTimer:SetLabel( "TIME" )
|
||||
GAMEMODE:AddHUDItem( RoundTimer, 8 )
|
||||
return
|
||||
|
||||
end
|
||||
]]--
|
||||
|
||||
local Bar = vgui.Create( "DHudBar" )
|
||||
GAMEMODE:AddHUDItem( Bar, 8 )
|
||||
|
||||
-- This should show on dead players too
|
||||
|
||||
if ( InRound ) then
|
||||
|
||||
local TeamIndicator_Name_AddString = "(DEAD) "
|
||||
if ( LocalPlayer():Team() == TEAM_SPECTATOR ) then TeamIndicator_Name_AddString = "" end
|
||||
|
||||
local TeamIndicator = vgui.Create( "DHudUpdater" );
|
||||
TeamIndicator:SizeToContents()
|
||||
TeamIndicator:SetValueFunction( function()
|
||||
return TeamIndicator_Name_AddString..""..team.GetName( LocalPlayer():Team() )
|
||||
end )
|
||||
TeamIndicator:SetColorFunction( function()
|
||||
return team.GetColor( LocalPlayer():Team() )
|
||||
end )
|
||||
TeamIndicator:SetFont( "HudSelectionText" )
|
||||
Bar:AddItem( TeamIndicator )
|
||||
|
||||
local RoundNumber = vgui.Create( "DHudUpdater" );
|
||||
RoundNumber:SizeToContents()
|
||||
RoundNumber:SetValueFunction( function() return GetGlobalInt( "RoundNumber", 0 ) end )
|
||||
RoundNumber:SetLabel( "ROUND" )
|
||||
Bar:AddItem( RoundNumber )
|
||||
|
||||
local RoundTimer = vgui.Create( "DHudCountdown" );
|
||||
RoundTimer:SizeToContents()
|
||||
RoundTimer:SetValueFunction( function()
|
||||
if ( GetGlobalFloat( "RoundStartTime", 0 ) > CurTime() ) then return GetGlobalFloat( "RoundStartTime", 0 ) end
|
||||
return GetGlobalFloat( "RoundEndTime" ) end )
|
||||
RoundTimer:SetLabel( "TIME" )
|
||||
Bar:AddItem( RoundTimer )
|
||||
|
||||
end
|
||||
|
||||
if ( Team != TEAM_SPECTATOR && !Alive && !GAMEMODE.RoundBased ) then
|
||||
|
||||
local RespawnText = vgui.Create( "DHudElement" );
|
||||
RespawnText:SizeToContents()
|
||||
RespawnText:SetText( "Press Fire to Spawn" )
|
||||
GAMEMODE:AddHUDItem( RespawnText, 8 )
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function GM:UpdateHUD_Alive( InRound )
|
||||
|
||||
if ( GAMEMODE.RoundBased || GAMEMODE.TeamBased ) then
|
||||
|
||||
local Bar = vgui.Create( "DHudBar" )
|
||||
GAMEMODE:AddHUDItem( Bar, 2 )
|
||||
|
||||
if ( GAMEMODE.TeamBased && GAMEMODE.ShowTeamName ) then
|
||||
|
||||
local TeamIndicator = vgui.Create( "DHudUpdater" );
|
||||
TeamIndicator:SizeToContents()
|
||||
TeamIndicator:SetValueFunction( function()
|
||||
return team.GetName( LocalPlayer():Team() )
|
||||
end )
|
||||
TeamIndicator:SetColorFunction( function()
|
||||
return team.GetColor( LocalPlayer():Team() )
|
||||
end )
|
||||
TeamIndicator:SetFont( "HudSelectionText" )
|
||||
Bar:AddItem( TeamIndicator )
|
||||
|
||||
end
|
||||
|
||||
if ( GAMEMODE.RoundBased ) then
|
||||
|
||||
local RoundNumber = vgui.Create( "DHudUpdater" );
|
||||
RoundNumber:SizeToContents()
|
||||
RoundNumber:SetValueFunction( function() return GetGlobalInt( "RoundNumber", 0 ) end )
|
||||
RoundNumber:SetLabel( "ROUND" )
|
||||
Bar:AddItem( RoundNumber )
|
||||
|
||||
local RoundTimer = vgui.Create( "DHudCountdown" );
|
||||
RoundTimer:SizeToContents()
|
||||
RoundTimer:SetValueFunction( function()
|
||||
if ( GetGlobalFloat( "RoundStartTime", 0 ) > CurTime() ) then return GetGlobalFloat( "RoundStartTime", 0 ) end
|
||||
return GetGlobalFloat( "RoundEndTime" ) end )
|
||||
RoundTimer:SetLabel( "TIME" )
|
||||
Bar:AddItem( RoundTimer )
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
--[[
|
||||
this thing is obsolete/depcretaed. Sorry!
|
||||
|
||||
function GM:UpdateHUD_AddedTime( iTimeAdded )
|
||||
// to do or to override, your choice
|
||||
end
|
||||
usermessage.Hook( "RoundAddedTime", function( um ) if( GAMEMODE && um ) then GAMEMODE:UpdateHUD_AddedTime( um:ReadFloat() ) end end )
|
||||
]]--
|
||||
Reference in New Issue
Block a user