diff options
Diffstat (limited to 'ftp_gmstranded/gamemode/cl_scoreboard.lua')
| -rw-r--r-- | ftp_gmstranded/gamemode/cl_scoreboard.lua | 231 |
1 files changed, 0 insertions, 231 deletions
diff --git a/ftp_gmstranded/gamemode/cl_scoreboard.lua b/ftp_gmstranded/gamemode/cl_scoreboard.lua deleted file mode 100644 index e832a4a..0000000 --- a/ftp_gmstranded/gamemode/cl_scoreboard.lua +++ /dev/null @@ -1,231 +0,0 @@ - -surface.CreateFont( "ScoreboardText", { - font = "Tahoma", - size = 16, - weight = 1000, - antialias = true, - additive = false, -} ) - -surface.CreateFont( "ScoreboardSub", { - font = "coolvetica", - size = 24, - weight = 500, - antialias = true, - additive = false, -} ) - -surface.CreateFont( "ScoreboardHead", { - font = "coolvetica", - size = 48, - weight = 500, - antialias = true, - additive = false, -} ) - -function GM:ScoreboardShow() - GAMEMODE.ShowScoreboard = true -end - -function GM:ScoreboardHide() - GAMEMODE.ShowScoreboard = false -end - -function GM:GetTeamScoreInfo() - local TeamInfo = {} - - for id, pl in pairs(player.GetAll()) do - local _team = pl:Team() - local _frags = pl:Frags() - local _deaths = pl:Deaths() - local _ping = pl:Ping() - - if (!TeamInfo[_team]) then - TeamInfo[_team] = {} - TeamInfo[_team].TeamName = team.GetName(_team) - TeamInfo[_team].Color = team.GetColor(_team) - TeamInfo[_team].Players = {} - end - - local PlayerInfo = {} - PlayerInfo.Frags = _frags - PlayerInfo.Deaths = pl:GetNWInt("Survival") - PlayerInfo.Score = _frags - PlayerInfo.Ping = _ping - PlayerInfo.Name = pl:Nick() - PlayerInfo.PlayerObj = pl - - if ( pl:IsAdmin() ) then PlayerInfo.Name = "[ADMIN] " .. PlayerInfo.Name end - if ( pl:IsDeveloper() ) then PlayerInfo.Name = "[DEVELOPER] " .. pl:Nick() end - if ( pl:GetNWBool( "AFK" ) ) then PlayerInfo.Name = PlayerInfo.Name .. " [AFK]" end - - local insertPos = #TeamInfo[_team].Players + 1 - for idx, info in pairs(TeamInfo[_team].Players) do - if (PlayerInfo.Frags > info.Frags) then - insertPos = idx - break - elseif (PlayerInfo.Frags == info.Frags) then - if (PlayerInfo.Deaths < info.Deaths) then - insertPos = idx - break - elseif (PlayerInfo.Deaths == info.Deaths) then - if (PlayerInfo.Name < info.Name) then - insertPos = idx - break - end - end - end - end - - table.insert( TeamInfo[ _team ].Players, insertPos, PlayerInfo ) - end - - return TeamInfo -end - -function GM:HUDDrawScoreBoard() - if ( !GAMEMODE.ShowScoreboard ) then return end - - if ( !GAMEMODE.ScoreDesign ) then - GAMEMODE.ScoreDesign = {} - GAMEMODE.ScoreDesign.HeaderY = 0 - GAMEMODE.ScoreDesign.Height = ScrH() / 2 - end - - local alpha = 255 - local ScoreboardInfo = self:GetTeamScoreInfo() - local xOffset = ScrW() / 8 - local yOffset = 32 - local scrWidth = ScrW() - local scrHeight = ScrH() - 64 - local boardWidth = scrWidth - ( 2 * xOffset ) - local boardHeight = scrHeight - local colWidth = 75 - - boardWidth = math.Clamp( boardWidth, 400, 600 ) - boardHeight = GAMEMODE.ScoreDesign.Height - - xOffset = (ScrW() - boardWidth) / 2.0 - yOffset = (ScrH() - boardHeight) / 2.0 - yOffset = yOffset - ScrH() / 4.0 - yOffset = math.Clamp( yOffset, 32, ScrH() ) - - surface.SetDrawColor( 0, 0, 0, 200 ) - surface.DrawRect( xOffset, yOffset, boardWidth, boardHeight ) - - surface.SetDrawColor( 0, 0, 0, 150 ) - surface.DrawOutlinedRect( xOffset, yOffset, boardWidth, boardHeight ) - - surface.SetDrawColor( 0, 0, 0, 50 ) - //surface.DrawOutlinedRect( xOffset - 1, yOffset - 1, boardWidth + 2, boardHeight + 2 ) - - local hostname = GetGlobalString( "ServerName" ) - local gamemodeName = GAMEMODE.Name .. " - " .. GAMEMODE.Author - - if ( string.len( hostname ) > 32 ) then - surface.SetFont("ScoreboardSub") - else - surface.SetFont("ScoreboardHead") - end - - surface.SetTextColor(255, 255, 255, 255) - local txWidth, txHeight = surface.GetTextSize( hostname ) - local y = yOffset + 5 - surface.SetTextPos(xOffset + (boardWidth / 2) - (txWidth / 2), y) - surface.DrawText(hostname) - - /*y = y + txHeight + 2 - - surface.SetTextColor(255, 255, 255, 255) - surface.SetFont("ScoreboardSub") - local txWidth, txHeight = surface.GetTextSize(gamemodeName) - surface.SetTextPos(xOffset + (boardWidth / 2) - (txWidth / 2), y) - surface.DrawText(gamemodeName)*/ - - y = y + txHeight + 4 - GAMEMODE.ScoreDesign.HeaderY = y - yOffset - - surface.SetDrawColor(0, 0, 0, 100) - surface.DrawRect(xOffset, y - 1, boardWidth, 1) - - surface.SetDrawColor(255, 255, 255, 20) - surface.DrawRect(xOffset + boardWidth - (colWidth * 1), y, colWidth, boardHeight - y + yOffset) - - surface.SetDrawColor(255, 255, 255, 20) - surface.DrawRect(xOffset + boardWidth - (colWidth * 3), y, colWidth, boardHeight - y + yOffset) - - surface.SetFont("ScoreboardText") - local txWidth, txHeight = surface.GetTextSize("W") - - surface.SetDrawColor(0, 0, 0, 100) - surface.DrawRect(xOffset, y, boardWidth, txHeight + 6) - - y = y + 2 - - surface.SetTextPos(xOffset + 16, y) - surface.DrawText("#Name") - surface.SetTextPos(xOffset + boardWidth - (colWidth * 3) + 8, y) - surface.DrawText("#Score") - surface.SetTextPos(xOffset + boardWidth - (colWidth * 2) + 8, y) - surface.DrawText("Level") - surface.SetTextPos(xOffset + boardWidth - (colWidth * 1) + 8, y) - surface.DrawText("#Ping") - - y = y + txHeight + 4 - - local yPosition = y - for team, info in pairs(ScoreboardInfo) do - local teamText = info.TeamName .. " (" .. #info.Players .. " Players)" - - surface.SetFont("ScoreboardText") - if (info.Color.r < 50 and info.Color.g < 50 and info.Color.b < 50) then surface.SetTextColor(255, 255, 255, 255) else surface.SetTextColor(0, 0, 0, 255) end - - txWidth, txHeight = surface.GetTextSize(teamText) - surface.SetDrawColor(info.Color.r, info.Color.g, info.Color.b, 255) - surface.DrawRect(xOffset + 1, yPosition, boardWidth - 2, txHeight + 4) - yPosition = yPosition + 2 - surface.SetTextPos(xOffset + boardWidth / 2 - txWidth / 2, yPosition) - - surface.DrawText(teamText) - yPosition = yPosition + txHeight + 4 - - for index, plinfo in pairs(info.Players) do - surface.SetFont("ScoreboardText") - surface.SetTextColor(info.Color.r, info.Color.g, info.Color.b, 200) - surface.SetTextPos(xOffset + 16, yPosition) - txWidth, txHeight = surface.GetTextSize(plinfo.Name) - - if (plinfo.PlayerObj == LocalPlayer()) then - surface.SetDrawColor(info.Color.r, info.Color.g, info.Color.b, 64) - surface.DrawRect(xOffset + 1, yPosition, boardWidth - 2, txHeight + 2) - surface.SetTextColor(info.Color.r, info.Color.g, info.Color.b, 255) - end - - local px, py = xOffset + 16, yPosition - local textcolor = Color(info.Color.r, info.Color.g, info.Color.b, alpha) - local shadowcolor = Color(0, 0, 0, alpha * 0.8) - - draw.SimpleText(plinfo.Name, "ScoreboardText", px + 1, py + 1, shadowcolor) - draw.SimpleText(plinfo.Name, "ScoreboardText", px, py, textcolor) - - px = xOffset + boardWidth - (colWidth * 3) + 8 - draw.SimpleText(plinfo.Frags, "ScoreboardText", px + 1, py + 1, shadowcolor) - draw.SimpleText(plinfo.Frags, "ScoreboardText", px, py, textcolor) - - px = xOffset + boardWidth - (colWidth * 2) + 8 - draw.SimpleText(plinfo.Deaths, "ScoreboardText", px + 1, py + 1, shadowcolor) - draw.SimpleText(plinfo.Deaths, "ScoreboardText", px, py, textcolor) - - px = xOffset + boardWidth - (colWidth * 1) + 8 - draw.SimpleText(plinfo.Ping, "ScoreboardText", px + 1, py + 1, shadowcolor) - draw.SimpleText(plinfo.Ping, "ScoreboardText", px, py, textcolor) - - yPosition = yPosition + txHeight + 3 - end - end - - yPosition = yPosition + 1 - - GAMEMODE.ScoreDesign.Height = (GAMEMODE.ScoreDesign.Height * 2) + (yPosition - yOffset) - GAMEMODE.ScoreDesign.Height = GAMEMODE.ScoreDesign.Height / 3 -end |
