Initial Reupload
This commit is contained in:
240
gamemodes/fretta/gamemode/vgui/vgui_vote.lua
Normal file
240
gamemodes/fretta/gamemode/vgui/vgui_vote.lua
Normal file
@@ -0,0 +1,240 @@
|
||||
local PANEL = {}
|
||||
|
||||
function PANEL:Init()
|
||||
|
||||
self:SetSkin( GAMEMODE.HudSkin )
|
||||
self:ParentToHUD()
|
||||
|
||||
self.ControlCanvas = vgui.Create( "Panel", self )
|
||||
self.ControlCanvas:MakePopup()
|
||||
self.ControlCanvas:SetKeyboardInputEnabled( false )
|
||||
|
||||
self.lblCountDown = vgui.Create( "DLabel", self.ControlCanvas )
|
||||
self.lblCountDown:SetText( "60" )
|
||||
|
||||
self.lblActionName = vgui.Create( "DLabel", self.ControlCanvas )
|
||||
|
||||
self.ctrlList = vgui.Create( "DPanelList", self.ControlCanvas )
|
||||
self.ctrlList:SetDrawBackground( false )
|
||||
self.ctrlList:SetSpacing( 2 )
|
||||
self.ctrlList:SetPadding( 2 )
|
||||
self.ctrlList:EnableHorizontal( true )
|
||||
self.ctrlList:EnableVerticalScrollbar()
|
||||
|
||||
self.Peeps = {}
|
||||
|
||||
for i =1, game.MaxPlayers() do
|
||||
|
||||
self.Peeps[i] = vgui.Create( "DImage", self.ctrlList:GetCanvas() )
|
||||
self.Peeps[i]:SetSize( 16, 16 )
|
||||
self.Peeps[i]:SetZPos( 1000 )
|
||||
self.Peeps[i]:SetVisible( false )
|
||||
self.Peeps[i]:SetImage( "icon16/emoticon_smile.png" )
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function PANEL:PerformLayout()
|
||||
|
||||
local cx, cy = chat.GetChatBoxPos()
|
||||
|
||||
self:SetPos( 0, 0 )
|
||||
self:SetSize( ScrW(), ScrH() )
|
||||
|
||||
self.ControlCanvas:StretchToParent( 0, 0, 0, 0 )
|
||||
self.ControlCanvas:SetWide( 550 )
|
||||
self.ControlCanvas:SetTall( cy - 30 )
|
||||
self.ControlCanvas:SetPos( 0, 30 )
|
||||
self.ControlCanvas:CenterHorizontal();
|
||||
self.ControlCanvas:SetZPos( 0 )
|
||||
|
||||
self.lblCountDown:SetFont( "FRETTA_MEDIUM_SHADOW" )
|
||||
self.lblCountDown:AlignRight()
|
||||
self.lblCountDown:SetTextColor( color_white )
|
||||
self.lblCountDown:SetContentAlignment( 6 )
|
||||
self.lblCountDown:SetWidth( 500 )
|
||||
|
||||
self.lblActionName:SetFont( "FRETTA_LARGE_SHADOW" )
|
||||
self.lblActionName:AlignLeft()
|
||||
self.lblActionName:SetTextColor( color_white )
|
||||
self.lblActionName:SizeToContents()
|
||||
self.lblActionName:SetWidth( 500 )
|
||||
|
||||
self.ctrlList:StretchToParent( 0, 60, 0, 0 )
|
||||
|
||||
end
|
||||
|
||||
function PANEL:ChooseGamemode()
|
||||
|
||||
self.lblActionName:SetText( "Which Gamemode Next?" )
|
||||
self.ctrlList:Clear()
|
||||
|
||||
for name, gamemode in RandomPairs( g_PlayableGamemodes ) do
|
||||
|
||||
local lbl = vgui.Create( "DButton", self.ctrlList )
|
||||
lbl:SetText( gamemode.label )
|
||||
|
||||
Derma_Hook( lbl, "Paint", "Paint", "GamemodeButton" )
|
||||
Derma_Hook( lbl, "ApplySchemeSettings", "Scheme", "GamemodeButton" )
|
||||
Derma_Hook( lbl, "PerformLayout", "Layout", "GamemodeButton" )
|
||||
|
||||
lbl:SetTall( 24 )
|
||||
lbl:SetWide( 240 )
|
||||
|
||||
local desc = tostring( gamemode.description );
|
||||
if ( gamemode.author ) then desc = desc .. "\n\nBy: " .. tostring( gamemode.author ) end
|
||||
if ( gamemode.authorurl ) then desc = desc .. "\n" .. tostring( gamemode.authorurl ) end
|
||||
|
||||
lbl:SetTooltip( desc )
|
||||
|
||||
lbl.WantName = name
|
||||
lbl.NumVotes = 0
|
||||
lbl.DoClick = function() if GetGlobalFloat( "VoteEndTime", 0 ) - CurTime() <= 0 then return end RunConsoleCommand( "votegamemode", name ) end
|
||||
|
||||
self.ctrlList:AddItem( lbl )
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function PANEL:ChooseMap( gamemode )
|
||||
|
||||
self.lblActionName:SetText( "Which Map?" )
|
||||
self:ResetPeeps()
|
||||
self.ctrlList:Clear()
|
||||
|
||||
local gm = g_PlayableGamemodes[ gamemode ]
|
||||
if ( !gm ) then MsgN( "GAMEMODE MISSING, COULDN'T VOTE FOR MAP ", gamemode ) return end
|
||||
|
||||
for id, mapname in RandomPairs( gm.maps ) do
|
||||
local lbl = vgui.Create( "DButton", self.ctrlList )
|
||||
lbl:SetText( mapname )
|
||||
|
||||
Derma_Hook( lbl, "Paint", "Paint", "GamemodeButton" )
|
||||
Derma_Hook( lbl, "ApplySchemeSettings", "Scheme", "GamemodeButton" )
|
||||
Derma_Hook( lbl, "PerformLayout", "Layout", "GamemodeButton" )
|
||||
|
||||
lbl:SetTall( 24 )
|
||||
lbl:SetWide( 240 )
|
||||
|
||||
lbl.WantName = mapname
|
||||
lbl.NumVotes = 0
|
||||
lbl.DoClick = function() if GetGlobalFloat( "VoteEndTime", 0 ) - CurTime() <= 0 then return end RunConsoleCommand( "votemap", mapname ) end
|
||||
|
||||
--[[if file.Exists("maps/"..mapname..".png", "MOD") then
|
||||
lbl:SetTall(72)
|
||||
|
||||
local Image = vgui.Create("DImage", lbl)
|
||||
Image:SetImage("../maps/"..mapname..".png")
|
||||
Image:SizeToContents()
|
||||
Image:SetSize(math.min(Image:GetWide(), 64), math.min(Image:GetTall(), 64))
|
||||
Image:AlignRight(4)
|
||||
Image:CenterVertical()
|
||||
end]]
|
||||
|
||||
self.ctrlList:AddItem( lbl )
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function PANEL:ResetPeeps()
|
||||
|
||||
for i=1, game.MaxPlayers() do
|
||||
self.Peeps[i]:SetPos( math.random( 0, 600 ), -16 )
|
||||
self.Peeps[i]:SetVisible( false )
|
||||
self.Peeps[i].strVote = nil
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function PANEL:FindWantBar( name )
|
||||
|
||||
for k, v in pairs( self.ctrlList:GetItems() ) do
|
||||
if ( v.WantName == name ) then return v end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function PANEL:PeepThink( peep, ent )
|
||||
|
||||
if ( !IsValid( ent ) ) then
|
||||
peep:SetVisible( false )
|
||||
return
|
||||
end
|
||||
|
||||
peep:SetTooltip( ent:Nick() )
|
||||
peep:SetMouseInputEnabled( true )
|
||||
|
||||
if ( !peep.strVote ) then
|
||||
peep:SetVisible( true )
|
||||
peep:SetPos( math.random( 0, 600 ), -16 )
|
||||
if ( ent == LocalPlayer() ) then
|
||||
peep:SetImage( "icon16/star.png" )
|
||||
end
|
||||
end
|
||||
|
||||
peep.strVote = ent:GetNWString( "Wants", "" )
|
||||
local bar = self:FindWantBar( peep.strVote )
|
||||
if ( IsValid( bar ) ) then
|
||||
|
||||
bar.NumVotes = bar.NumVotes + 1
|
||||
local vCurrentPos = Vector( peep.x, peep.y, 0 )
|
||||
local vNewPos = Vector( (bar.x + bar:GetWide()) - 15 * bar.NumVotes - 4, bar.y + ( bar:GetTall() * 0.5 - 8 ), 0 )
|
||||
|
||||
if ( !peep.CurPos || peep.CurPos != vNewPos ) then
|
||||
|
||||
peep:MoveTo( vNewPos.x, vNewPos.y, 0.2 )
|
||||
peep.CurPos = vNewPos
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function PANEL:Think()
|
||||
|
||||
local Seconds = GetGlobalFloat( "VoteEndTime", 0 ) - CurTime()
|
||||
if ( Seconds < 0 ) then Seconds = 0 end
|
||||
|
||||
self.lblCountDown:SetText( Format( "%i", Seconds ) )
|
||||
|
||||
for k, v in pairs( self.ctrlList:GetItems() ) do
|
||||
v.NumVotes = 0
|
||||
end
|
||||
|
||||
for i=1, game.MaxPlayers() do
|
||||
self:PeepThink( self.Peeps[i], Entity(i) )
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function PANEL:Paint()
|
||||
|
||||
Derma_DrawBackgroundBlur( self )
|
||||
|
||||
local CenterY = ScrH() / 2.0
|
||||
local CenterX = ScrW() / 2.0
|
||||
|
||||
surface.SetDrawColor( 0, 0, 0, 200 );
|
||||
surface.DrawRect( 0, 0, ScrW(), ScrH() );
|
||||
|
||||
end
|
||||
|
||||
function PANEL:FlashItem( itemname )
|
||||
|
||||
local bar = self:FindWantBar( itemname )
|
||||
if ( !IsValid( bar ) ) then return end
|
||||
|
||||
timer.Simple( 0.0, function() bar.bgColor = Color( 0, 255, 255 ) surface.PlaySound( "hl1/fvox/blip.wav" ) end )
|
||||
timer.Simple( 0.2, function() bar.bgColor = nil end )
|
||||
timer.Simple( 0.4, function() bar.bgColor = Color( 0, 255, 255 ) surface.PlaySound( "hl1/fvox/blip.wav" ) end )
|
||||
timer.Simple( 0.6, function() bar.bgColor = nil end )
|
||||
timer.Simple( 0.8, function() bar.bgColor = Color( 0, 255, 255 ) surface.PlaySound( "hl1/fvox/blip.wav" ) end )
|
||||
timer.Simple( 1.0, function() bar.bgColor = Color( 100, 100, 100 ) end )
|
||||
|
||||
end
|
||||
|
||||
derma.DefineControl( "VoteScreen", "", PANEL, "DPanel" )
|
||||
Reference in New Issue
Block a user