198 lines
5.8 KiB
Lua
198 lines
5.8 KiB
Lua
|
|
||
|
function surface.CreateLegacyFont(font, size, weight, antialias, additive, name, shadow, outline, blursize)
|
||
|
surface.CreateFont(name, {font = font, size = size, weight = weight, antialias = antialias, additive = additive, shadow = shadow, outline = outline, blursize = blursize})
|
||
|
end
|
||
|
|
||
|
include( 'shared.lua' )
|
||
|
include( 'cl_splashscreen.lua' )
|
||
|
include( 'cl_selectscreen.lua' )
|
||
|
include( 'cl_gmchanger.lua' )
|
||
|
include( 'cl_help.lua' )
|
||
|
include( 'skin.lua' )
|
||
|
include( 'vgui/vgui_hudlayout.lua' )
|
||
|
include( 'vgui/vgui_hudelement.lua' )
|
||
|
include( 'vgui/vgui_hudbase.lua' )
|
||
|
include( 'vgui/vgui_hudcommon.lua' )
|
||
|
include( 'cl_hud.lua' )
|
||
|
include( 'cl_deathnotice.lua' )
|
||
|
include( 'cl_scores.lua' )
|
||
|
include( 'cl_notify.lua' )
|
||
|
|
||
|
language.Add( "env_laser", "Laser" )
|
||
|
language.Add( "env_explosion", "Explosion" )
|
||
|
language.Add( "func_door", "Door" )
|
||
|
language.Add( "func_door_rotating", "Door" )
|
||
|
language.Add( "trigger_hurt", "Hazard" )
|
||
|
language.Add( "func_rotating", "Hazard" )
|
||
|
language.Add( "worldspawn", "Gravity" )
|
||
|
language.Add( "prop_physics", "Prop" )
|
||
|
language.Add( "prop_physics_respawnable", "Prop" )
|
||
|
language.Add( "prop_physics_multiplayer", "Prop" )
|
||
|
language.Add( "entityflame", "Fire" )
|
||
|
|
||
|
surface.CreateLegacyFont( "Roboto", 40, 700, true, false, "FRETTA_HUGE" )
|
||
|
surface.CreateLegacyFont( "Roboto", 40, 700, true, false, "FRETTA_HUGE_SHADOW", true )
|
||
|
surface.CreateLegacyFont( "Roboto", 24, 700, true, false, "FRETTA_LARGE" )
|
||
|
surface.CreateLegacyFont( "Roboto", 24, 700, true, false, "FRETTA_LARGE_SHADOW", true )
|
||
|
surface.CreateLegacyFont( "Roboto", 19, 700, true, false, "FRETTA_MEDIUM" )
|
||
|
surface.CreateLegacyFont( "Roboto", 19, 700, true, false, "FRETTA_MEDIUM_SHADOW", true )
|
||
|
surface.CreateLegacyFont( "Roboto", 16, 700, true, false, "FRETTA_SMALL" )
|
||
|
|
||
|
surface.CreateLegacyFont( "Roboto", ScreenScale( 10 ), 700, true, false, "FRETTA_NOTIFY", true )
|
||
|
|
||
|
CreateClientConVar( "cl_spec_mode", "5", true, true )
|
||
|
|
||
|
function GM:Initialize()
|
||
|
|
||
|
self.BaseClass:Initialize()
|
||
|
|
||
|
end
|
||
|
|
||
|
function GM:InitPostEntity()
|
||
|
|
||
|
if ( GAMEMODE.TeamBased ) then
|
||
|
GAMEMODE:ShowTeam();
|
||
|
end
|
||
|
|
||
|
GAMEMODE:ShowSplash();
|
||
|
|
||
|
end
|
||
|
|
||
|
local CircleMat = Material( "SGM/playercircle" );
|
||
|
|
||
|
function GM:DrawPlayerRing( pPlayer )
|
||
|
|
||
|
if ( !IsValid( pPlayer ) ) then return end
|
||
|
if ( !pPlayer:GetNWBool( "DrawRing", false ) ) then return end
|
||
|
if ( !pPlayer:Alive() ) then return end
|
||
|
|
||
|
local trace = {}
|
||
|
trace.start = pPlayer:GetPos() + Vector(0,0,50)
|
||
|
trace.endpos = trace.start + Vector(0,0,-300)
|
||
|
trace.filter = pPlayer
|
||
|
|
||
|
local tr = util.TraceLine( trace )
|
||
|
|
||
|
if not tr.HitWorld then
|
||
|
tr.HitPos = pPlayer:GetPos()
|
||
|
end
|
||
|
|
||
|
local color = table.Copy( team.GetColor( pPlayer:Team() ) )
|
||
|
color.a = 40;
|
||
|
|
||
|
render.SetMaterial( CircleMat )
|
||
|
render.DrawQuadEasy( tr.HitPos + tr.HitNormal, tr.HitNormal, GAMEMODE.PlayerRingSize, GAMEMODE.PlayerRingSize, color )
|
||
|
|
||
|
end
|
||
|
|
||
|
hook.Add( "PrePlayerDraw", "DrawPlayerRing", function( ply ) GAMEMODE:DrawPlayerRing( ply ) end )
|
||
|
|
||
|
function GM:HUDShouldDraw( name )
|
||
|
|
||
|
if GAMEMODE.ScoreboardVisible then return false end
|
||
|
|
||
|
// commented out until HUD elements are made
|
||
|
//for k, v in pairs{"CHudHealth", "CHudBattery", "CHudAmmo", "CHudSecondaryAmmo"} do
|
||
|
// if name == v then return false end
|
||
|
//end
|
||
|
|
||
|
if name == "CHudDamageIndicator" and not LocalPlayer():Alive() then
|
||
|
return false
|
||
|
end
|
||
|
|
||
|
return true
|
||
|
|
||
|
end
|
||
|
|
||
|
function GM:OnSpawnMenuOpen()
|
||
|
RunConsoleCommand( "lastinv" ); // Fretta is derived from base and has no spawn menu, so give it a use, make it lastinv.
|
||
|
end
|
||
|
|
||
|
|
||
|
function GM:PlayerBindPress( pl, bind, down )
|
||
|
|
||
|
// Redirect binds to the spectate system
|
||
|
if ( pl:IsObserver() && down ) then
|
||
|
|
||
|
if ( bind == "+jump" ) then RunConsoleCommand( "spec_mode" ) end
|
||
|
if ( bind == "+attack" ) then RunConsoleCommand( "spec_next" ) end
|
||
|
if ( bind == "+attack2" ) then RunConsoleCommand( "spec_prev" ) end
|
||
|
|
||
|
end
|
||
|
|
||
|
return false
|
||
|
|
||
|
end
|
||
|
|
||
|
/*---------------------------------------------------------
|
||
|
Name: gamemode:GetTeamColor( ent )
|
||
|
---------------------------------------------------------*/
|
||
|
function GM:GetTeamColor( ent )
|
||
|
|
||
|
if ( GAMEMODE.SelectColor && IsValid( ent ) ) then
|
||
|
|
||
|
local clr = ent:GetNWString( "NameColor", -1 )
|
||
|
if ( clr && clr != -1 && clr != "" ) then
|
||
|
clr = list.Get( "PlayerColours" )[ clr ]
|
||
|
if ( clr ) then return clr end
|
||
|
end
|
||
|
|
||
|
end
|
||
|
|
||
|
local team = TEAM_UNASSIGNED
|
||
|
if ( ent.Team and IsValid(ent) ) then team = ent:Team() end
|
||
|
return GAMEMODE:GetTeamNumColor( team )
|
||
|
|
||
|
end
|
||
|
|
||
|
|
||
|
/*---------------------------------------------------------
|
||
|
Name: ShouldDrawLocalPlayer
|
||
|
---------------------------------------------------------*/
|
||
|
function GM:ShouldDrawLocalPlayer( ply )
|
||
|
return ply:CallClassFunction( "ShouldDrawLocalPlayer" )
|
||
|
end
|
||
|
|
||
|
|
||
|
/*---------------------------------------------------------
|
||
|
Name: InputMouseApply
|
||
|
---------------------------------------------------------*/
|
||
|
function GM:InputMouseApply( cmd, x, y, angle )
|
||
|
|
||
|
return LocalPlayer():CallClassFunction( "InputMouseApply", cmd, x, y, angle )
|
||
|
|
||
|
end
|
||
|
|
||
|
function GM:TeamChangeNotification( ply, oldteam, newteam )
|
||
|
|
||
|
local random_spectator_text = {
|
||
|
"to watch and chill.",
|
||
|
"to see them hanging around.",
|
||
|
" ", -- you serious?
|
||
|
"to see the things."
|
||
|
}
|
||
|
|
||
|
if( ply && ply:IsValid() ) then
|
||
|
local nick = ply:Nick();
|
||
|
local oldTeamColor = team.GetColor( oldteam );
|
||
|
local newTeamName = team.GetName( newteam );
|
||
|
local newTeamColor = team.GetColor( newteam );
|
||
|
|
||
|
if( newteam == TEAM_SPECTATOR ) then
|
||
|
chat.AddText( oldTeamColor, nick, color_white, " joined the ", newTeamColor, newTeamName , color_white, " "..table.Random(random_spectator_text));
|
||
|
else
|
||
|
chat.AddText( oldTeamColor, nick, color_white, " joined ", newTeamColor, newTeamName );
|
||
|
end
|
||
|
|
||
|
surface.PlaySound("buttons/button17.wav")
|
||
|
end
|
||
|
end
|
||
|
net.Receive("fretta_teamchange", function()
|
||
|
local ply = net.ReadEntity()
|
||
|
local oldt = net.ReadInt(12)
|
||
|
local newt = net.ReadInt(12)
|
||
|
|
||
|
if (GAMEMODE) then
|
||
|
GAMEMODE:TeamChangeNotification(ply, oldt, newt)
|
||
|
end
|
||
|
end)
|