All pastes #910423 Raw Edit

Stuff

public text v1 · immutable
·published 2008-02-19 22:59 UTC
rendered paste body

PlayerMenuOn = false;

if( PlayerMenuParent ) then 
	PlayerMenuParent:Remove();
end

if( PlayerMenuContent ) then
	PlayerMenuContent:Remove();
end

if( PlayerMenuRadio ) then
	PlayerMenuRadio:Remove();
end

if( PlayerShop ) then
	PlayerShop:Remove();
end

if( CombineRations ) then
	CombineRations:Remove();
end

PlayerMenuParent = nil;
PlayerMenuContent = nil;
PlayerMenuRadio = nil;
PlayerShop = nil;
CombineRations = nil;

function ClosePlayerMenu()

	PlayerMenuOn = false;
	GUIClickerCount = GUIClickerCount - 1;
	GUIClickerEnabled = true;
	
	PlayerMenuParent:SetVisible( false );
	
	if( PlayerMenuRadio ) then
		PlayerMenuRadio:SetVisible( false );
		PlayerMenuRadio.FreqEntry:OnKeyCodePressed( 64 );
	end
	
	if( PlayerShop ) then
		PlayerShop:SetVisible( false );
	end
	
	if( CombineRations ) then
		CombineRations:SetVisible( false );
	end
	
	gui.EnableScreenClicker( false );
	
end

function PlayerMenuThink()

	if( PlayerMenuOn and PlayerMenuParent and PlayerMenuParent:IsVisible() ) then
	
		if( ( not LocalPlayer():IsCombineDefense() and LocalPlayer():HasItem( "radio" ) ) and not PlayerMenuRadio ) then
		
			CreatePlayerMenuRadio();
			
		end
		
		if( ( LocalPlayer():IsCombineDefense() ) and PlayerMenuRadio ) then
		
			PlayerMenuRadio:Remove();	
			PlayerMenuRadio = nil;
		
		end
		
		if( PlayerMenuRadio and LocalPlayer():HasItem( "radio" ) and not PlayerMenuRadio:IsVisible() ) then
			PlayerMenuRadio:SetVisible( true );
			PlayerMenuRadio.FreqEntry:SetText( math.Round( GetFloat( "radiofreq" ) * 100 ) / 100 );
		end
		
		if( not PlayerShop and string.find( LocalPlayer():GetNWString( "businessflags" ), "d" ) ) then
		
			CreatePlayerShop();
		
		end
		
		if( PlayerShop and not PlayerShop:IsVisible() and string.find( LocalPlayer():GetNWString( "businessflags" ), "d" ) ) then
		
			PlayerShop:SetVisible( true );
		
		end
		
		if( PlayerShop and not string.find( LocalPlayer():GetNWString( "businessflags" ), "d" ) ) then
		
			PlayerShop:Remove();
			PlayerShop = nil;
			
		end
		
		if( not CombineRations and LocalPlayer():IsCombineDefense() ) then
		
			CreateCombineRations();
		
		end
		
		if( CombineRations and not CombineRations:IsVisible() and LocalPlayer():IsCombineDefense() ) then
		
			CombineRations:SetVisible( true );
		
		end		
		
		if( CombineRations and not LocalPlayer():IsCombineDefense() ) then
		
			CombineRations:Remove();
			CombineRations = nil;
		
		end
	
	end

end
hook.Add( "Think", "PlayerMenuThink", PlayerMenuThink );

function msgTogglePlayerMenu()

	PlayerMenuOn = !PlayerMenuOn;
	
	if( PlayerMenuOn ) then
	
		GUIClickerEnabled = true;
		GUIClickerCount = GUIClickerCount + 1;
	
		if( not PlayerMenuParent ) then
		
			CreatePlayerMenuVGUI();
		
		end
		
		PlayerMenuParent:SetVisible( true );
	
	end

	gui.EnableScreenClicker( GUIClickerEnabled );

end
usermessage.Hook( "TogglePlayerMenu", msgTogglePlayerMenu );

function ChangeMenu( but )

	local id = but.MenuID;

	CreatePlayerMenuContentVGUI();
	CreatePlayerMenuSubContentVGUI( id );
	
end

surface.CreateFont( "TargetID", 16, 500, true, false, "SmallTargetID" );

function CreateCombineRations()

	local function CombineRationPaint()
	
		surface.SetFont( "DefaultSmall" );
		CombineRations.RationCount:SetText( "Ration Count: " .. GetGlobalInt( "CombineRations" ) );
		CombineRations.RationCount:SetSize( surface.GetTextSize( "Ration Count: " .. GetGlobalInt( "CombineRations" ) ), 25 );
	
	end
	
	local function DropRation()
	
		LocalPlayer():ConCommand( "rp_dropration\n" );
	
	end

	CombineRations = vgui.Create( "TacoPanel" );
	CombineRations:SetPos( 10, 10 );
	CombineRations:SetSize( 220, 75 );
	CombineRations:EnableTitle( false );
	CombineRations:EnableCloseButton( false );
	CombineRations:EnableDragging( false );
	CombineRations:EnableFullWindow( true );	
	CombineRations:SetPaintHook( CombineRationPaint );
	
	local spawn = vgui.Create( "SpawnIcon", CombineRations );
	spawn:SetPos( 5, 5 );
	spawn:SetSize( 64, 64 );
	spawn:SetModel( "models/weapons/w_package.mdl" );
	spawn:SetMouseInputEnabled( false );
	
	CombineRations:AddLabel( "Rations come periodically", "DefaultSmall", 75, 5, Color( 255, 255, 255, 255 ) );

	CombineRations.RationCount = CombineRations:AddLabel( "", "DefaultSmall", 75, 15, Color( 255, 255, 255, 255 ) );

	local but = CombineRations:AddButton( "Drop", 75, 45, 35, 15 );
	but:SetCallback( DropRation );
	but:SetRoundness( 0 );
	
end

function CreatePlayerMenuSubContentVGUI( id )

	if( id == 0 ) then
	
		PlayerMenuParent:SetTitle( "Player Menu - Stats" );
	
		PlayerMenuContent:SetPaintHook( RenderStatsMenu );
		PlayerMenuContent:AddLabel( "Physical Stats", "TargetID", 5, 5, Color( 255, 255, 255, 255 ) );
		
		PlayerMenuContent:AddLabel( "Strength - How strong you are", "DefaultSmall", 10, 35, Color( 255, 255, 255, 255 ) );
		PlayerMenuContent.StrengthNum = PlayerMenuContent:AddLabel( "", "DefaultSmall", 165, 55, Color( 255, 255, 255, 255 ) );
		
		PlayerMenuContent:AddLabel( "Endurance - How much damage you can withstand, and your health amount", "DefaultSmall", 10, 75, Color( 255, 255, 255, 255 ) );
		PlayerMenuContent.EnduranceNum = PlayerMenuContent:AddLabel( "", "DefaultSmall", 165, 95, Color( 255, 255, 255, 255 ) );
		
		PlayerMenuContent:AddLabel( "Speed - How fast you are", "DefaultSmall", 10, 115, Color( 255, 255, 255, 255 ) );		
		PlayerMenuContent.SpeedNum = PlayerMenuContent:AddLabel( "", "DefaultSmall", 165, 135, Color( 255, 255, 255, 255 ) );
		
		PlayerMenuContent:AddLabel( "Sprint - How long you can run", "DefaultSmall", 10, 155, Color( 255, 255, 255, 255 ) );		
		PlayerMenuContent.SprintNum = PlayerMenuContent:AddLabel( "", "DefaultSmall", 165, 175, Color( 255, 255, 255, 255 ) );
				
		PlayerMenuContent:AddLabel( "Skill Stats", "TargetID", 5, 200, Color( 255, 255, 255, 255 ) );
			
		PlayerMenuContent:AddLabel( "Aim - How well you aim", "DefaultSmall", 10, 230, Color( 255, 255, 255, 255 ) );
		PlayerMenuContent.AimNum = PlayerMenuContent:AddLabel( "", "DefaultSmall", 165, 250, Color( 255, 255, 255, 255 ) );
		
		PlayerMenuContent:AddLabel( "Medic - Your ability to heal people", "DefaultSmall", 10, 270, Color( 255, 255, 255, 255 ) );
		PlayerMenuContent.MedicNum = PlayerMenuContent:AddLabel( "", "DefaultSmall", 165, 290, Color( 255, 255, 255, 255 ) );
		
		PlayerMenuContent:AddLabel( "Sneak/Acrobatics - How quickly and well you can move around", "DefaultSmall", 10, 310, Color( 255, 255, 255, 255 ) );	
		PlayerMenuContent.SneakNum = PlayerMenuContent:AddLabel( "", "DefaultSmall", 165, 330, Color( 255, 255, 255, 255 ) );
			
	elseif( id == 1 ) then
	
		PlayerMenuParent:SetTitle( "Player Menu - Inventory" );
		PlayerMenuContent:SetPaintHook( RenderInventory );
		
		PlayerMenuContent:AddLabel( "Inventory", "TargetID", 5, 1, Color( 255, 255, 255, 255 ) );
		PlayerMenuContent.SpaceNum = PlayerMenuContent:AddLabel( "", "SubTitle", 5, 30, Color( 255, 255, 255, 255 ) );
		
		PlayerMenuContent.CrntSpaceNum = PlayerMenuContent:AddLabel( "", "SubTitle", 5, 45, Color( 255, 255, 255, 255 ) );
		
		PlayerMenuContent:AddScrollBar();
		PlayerMenuContent:SetMaxScroll( 0 );
		
		PlayerMenuContent.InventoryNameLabel = { }
		PlayerMenuContent.InventoryAmountLabel = { }
		PlayerMenuContent.InventorySizeLabel = { }
		PlayerMenuContent.InventoryWeightLabel = { }
		PlayerMenuContent.InventoryDescLabel = { }
		PlayerMenuContent.InventoryDropButton = { }
		PlayerMenuContent.InventoryUseButton = { }
		PlayerMenuContent.InventoryIcon = { }
		
	elseif( id == 2 ) then
	
		PlayerMenuParent:SetTitle( "Player Menu - Finance" );
		PlayerMenuContent:SetPaintHook( RenderFinance );
		
		PlayerMenuContent:AddLabel( "Finance", "TargetID", 5, 1, Color( 255, 255, 255, 255 ) );
		
		PlayerMenuContent:AddLabel( "Getting loans is a good way of getting some money when you're just starting out.  Remember to pay your loans back,\nor the Combine will make you pay it back.", "DefaultSmall", 5, 180, Color( 255, 255, 255, 255 ) );
		
		function CreateLoanPayFrame()
		
			local function PayLoan( pnl, val )
			
				LocalPlayer():ConCommand( "rp_payloan " .. val .. "\n" );
				PlayerMenuContent.PayLoanFrame:Remove();
				
			end
		
			PlayerMenuContent.PayLoanFrame = vgui.Create( "TacoFrame" );
			PlayerMenuContent.PayLoanFrame:SetTitle( "Pay A Loan" );
			PlayerMenuContent.PayLoanFrame:SetPos( ScrW() / 2 - 50, ScrH() / 2 - 45 );
			PlayerMenuContent.PayLoanFrame:SetSize( 100, 90 );
			PlayerMenuContent.PayLoanFrame:AddLabel( "Amount to pay:", "DefaultSmall", 5, 0, Color( 255, 255, 255, 255 ) );
			PlayerMenuContent.PayLoanFrame.Entry = PlayerMenuContent.PayLoanFrame:AddEntry( PayLoan, 5, 55, 100 );
			PlayerMenuContent.PayLoanFrame:SetVisible( true );
			
		end
		
		function CreateLoanFrame()
		
			local function TakeLoan( pnl, val )
			
				LocalPlayer():ConCommand( "rp_takeloan " .. val .. "\n" );
				PlayerMenuContent.LoanFrame:Remove();
				
			end
		
			PlayerMenuContent.LoanFrame = vgui.Create( "TacoFrame" );
			PlayerMenuContent.LoanFrame:SetTitle( "Take A Loan" );
			PlayerMenuContent.LoanFrame:SetPos( ScrW() / 2 - 50, ScrH() / 2 - 45 );
			PlayerMenuContent.LoanFrame:SetSize( 100, 90 );
			PlayerMenuContent.LoanFrame:AddLabel( "Amount of loan:", "DefaultSmall", 5, 0, Color( 255, 255, 255, 255 ) );
			PlayerMenuContent.LoanFrame.Entry = PlayerMenuContent.LoanFrame:AddEntry( TakeLoan, 5, 55, 100 );
			PlayerMenuContent.LoanFrame:SetVisible( true );
			
		end
		
		PlayerMenuContent.LoanButton = PlayerMenuContent:AddButton( "Take Loan", 5, 110, 60, 18 );
		PlayerMenuContent.LoanButton:SetRoundness( 0 );
		PlayerMenuContent.LoanButton:SetCallback( CreateLoanFrame );
		
		PlayerMenuContent.LoanButton = PlayerMenuContent:AddButton( "Pay Loan", 5, 140, 60, 18 );
		PlayerMenuContent.LoanButton:SetRoundness( 0 );
		PlayerMenuContent.LoanButton:SetCallback( CreateLoanPayFrame );
		
	elseif( id == 3 ) then
	
		PlayerMenuParent:SetTitle( "Player Menu - Biography" );
		PlayerMenuContent:SetPaintHook( RenderBiography );
		
		PlayerMenuContent.BioIcon = vgui.Create( "SpawnIcon", PlayerMenuContent );
		PlayerMenuContent.BioIcon.Model = LocalPlayer():GetModel();
		PlayerMenuContent.BioIcon:SetModel( LocalPlayer():GetModel() );
		PlayerMenuContent.BioIcon:SetPos( 5, 1 );
		PlayerMenuContent.BioIcon:SetSize( 64, 64 );
		PlayerMenuContent.BioIcon:SetMouseInputEnabled( false );
		
		PlayerMenuContent.NameLabel = PlayerMenuContent:AddLabel( LocalPlayer():Nick(), "TargetID", 70, 1, Color( 255, 255, 255, 255 ) );
		PlayerMenuContent.AgeLabel = PlayerMenuContent:AddLabel( "Age: " .. GetString( "info.Age" ), "SmallTargetID", 70, 24, Color( 255, 255, 255, 255 ) );
		PlayerMenuContent.RaceLabel = PlayerMenuContent:AddLabel( "Race: " .. GetString( "info.Race" ), "SmallTargetID", 70, 41, Color( 255, 255, 255, 255 ) );
		PlayerMenuContent.BioLabel = PlayerMenuContent:AddLabel( "Information: " .. GetString( "info.Bio" ), "SmallTargetID", 5, 68, Color( 255, 255, 255, 255 ) );
		
		local function SetAgeFrame()
	
			if( PlayerMenuContent.AgeFrame ) then
				PlayerMenuContent.AgeFrame:Remove();
				PlayerMenuContent.AgeFrame = nil;
			end
	
			local function SetAge( pnl, val )
			
				if( tonumber( val ) and tonumber( val ) >= 16 and tonumber( val ) <= 65 ) then
			
					surface.SetFont( "TargetID" );
				
					PlayerMenuContent.AgeLabel:SetText( "Age: " .. val );
					LocalPlayer():ConCommand( "rp_setage " .. GetString( "UniqueID" ) .. " " .. val .. "\n" );
					PlayerMenuContent.AgeLabel:SetSize( surface.GetTextSize( "Age: " .. val ), 25 );
					PlayerMenuContent.AgeFrame:Remove();
					PlayerMenuContent.AgeFrame = nil;
					
				else
				
					local warn = vgui.Create( "TacoFrame" );
					warn:SetTitle( "Not valid" );
					warn:SetColor( Color( 30, 30, 30, 255 ) );
					warn:SetPos( ScrW() / 2 - 50, ScrH() / 2 - 45 );
					warn:SetSize( 160, 90 );
					warn:AddLabel( "Age must be between 16 and 65", "DefaultSmall", 5, 0, Color( 255, 255, 255, 255 ) );
					warn:SetVisible( true );
				
				end
				
			end
			
			PlayerMenuContent.AgeFrame = vgui.Create( "TacoFrame" );
			PlayerMenuContent.AgeFrame:SetTitle( "Set Character Age" );
			PlayerMenuContent.AgeFrame:SetColor( Color( 30, 30, 30, 255 ) );
			PlayerMenuContent.AgeFrame:SetPos( ScrW() / 2 - 50, ScrH() / 2 - 45 );
			PlayerMenuContent.AgeFrame:SetSize( 160, 90 );
			PlayerMenuContent.AgeFrame:AddLabel( "Age:", "DefaultSmall", 5, 0, Color( 255, 255, 255, 255 ) );
			PlayerMenuContent.AgeFrame.Entry = PlayerMenuContent.AgeFrame:AddEntry( SetAge, 5, 55, 100 );
			PlayerMenuContent.AgeFrame:SetVisible( true );
		
		end
		
		PlayerMenuContent.AgeButton = PlayerMenuContent:AddButton( "Edit Age", 500, 24, 60, 20 );
		PlayerMenuContent.AgeButton:SetRoundness( 0 );
		PlayerMenuContent.AgeButton:SetCallback( SetAgeFrame );
		
		local function SetRaceFrame()
	
			if( PlayerMenuContent.RaceFrame ) then
				PlayerMenuContent.RaceFrame:Remove();
				PlayerMenuContent.RaceFrame = nil;
			end
	
			local function SetRace( pnl, val )
			
				surface.SetFont( "TargetID" );
			
				PlayerMenuContent.RaceLabel:SetText( "Race: " .. val );
				LocalPlayer():ConCommand( "rp_setrace " .. GetString( "UniqueID" ) .. " " .. val .. "\n" );
				PlayerMenuContent.RaceLabel:SetSize( surface.GetTextSize( "Race: " .. val ), 25 );
				PlayerMenuContent.RaceFrame:Remove();
				PlayerMenuContent.RaceFrame = nil;
				
			end
			
			PlayerMenuContent.RaceFrame = vgui.Create( "TacoFrame" );
			PlayerMenuContent.RaceFrame:SetTitle( "Set Character Race" );
			PlayerMenuContent.RaceFrame:SetColor( Color( 30, 30, 30, 255 ) );
			PlayerMenuContent.RaceFrame:SetPos( ScrW() / 2 - 50, ScrH() / 2 - 45 );
			PlayerMenuContent.RaceFrame:SetSize( 160, 90 );
			PlayerMenuContent.RaceFrame:AddLabel( "Race:", "DefaultSmall", 5, 0, Color( 255, 255, 255, 255 ) );
			PlayerMenuContent.RaceFrame.Entry = PlayerMenuContent.RaceFrame:AddEntry( SetRace, 5, 55, 100 );
			PlayerMenuContent.RaceFrame:SetVisible( true );
		
		end
		
		PlayerMenuContent.RaceButton = PlayerMenuContent:AddButton( "Edit Race", 500, 50, 60, 20 );
		PlayerMenuContent.RaceButton:SetRoundness( 0 );
		PlayerMenuContent.RaceButton:SetCallback( SetRaceFrame );
		
		local function DescFrame()
		
			if( PlayerMenuContent.DescFrame ) then
				PlayerMenuContent.DescFrame:Remove();
				PlayerMenuContent.DescFrame = nil;
			end
		
			local function SetDesc( pnl, val )
			
				if( string.len( PlayerMenuContent.DescFrame.Entry:GetValue() ) <= 100 ) then
			
					surface.SetFont( "TargetID" );
		
					PlayerMenuContent:RemoveLabel( PlayerMenuContent.BioLabel );
					PlayerMenuContent.BioLabel = PlayerMenuContent:AddLabel( FormatLine( string.gsub(  "Information: " .. PlayerMenuContent.DescFrame.Entry:GetValue(), "\n", "" ), "TargetID", 450 ), "SmallTargetID", 5, 68, Color( 255, 255, 255, 255 ) );
					LocalPlayer():ConCommand( "rp_setdesc " .. GetString( "UniqueID" ) .. " \"" .. PlayerMenuContent.DescFrame.Entry:GetValue() .. "\"\n" );
					PlayerMenuContent.DescFrame:Remove();
					PlayerMenuContent.DescFrame = nil;
						
				else
				
					local warn = vgui.Create( "TacoFrame" );
					warn:SetTitle( string.len( PlayerMenuContent.DescFrame.Entry:GetValue() ) .. " characters long" );
					warn:SetColor( Color( 30, 30, 30, 255 ) );
					warn:SetPos( ScrW() / 2 - 50, ScrH() / 2 - 45 );
					warn:SetSize( 160, 90 );
					warn:AddLabel( "Description must be under 100 characters", "DefaultSmall", 5, 0, Color( 255, 255, 255, 255 ) );
					warn:SetVisible( true );
				
				end
				
			end
			
			PlayerMenuContent.DescFrame = vgui.Create( "TacoFrame" );
			PlayerMenuContent.DescFrame:SetTitle( "Set Character Description" );
			PlayerMenuContent.DescFrame:SetColor( Color( 30, 30, 30, 255 ) );
			PlayerMenuContent.DescFrame:SetPos( ScrW() / 2 - 100, ScrH() / 2 - 117 );
			PlayerMenuContent.DescFrame:SetSize( 200, 235 );
			PlayerMenuContent.DescFrame:AddLabel( "Description (must be under 101 characters):", "DefaultSmall", 5, -70, Color( 255, 255, 255, 255 ) );
			PlayerMenuContent.DescFrame.Entry = PlayerMenuContent.DescFrame:AddMultilineEntry( SetDesc, 5, 60, 170, 130 );
			PlayerMenuContent.DescFrame:SetVisible( true );
		
			local but = vgui.Create( "TacoButton", PlayerMenuContent.DescFrame );
			but:SetText( "Done" );
			but:SetPos( 5, 200 );
			but:SetSize( 50, 15 );
			but:SetRoundness( 0 );
			but:SetCallback( SetDesc );
			
		end
		
		PlayerMenuContent.DescButton = PlayerMenuContent:AddButton( "Edit Bio", 500, 75, 60, 20 );
		PlayerMenuContent.DescButton:SetRoundness( 0 );
		PlayerMenuContent.DescButton:SetCallback( DescFrame );		
	
	elseif( id == 4 ) then
	
		PlayerMenuParent:SetTitle( "Player Menu - Workshop" );
		PlayerMenuContent:SetPaintHook( RenderWorkshop );
		
	elseif( id == 5 ) then
	
		PlayerMenuParent:SetTitle( "Player Menu - Business" );
		PlayerMenuContent:SetPaintHook( RenderBusiness );
	
		local function CreateBusinessVGUI()
		
			local function GiveMoneyFrame()
			
				local function GiveMoney( pnl, var )
				
					LocalPlayer():ConCommand( "rp_givebusinessmoney " .. var .. "\n" );
					PlayerMenuContent.GiveFrame:Remove();
					
				end
			
				PlayerMenuContent.GiveFrame = vgui.Create( "TacoFrame" );
				PlayerMenuContent.GiveFrame:SetTitle( "Give Money" );
				PlayerMenuContent.GiveFrame:SetPos( ScrW() / 2 - 50, ScrH() / 2 - 45 );
				PlayerMenuContent.GiveFrame:SetSize( 160, 90 );
				PlayerMenuContent.GiveFrame:AddLabel( "Amount to give to business:", "DefaultSmall", 5, 0, Color( 255, 255, 255, 255 ) );
				PlayerMenuContent.GiveFrame.Entry = PlayerMenuContent.GiveFrame:AddEntry( GiveMoney, 5, 55, 100 );
				PlayerMenuContent.GiveFrame:SetVisible( true );

			end
			
			local function TakeMoneyFrame( pnl, val )

				local function TakeMoney( pnl, var )
				
					LocalPlayer():ConCommand( "rp_takebusinessmoney " .. var .. "\n" );
					PlayerMenuContent.TakeFrame:Remove();
					
				end
			
				PlayerMenuContent.TakeFrame = vgui.Create( "TacoFrame" );
				PlayerMenuContent.TakeFrame:SetTitle( "Take Money" );
				PlayerMenuContent.TakeFrame:SetPos( ScrW() / 2 - 50, ScrH() / 2 - 45 );
				PlayerMenuContent.TakeFrame:SetSize( 160, 90 );
				PlayerMenuContent.TakeFrame:AddLabel( "Amount to take from business:", "DefaultSmall", 5, 0, Color( 255, 255, 255, 255 ) );
				PlayerMenuContent.TakeFrame.Entry = PlayerMenuContent.TakeFrame:AddEntry( TakeMoney, 5, 55, 100 );
				PlayerMenuContent.TakeFrame:SetVisible( true );
				
			end
			
			local function ChangeJobFrame( pnl, val )
	
				local function ChangeJob( pnl, val )
				
					LocalPlayer():ConCommand( "rp_setjobtitle \"" .. string.gsub( val, "\"", "'" ) .. "\"\n" );
					PlayerMenuContent.ChangeJob:Remove();
				
				end
	
				PlayerMenuContent.ChangeJob = vgui.Create( "TacoFrame" );
				PlayerMenuContent.ChangeJob:SetTitle( "Set Job Title" );
				PlayerMenuContent.ChangeJob:SetPos( ScrW() / 2 - 50, ScrH() / 2 - 45 );
				PlayerMenuContent.ChangeJob:SetSize( 140, 90 );
				PlayerMenuContent.ChangeJob:AddLabel( "New Job Name:", "DefaultSmall", 5, 0, Color( 255, 255, 255, 255 ) );
				PlayerMenuContent.ChangeJob.Entry = PlayerMenuContent.ChangeJob:AddEntry( ChangeJob, 5, 55, 100 );
				PlayerMenuContent.ChangeJob.Entry:SetText( LocalPlayer():GetNWString( "job" ) );
				PlayerMenuContent.ChangeJob:SetVisible( true );
			
			end
			
			local function ChangeBusinessNameFrame( pnl, val )
			
				local function ChangeName( pnl, val )
				
					LocalPlayer():ConCommand( "rp_setbusinessname \"" .. string.gsub( val, "\"", "'" ) .. "\"\n" );
					PlayerMenuContent.ChangeName:Remove();
					
				end
			
				PlayerMenuContent.ChangeName = vgui.Create( "TacoFrame" );
				PlayerMenuContent.ChangeName:SetTitle( "Set Business Name" );
				PlayerMenuContent.ChangeName:SetPos( ScrW() / 2 - 50, ScrH() / 2 - 45 );
				PlayerMenuContent.ChangeName:SetSize( 140, 90 );
				PlayerMenuContent.ChangeName:AddLabel( "New Name:", "DefaultSmall", 5, 0, Color( 255, 255, 255, 255 ) );
				PlayerMenuContent.ChangeName.Entry = PlayerMenuContent.ChangeName:AddEntry( ChangeName, 5, 55, 100 );
				PlayerMenuContent.ChangeName.Entry:SetText( GetGlobalString( "business." .. GetInt( "businessid" ) .. ".businessname" ) );
				PlayerMenuContent.ChangeName:SetVisible( true );
			
			end
			
			
			local function BuySuppliesWindow()
						
				local function BuyItem( but )
				
					local id = but.ID;
					local index = but.Index;
					
					if( GetGlobalFloat( "business." .. GetInt( "businessid" ) .. ".bankamount" ) - StoreItems[index].StockPrice < 0 ) then
					
						local warn = vgui.Create( "TacoFrame" );
						warn:SetTitle( "Not enough money" );
						warn:SetPos( ScrW() / 2 - 50, ScrH() / 2 - 45 );
						warn:SetSize( 160, 90 );
						warn:AddLabel( "Your business does not have\nenough money to purchase this", "DefaultSmall", 5, 0, Color( 255, 255, 255, 255 ) );
						warn:SetVisible( true );
					
						return;
					
					end
					
					LocalPlayer():ConCommand( "rp_businesspurchase " .. id .. "\n" );
					
				end
						
				local function SuppliesWindowPaint()
				
					if( PlayerMenuContent ) then
				
						surface.SetFont( "DefaultSmall" );
						
						PlayerMenuContent.SuppliesWindow.BankAmount:SetText( "Current Business Bank Amount: $" .. GetGlobalFloat( "business." .. GetInt( "businessid" ) .. ".bankamount" ) );
						PlayerMenuContent.SuppliesWindow.BankAmount:SetSize( surface.GetTextSize( "Current Business Bank Amount: $" .. GetGlobalFloat( "business." .. GetInt( "businessid" ) .. ".bankamount" ) ), 25 );
							
					end
					
					for k, v in pairs( StoreItems ) do
					
						surface.SetFont( "DefaultSmall" );
						
						local additem = true;
						
						if( v.BlackMarket and not LocalPlayer():HasPlayerFlag( "X" ) ) then
							additem = false;
						end
						
						if( additem ) then
						
							PlayerMenuContent.SuppliesWindowContent.CrntStockLabels[k]:SetText( TS.GetBusinessStock( GetInt( "businessid" ), v.ID ) or 0 );
							PlayerMenuContent.SuppliesWindowContent.CrntStockLabels[k]:SetSize( surface.GetTextSize( TS.GetBusinessStock( GetInt( "businessid" ), v.ID ) or 0 ), 25 );
						end
							
					end
						
				end
						
				PlayerMenuContent.SuppliesWindow = vgui.Create( "TacoPanel" );
				PlayerMenuContent.SuppliesWindow:SetSize( 600, 500 );
				PlayerMenuContent.SuppliesWindow:SetPos( ScrW() / 2 - 300, ScrH() / 2 - 250 );
				PlayerMenuContent.SuppliesWindow:SetTitle( "Buy Supplies" );
				PlayerMenuContent.SuppliesWindow:SetPaintHook( SuppliesWindowPaint );
				
				PlayerMenuContent.SuppliesWindow.BankAmount = PlayerMenuContent.SuppliesWindow:AddLabel( "", "DefaultSmall", 5, 5, Color( 255, 255, 255, 255 ) );
				
				PlayerMenuContent.SuppliesWindow:MakePopup();
				
				PlayerMenuContent.SuppliesWindowContent = vgui.Create( "TacoPanel", PlayerMenuContent.SuppliesWindow );
				PlayerMenuContent.SuppliesWindowContent:SetPos( 5, 60 );
				PlayerMenuContent.SuppliesWindowContent:SetSize( 590, 430 );
				PlayerMenuContent.SuppliesWindowContent:EnableTitle( false );
				PlayerMenuContent.SuppliesWindowContent:EnableCloseButton( false );
				PlayerMenuContent.SuppliesWindowContent:EnableDragging( false );
				PlayerMenuContent.SuppliesWindowContent:EnableFullWindow( true );
				PlayerMenuContent.SuppliesWindowContent:SetColor( Color( 50, 50, 50, 255 ) );
				PlayerMenuContent.SuppliesWindowContent:AddScrollBar();
				PlayerMenuContent.SuppliesWindowContent:SetMaxScroll( 0 );
					
				PlayerMenuContent.SuppliesWindowContent.NameLabel = PlayerMenuContent.SuppliesWindowContent:AddLabel( "Name", "DefaultSmall", 70, 1, Color( 255, 255, 255, 255 ) );
				PlayerMenuContent.SuppliesWindowContent.PriceLabel = PlayerMenuContent.SuppliesWindowContent:AddLabel( "Price per Stock", "DefaultSmall", 235, 1, Color( 255, 255, 255, 255 ) );
				PlayerMenuContent.SuppliesWindowContent.StockLabel = PlayerMenuContent.SuppliesWindowContent:AddLabel( "Number of Items per Stock", "DefaultSmall", 335, 1, Color( 255, 255, 255, 255 ) );
				PlayerMenuContent.SuppliesWindowContent.CrntStockLabel = PlayerMenuContent.SuppliesWindowContent:AddLabel( "Current Amount", "DefaultSmall", 465, 1, Color( 255, 255, 255, 255 ) );
																					
				PlayerMenuContent.SuppliesWindowContent.SpawnIcons = { }
				PlayerMenuContent.SuppliesWindowContent.NameLabels = { }
				PlayerMenuContent.SuppliesWindowContent.DescLabels = { }
				PlayerMenuContent.SuppliesWindowContent.PriceLabels = { }
				PlayerMenuContent.SuppliesWindowContent.StockLabels = { }
				PlayerMenuContent.SuppliesWindowContent.CrntStockLabels = { }
				
				local n = 1;
							
				for k, v in pairs( StoreItems ) do
				
					local additem = true;
				
					if( v.BlackMarket and not LocalPlayer():HasPlayerFlag( "X" ) ) then
						additem = false;
					end
				
					if( additem ) then
				
						local x = 5;
						local y = 85 * ( n - 1 ) + 15;
									
						PlayerMenuContent.SuppliesWindowContent.SpawnIcons[k] = vgui.Create( "SpawnIcon", PlayerMenuContent.SuppliesWindowContent );
						PlayerMenuContent.SuppliesWindowContent.SpawnIcons[k]:SetPos( x, y );
						PlayerMenuContent.SuppliesWindowContent.SpawnIcons[k]:SetSize( 64, 64 );
						PlayerMenuContent.SuppliesWindowContent.SpawnIcons[k]:SetModel( v.Model );
						PlayerMenuContent.SuppliesWindowContent.SpawnIcons[k]:SetMouseInputEnabled( false );
						
						PlayerMenuContent.SuppliesWindowContent.SpawnIcons[k] = PlayerMenuContent.SuppliesWindowContent:AddObject( PlayerMenuContent.SuppliesWindowContent.SpawnIcons[k], x, y );
						
						PlayerMenuContent.SuppliesWindowContent.NameLabels[k] = PlayerMenuContent.SuppliesWindowContent:AddLabel( v.Name, "DefaultSmall", 71, y, Color( 255, 255, 255, 255 ) );
						PlayerMenuContent.SuppliesWindowContent.NameLabels[k]:SetSize( 150, 25 );
						PlayerMenuContent.SuppliesWindowContent.DescLabels[k] = PlayerMenuContent.SuppliesWindowContent:AddLabel( v.Desc, "DefaultSmall", 71, y + 17, Color( 255, 255, 255, 255 ) );
						PlayerMenuContent.SuppliesWindowContent.PriceLabels[k] = PlayerMenuContent.SuppliesWindowContent:AddLabel( "$" .. v.StockPrice, "DefaultSmall", 235, y, Color( 255, 255, 255, 255 ) );
						PlayerMenuContent.SuppliesWindowContent.StockLabels[k] = PlayerMenuContent.SuppliesWindowContent:AddLabel( v.StockCount, "DefaultSmall", 335, y, Color( 255, 255, 255, 255 ) );
						PlayerMenuContent.SuppliesWindowContent.CrntStockLabels[k] = PlayerMenuContent.SuppliesWindowContent:AddLabel( TS.GetBusinessStock( GetInt( "businessid" ), v.ID ), "DefaultSmall", 465, y - 7, Color( 255, 255, 255, 255 ) );
						
						local but =  PlayerMenuContent.SuppliesWindowContent:AddButton( "Buy", x, y + 66, 30, 15 );
						but.ID = v.ID;
						but.Index = k;
						but:SetRoundness( 0 );
						but:SetCallback( BuyItem );
								
						n = n + 1;
						
					end
							
				end
				
				if( n > 4 ) then
				
					PlayerMenuContent.SuppliesWindowContent:SetMaxScroll( 82 * n - 328 );
				
				end
						
			end
			
			local function PurchaseLicense()

				if( GetFloat( "money" ) < 500 ) then
				
					PlayerMenuContent.BusinessFrame = vgui.Create( "TacoFrame" );
					PlayerMenuContent.BusinessFrame:SetTitle( "Cannot create business" );
					PlayerMenuContent.BusinessFrame:SetPos( ScrW() / 2 - 50, ScrH() / 2 - 45 );
					PlayerMenuContent.BusinessFrame:SetSize( 160, 50 );				
					PlayerMenuContent.BusinessFrame:AddLabel( "Need atleast 500 tokens", "DefaultSmall", 20, 10, Color( 255, 255, 255, 255 ) );
					PlayerMenuContent.BusinessFrame:SetVisible( true );
					
					return;
					
				end
				
				LocalPlayer():ConCommand( "rp_purchasesupplylicense\n" );
				
				PlayerMenuContent.SuppliesBut:SetText( "Buy Supplies" );
				PlayerMenuContent.SuppliesBut:SetSize( 100, 25 );
				PlayerMenuContent.SuppliesBut:SetCallback( BuySuppliesWindow );

			end
		
			PlayerMenuContent.NameLabel = PlayerMenuContent:AddLabel( "", "TargetID", 5, 3, Color( 255, 255, 255, 255 ) );
			PlayerMenuContent.ProfitLabel = PlayerMenuContent:AddLabel( "Current Bank Amount: $0", "DefaultSmall", 5, 35, Color( 255, 255, 255, 255 ) );
		
			surface.SetFont( "DefaultSmall" );
			PlayerMenuContent.ChangeNameBut = PlayerMenuContent:AddButton( "Change Name", surface.GetTextSize( PlayerMenuContent.NameLabel:GetValue() ), 2, 80, 25 );
			PlayerMenuContent.ChangeNameBut:SetRoundness( 0 );
			PlayerMenuContent.ChangeNameBut:SetCallback( ChangeBusinessNameFrame );
			
			PlayerMenuContent.GiveBankBut = PlayerMenuContent:AddButton( "Give Money", 5, 60, 70, 25 );
			PlayerMenuContent.GiveBankBut:SetRoundness( 0 );
			PlayerMenuContent.GiveBankBut:SetCallback( GiveMoneyFrame );
			
			PlayerMenuContent.TakeBankBut = PlayerMenuContent:AddButton( "Take Money", 80, 60, 70, 25 );
			PlayerMenuContent.TakeBankBut:SetRoundness( 0 );
			PlayerMenuContent.TakeBankBut:SetCallback( TakeMoneyFrame );
			
			PlayerMenuContent.ChangeJobBut = PlayerMenuContent:AddButton( "Change Job Title", 5, 100, 100, 25 );
			PlayerMenuContent.ChangeJobBut:SetRoundness( 0 );
			PlayerMenuContent.ChangeJobBut:SetCallback( ChangeJobFrame );
			
			PlayerMenuContent.SuppliesBut = PlayerMenuContent:AddButton( "Purchase Supply License ($500)", 5, 135, 205, 25 );
			PlayerMenuContent.SuppliesBut:SetRoundness( 0 );

			
			if( TS.GetBusinessInt( GetInt( "businessid" ), "supplylicense" ) == 1 ) then
	
				PlayerMenuContent.SuppliesBut:SetText( "Buy Supplies" );
				PlayerMenuContent.SuppliesBut:SetSize( 100, 25 );
				PlayerMenuContent.SuppliesBut:SetCallback( BuySuppliesWindow );	
			
			else
			

				PlayerMenuContent.SuppliesBut:SetCallback( PurchaseLicense );
				
			end
			
		end
	
		if( GetInt( "ownsbusiness" ) == 0 ) then
		
			local function CreateBusiness( pnl, val )
			
				LocalPlayer():ConCommand( "rp_createbusiness \"" .. string.gsub( val, "\"", "'" ) .. "\"\n" );
				PlayerMenuContent.BusinessFrame:Remove();
				PlayerMenuContent:RemoveButton( PlayerMenuContent.CreateBusinessBut );
				PlayerMenuContent:RemoveLabel( PlayerMenuContent.BusinessExpense );
				
				CreateBusinessVGUI();
			
			end
		
			local function CreateBusinessForm()
			
				PlayerMenuContent.BusinessFrame = vgui.Create( "TacoFrame" );
				PlayerMenuContent.BusinessFrame:SetTitle( "Create Business" );
				PlayerMenuContent.BusinessFrame:SetPos( ScrW() / 2 - 50, ScrH() / 2 - 45 );
				PlayerMenuContent.BusinessFrame:SetSize( 100, 90 );
				PlayerMenuContent.BusinessFrame:AddLabel( "Name of business:", "DefaultSmall", 5, 0, Color( 255, 255, 255, 255 ) );
				PlayerMenuContent.BusinessFrame.Entry = PlayerMenuContent.BusinessFrame:AddEntry( CreateBusiness, 5, 55, 100 );
				PlayerMenuContent.BusinessFrame:SetVisible( true );
			
			end
		
			PlayerMenuContent.CreateBusinessBut = PlayerMenuContent:AddButton( "Create Business", 5, 40, 100, 24 );
			PlayerMenuContent.CreateBusinessBut:SetRoundness( 0 );
			PlayerMenuContent.CreateBusinessBut:SetCallback( CreateBusinessForm );
		
		else
		
			CreateBusinessVGUI();
			
		end
	
	end

end

function CreatePlayerMenuContentVGUI()

	if( PlayerMenuContent ) then
		PlayerMenuContent:Remove();
		PlayerMenuContent = nil;
	end

	PlayerMenuContent = vgui.Create( "TacoPanel", PlayerMenuParent );
	PlayerMenuContent:SetPos( 5, 65 );
	PlayerMenuContent:SetSize( PlayerMenuParent:GetWide() - 10, PlayerMenuParent:GetTall() - 70 );
	PlayerMenuContent:EnableTitle( false );
	PlayerMenuContent:EnableCloseButton( false );
	PlayerMenuContent:EnableDragging( false );
	PlayerMenuContent:EnableFullWindow( true );
	PlayerMenuContent:SetColor( Color( 50, 50, 50, 255 ) );

end

local function DropBusinessItem( but )

	local itemid = but.ID;
	
	LocalPlayer():ConCommand( "rp_dropbusinessitem " .. itemid .. "\n" );

end

local function MoveItemList()
	
	local n = 1;
	
	for k, v in pairs( PlayerShop.Items ) do
		
		local index = 1;
		
		for l, m in pairs( StoreItems ) do
			
			if( m.ID == v ) then
				
				index = l;
				break;
			
			end
			
		end
			
		local data = StoreItems[index];
								
		local x = 5;
		local y = 85 * ( n - 1 ) + 15;
					
		PlayerShop.SpawnIcons[k]:SetPos( x, y + 20 );	
		PlayerShop.NameLabels[k]:SetPos( 71, y );			
		PlayerShop.DropButton[k]:SetPos( x, y + 66 );
		PlayerShop.CrntStockLabels[k]:SetPos( 200, y - 7 );
		
		n = n + 1;
						
	end
					
	if( n > 5 ) then
			
		PlayerShop:SetMaxScroll( 85 * ( n + 1 ) - 500 );
					
	end

end

local function msgGiveStoreItem( msg )

	local item = msg:ReadString();
	
	local index = 1;
	local n = 1;
	
	for k, v in pairs( PlayerShop.Items ) do
		n = n + 1;
	end
	
	for l, m in pairs( StoreItems ) do
			
		if( m.ID == item ) then
			index = l;
			break;
		end
			
	end
			
	local data = StoreItems[index];
	local k = #PlayerShop.Items + 1;
			
	PlayerShop.Items[k] = data.ID;
								
	local x = 5;
	local y = 85 * ( n - 1 ) + 15;
									
	PlayerShop.SpawnIcons[k] = vgui.Create( "SpawnIcon", PlayerShop );
	PlayerShop.SpawnIcons[k]:SetPos( x, y + 20 );
	PlayerShop.SpawnIcons[k]:SetSize( 64, 64 );
	PlayerShop.SpawnIcons[k]:SetModel( data.Model );
	PlayerShop.SpawnIcons[k]:SetMouseInputEnabled( false );
						
	PlayerShop.SpawnIcons[k] = PlayerShop:AddObject( PlayerShop.SpawnIcons[k], x, y + 20 );
						
	PlayerShop.NameLabels[k] = PlayerShop:AddLabel( data.Name, "DefaultSmall", 71, y, Color( 255, 255, 255, 255 ) );
	PlayerShop.NameLabels[k]:SetSize( 150, 25 );
	PlayerShop.CrntStockLabels[k] = PlayerShop:AddLabel( TS.GetBusinessStock( GetInt( "businessid" ), data.ID ) or 0, "DefaultSmall", 200, y - 7, Color( 255, 255, 255, 255 ) );		
					
	PlayerShop.DropButton[k] = PlayerShop:AddButton( "Drop", x, y + 66, 35, 15 );
	PlayerShop.DropButton[k].ID = data.ID;
	PlayerShop.DropButton[k].Index = index;
	PlayerShop.DropButton[k]:SetRoundness( 0 );
	PlayerShop.DropButton[k]:SetCallback( DropBusinessItem );
			
	if( n > 5 ) then
					
		PlayerShop:SetMaxScroll( 85 * ( n + 1 ) - 500 );
					
	end

end
usermessage.Hook( "GiveStoreItem", msgGiveStoreItem );

local function msgTakeStoreItem( msg )

	local name = msg:ReadString();

	local id = 1;
	
	for k, v in pairs( PlayerShop.Items ) do
	
		if( v == name ) then
			id = k;
			break;
		end
	
	end

	PlayerShop:RemoveObject( PlayerShop.SpawnIcons[id] );
	PlayerShop.SpawnIcons[id] = nil;
					
	PlayerShop:RemoveLabel( PlayerShop.NameLabels[id] );
	PlayerShop.NameLabels[id] = nil;
					
	PlayerShop:RemoveButton( PlayerShop.DropButton[id] );
	PlayerShop.DropButton[id] = nil;
					
	PlayerShop:RemoveLabel( PlayerShop.CrntStockLabels[id] );
	PlayerShop.CrntStockLabels[id] = nil;
					
	PlayerShop.Items[id] = nil;	
					
	MoveItemList();

end
usermessage.Hook( "TakeStoreItem", msgTakeStoreItem );

function CreatePlayerShop()

	local function ShopWindowPaint()

		PlayerShop:EnableCloseButton( false );

		for k, v in pairs( PlayerShop.Items ) do
			
			PlayerShop.CrntStockLabels[k]:SetText( TS.GetBusinessStock( GetInt( "businessid" ), v ) or 0 );
			surface.SetFont( "DefaultSmall" );
			PlayerShop.CrntStockLabels[k]:SetSize( surface.GetTextSize( TS.GetBusinessStock( GetInt( "businessid" ), v ) or 0 ), 25 );
		
		end	
	
	end
		
	local function CreateItemList()
		
		PlayerShop.Items = { }																			
		PlayerShop.SpawnIcons = { }
		PlayerShop.NameLabels = { }
		PlayerShop.DropButton = { }
		PlayerShop.CrntStockLabels = { }
		
		local items = TS.GetBusinessItemTable( GetInt( "businessid" ) );
		local n = 1;	
							
		for k, v in pairs( items ) do
		
			local index = 1;
		
			for l, m in pairs( StoreItems ) do
			
				if( m.ID == v ) then
					index = l;
					break;
				end
			
			end
			
			local data = StoreItems[index];
			
			local additem = true;
			
			if( additem ) then
			
				PlayerShop.Items[k] = data.ID;
									
				local x = 5;
				local y = 85 * ( n - 1 ) + 15;
										
				PlayerShop.SpawnIcons[k] = vgui.Create( "SpawnIcon", PlayerShop );
				PlayerShop.SpawnIcons[k]:SetPos( x, y + 20 );
				PlayerShop.SpawnIcons[k]:SetSize( 64, 64 );
				PlayerShop.SpawnIcons[k]:SetModel( data.Model );
				PlayerShop.SpawnIcons[k]:SetMouseInputEnabled( false );
							
				PlayerShop.SpawnIcons[k] = PlayerShop:AddObject( PlayerShop.SpawnIcons[k], x, y + 20 );
							
				PlayerShop.NameLabels[k] = PlayerShop:AddLabel( data.Name, "DefaultSmall", 71, y, Color( 255, 255, 255, 255 ) );
				PlayerShop.NameLabels[k]:SetSize( 150, 25 );
				PlayerShop.CrntStockLabels[k] = PlayerShop:AddLabel( TS.GetBusinessStock( GetInt( "businessid" ), data.ID ), "DefaultSmall", 200, y - 7, Color( 255, 255, 255, 255 ) );
				
				PlayerShop.DropButton[k] = PlayerShop:AddButton( "Drop", x, y + 66, 30, 15 );
				PlayerShop.DropButton[k].ID = data.ID;
				PlayerShop.DropButton[k].Index = index;
				PlayerShop.DropButton[k]:SetRoundness( 0 );
				PlayerShop.DropButton[k]:SetCallback( DropBusinessItem );
				
				n = n + 1;
				
			end
							
		end
					
		if( n > 5 ) then
					
			PlayerShop:SetMaxScroll( 85 * ( n + 1 ) - 500 );
					
		end
		
	end
	
	if( PlayerShop ) then
		PlayerShop:Remove();
		PlayerShop = nil;
	end
	
	PlayerShop = vgui.Create( "TacoPanel" );
	PlayerShop:SetSize( 300, 500 );
	PlayerShop:SetPos( ScrW() * .2 + 610, ScrH() / 2 - 250 );
	PlayerShop:SetTitle( "Business Inventory" );
	PlayerShop:SetPaintHook( ShopWindowPaint );		
	PlayerShop:EnableCloseButton( false );
	PlayerShop:AddScrollBar();
	
	PlayerShop:MakePopup();

	PlayerShop.NameLabel = PlayerShop:AddLabel( "Name", "DefaultSmall", 70, 1, Color( 255, 255, 255, 255 ) );
	PlayerShop.CrntStockLabel = PlayerShop:AddLabel( "Current Amount", "DefaultSmall", 200, 1, Color( 255, 255, 255, 255 ) );
				
	CreateItemList();		

end

function CreatePlayerMenuRadio()

	PlayerMenuRadio = vgui.Create( "TacoFrame" );
	PlayerMenuRadio:SetPos( 10, ScrH() * .2 );
	PlayerMenuRadio:SetSize( 100, 85 );
	PlayerMenuRadio:SetTitle( "Radio" );
	PlayerMenuRadio:SetVisible( true );
	
	PlayerMenuRadio.FreqLabel = PlayerMenuRadio:AddLabel( "Frequency", "DefaultSmall", 5, 0, Color( 255, 255, 255, 255 ) );

	local function ChangeFreq( pnl, val )
	
		local val = tonumber( val );
	
		if( not val or val < 0 or val > 9999.9 ) then
			return;
		end
	
		LocalPlayer():ConCommand( "rp_changefrequency " .. val .. "\n" );
		PlayerMenuRadio.FreqEntry:SetText( math.Round( val * 100 ) / 100 );
	
	end
	

	PlayerMenuRadio.FreqEntry = PlayerMenuRadio:AddEntry( ChangeFreq, 5, 55, 100 );
	PlayerMenuRadio.FreqEntry:SetText( GetFloat( "radiofreq" ) );
	
end

function CreatePlayerMenuVGUI()

	PlayerMenuParent = vgui.Create( "TacoPanel" );
	PlayerMenuParent:SetPos( ScrW() * .2, ScrH() * .2 );
	PlayerMenuParent:SetSize( 600, 440 );
	PlayerMenuParent:SetTitle( "Player Menu" );
	PlayerMenuParent:SetCloseEvent( ClosePlayerMenu );
	PlayerMenuParent:SetKeyboardInputEnabled( true );
	CreatePlayerMenuContentVGUI();
	CreatePlayerMenuSubContentVGUI( 0 );
	
	local tab = PlayerMenuParent:AddButton( "Biography", 5, 5, 90, 30 );
	tab:SetRoundness( 0 );
	tab.MenuID = 3;
	tab:SetCallback( ChangeMenu );
	
	local tab = PlayerMenuParent:AddButton( "Stats", 100, 5, 90, 30 );
	tab:SetRoundness( 0 );
	tab.MenuID = 0;
	tab:SetCallback( ChangeMenu );

	local tab = PlayerMenuParent:AddButton( "Business", 195, 5, 90, 30 );
	tab:SetRoundness( 0 );
	tab.MenuID = 5;
	tab:SetCallback( ChangeMenu );	

	local tab = PlayerMenuParent:AddButton( "Finance", 290, 5, 90, 30 );
	tab:SetRoundness( 0 );
	tab.MenuID = 2;
	tab:SetCallback( ChangeMenu );

	local tab = PlayerMenuParent:AddButton( "Inventory", 385, 5, 90, 30 );
	tab:SetRoundness( 0 );
	tab.MenuID = 1;
	tab:SetCallback( ChangeMenu );

	local tab = PlayerMenuParent:AddButton( "Workshop", 480, 5, 90, 30 );
	tab:SetRoundness( 0 );
	tab.MenuID = 4;
	tab:SetCallback( ChangeMenu );
	
	
end

surface.CreateFont( "TargetID", 14, 500, true, false, "SubTitle" );

--FINANCE
function RenderFinance()

	draw.DrawText( "Economic Value: ", "DefaultSmall", 5, 35, Color( 255, 255, 255, 255 ) );
	draw.DrawText( "Your borrowed total: ", "DefaultSmall", 5, 50, Color( 255, 255, 255, 255 ) );
	draw.DrawText( "How much you owe: ", "DefaultSmall", 5, 65, Color( 255, 255, 255, 255 ) );
	draw.DrawText( "Current amount of money: ", "DefaultSmall", 5, 80, Color( 255, 255, 255, 255 ) );
	
	local econcolor = Color( 10, 200, 10, 255 );
	
	if( GetGlobalFloat( "EconomyMoney" ) < 0 ) then
		econcolor = Color( 200, 10, 10, 255 );
	end
	
	draw.DrawText( "$" .. GetGlobalFloat( "EconomyMoney" ), "DefaultSmall", 150, 35, econcolor );
	draw.DrawText( "$" .. GetFloat( "borrowamount" ), "DefaultSmall", 150, 50, Color( 255, 255, 255, 255 ) );
	
	local owecolor = Color( 255, 255, 255, 255 );
	
	if( GetFloat( "oweamount" ) > 0 ) then
		owecolor = Color( 200, 10, 10, 255 );
	end
	
	draw.DrawText( "$" .. GetFloat( "oweamount" ), "DefaultSmall", 150, 65, owecolor );
	draw.DrawText( "$" .. GetFloat( "money" ), "DefaultSmall", 150, 80, Color( 255, 255, 255, 255 ) );
			
				
end


--BUSINESS
function RenderBusiness()

	if( GetInt( "ownsbusiness" ) == 1 ) then
		
		local id = GetInt( "businessid" );
		
		surface.SetFont( "TargetID" );
		PlayerMenuContent.NameLabel:SetSize( surface.GetTextSize( GetGlobalString( "business." .. id .. ".businessname" ) ), 23 );
		PlayerMenuContent.NameLabel:SetText( GetGlobalString( "business." .. id .. ".businessname" ) );
		
		PlayerMenuContent.ChangeNameBut:SetPos( surface.GetTextSize( PlayerMenuContent.NameLabel:GetValue() ) + 30, 2 );
			
		
		surface.SetFont( "DefaultSmall" );
		PlayerMenuContent.ProfitLabel:SetSize( surface.GetTextSize( "Current Bank Amount: $" .. GetGlobalFloat( "business." .. id .. ".bankamount" ) ), 23 );
		PlayerMenuContent.ProfitLabel:SetText( "Current Bank Amount: $" .. GetGlobalFloat( "business." .. id .. ".bankamount" ) );
		
	end

end

--BIOGRAPHY
function RenderBiography()

	if( PlayerMenuContent.BioIcon ) then
		if( PlayerMenuContent.BioIcon.Model ~= LocalPlayer():GetModel() ) then
			PlayerMenuContent.BioIcon = vgui.Create( "SpawnIcon", PlayerMenuContent );
			PlayerMenuContent.BioIcon.Model = LocalPlayer():GetModel();
			PlayerMenuContent.BioIcon:SetModel( LocalPlayer():GetModel() );
			PlayerMenuContent.BioIcon:SetPos( 5, 1 );
			PlayerMenuContent.BioIcon:SetSize( 64, 64 );
			PlayerMenuContent.BioIcon:SetMouseInputEnabled( false );
		end
	end

end

--INVENTORY
function RenderInventory()

	PlayerMenuContent.SpaceNum:SetText( "Max Carrying Space: " .. math.Round( GetFloat( "inventory.MaxSize" ) * 100 ) / 100 );
	PlayerMenuContent.SpaceNum:SizeToContents();
	
	PlayerMenuContent.CrntSpaceNum:SetText( "Currently Used Space: " .. math.Round( GetFloat( "inventory.CrntSize" ) * 100 ) / 100 );
	PlayerMenuContent.CrntSpaceNum:SizeToContents();
	
	local num = 0;

	local scroll = PlayerMenuContent:GetScrollAmount();

	for k, v in pairs( Inventory ) do

		local x = 5;
		local y = num * 94 + 92;
	
		draw.RoundedBox( 2, x, y, PlayerMenuContent:GetWide() - 10, 25, Color( 60, 60, 60, 255 ) );
		
		if( not PlayerMenuContent.InventoryIcon[k] ) then
		
			PlayerMenuContent.InventoryIcon[k] = vgui.Create( "SpawnIcon", PlayerMenuContent );
			PlayerMenuContent.InventoryIcon[k]:SetModel( v.Model );
			PlayerMenuContent.InventoryIcon[k]:SetPos( x + 5, y + scroll );
			PlayerMenuContent.InventoryIcon[k]:SetSize( 64, 64 );
			PlayerMenuContent.InventoryIcon[k]:SetMouseInputEnabled( false );
			
		end
		
		if( not PlayerMenuContent.InventoryDropButton[k] ) then
		
			PlayerMenuContent.InventoryDropButton[k] = PlayerMenuContent:AddButton( "Drop", x + 444, y + 5 + scroll, 40, 15 );
			PlayerMenuContent.InventoryDropButton[k]:SetRoundness( 0 );
			PlayerMenuContent.InventoryDropButton[k]:SetOutlineColor( Color( 0, 0, 0, 100 ) );
			PlayerMenuContent.InventoryDropButton[k].ID = k;
			
			local function DropItem( but )
			
				LocalPlayer():ConCommand( "rp_dropitem " .. but.ID .. "\n" );
			
			end
			
			PlayerMenuContent.InventoryDropButton[k]:SetCallback( DropItem );
			
		end
		
		if( v.Usable and not PlayerMenuContent.InventoryUseButton[k] ) then
		
			PlayerMenuContent.InventoryUseButton[k] = PlayerMenuContent:AddButton( "Use", x + 494, y + 5 + scroll, 30, 15 );
			PlayerMenuContent.InventoryUseButton[k]:SetRoundness( 0 );
			PlayerMenuContent.InventoryUseButton[k]:SetOutlineColor( Color( 0, 0, 0, 100 ) );
			PlayerMenuContent.InventoryUseButton[k].ID = k;
			
			local function UseItem( but )
			
				LocalPlayer():ConCommand( "rp_useitem " .. but.ID .. "\n" );
			
			end
			
			PlayerMenuContent.InventoryUseButton[k]:SetCallback( UseItem );
			
		end

		if( not PlayerMenuContent.InventoryNameLabel[k] ) then

			PlayerMenuContent.InventoryNameLabel[k] = PlayerMenuContent:AddLabel( v.Name, "DefaultSmall", x + 69, y + 6 + scroll, Color( 255, 255, 255, 255 ) );
			
		elseif( PlayerMenuContent.InventoryNameLabel[k]:GetValue() ~= v.Name ) then
		
			PlayerMenuContent.InventoryNameLabel[k]:SetText( v.Name );
			PlayerMenuContent.InventoryNameLabel[k]:SetSize( 250, 30 );
			
		end
		
		if( not PlayerMenuContent.InventoryAmountLabel[k] ) then
		
			PlayerMenuContent.InventoryAmountLabel[k] = PlayerMenuContent:AddLabel( v.Amt, "DefaultSmall", x + 270, y + 7 + scroll, Color( 255, 255, 255, 255 ) );
		
		elseif( PlayerMenuContent.InventoryAmountLabel[k]:GetValue() ~= v.Amt ) then
		
			PlayerMenuContent.InventoryAmountLabel[k]:SetText( v.Amt );
			
		end
		
		if( not PlayerMenuContent.InventoryWeightLabel[k] ) then
		
			PlayerMenuContent.InventoryWeightLabel[k] = PlayerMenuContent:AddLabel( v.Weight, "DefaultSmall", x + 310, y + 7 + scroll, Color( 255, 255, 255, 255 ) );
		
		elseif( PlayerMenuContent.InventoryWeightLabel[k]:GetValue() ~= math.Round( v.Weight * 100 ) / 100 ) then
		
			PlayerMenuContent.InventoryWeightLabel[k]:SetText( math.Round( v.Weight * 100 ) / 100 );

		end
		
		if( not PlayerMenuContent.InventorySizeLabel[k] ) then
		
			PlayerMenuContent.InventorySizeLabel[k] = PlayerMenuContent:AddLabel( v.Size, "DefaultSmall", x + 347, y + 7 + scroll, Color( 255, 255, 255, 255 ) );
		
		elseif( PlayerMenuContent.InventorySizeLabel[k]:GetValue() ~= math.Round( v.Size * 100 ) / 100 ) then
		
			PlayerMenuContent.InventorySizeLabel[k]:SetText( math.Round( v.Size * 100 ) / 100 );
			
		end
		
		if( not PlayerMenuContent.InventoryDescLabel[k] ) then
		
			PlayerMenuContent.InventoryDescLabel[k] = PlayerMenuContent:AddLabel( v.Desc, "DefaultSmall", x + 69, y + 30 + scroll, Color( 255, 255, 255, 255 ) );
		
		elseif( PlayerMenuContent.InventoryDescLabel[k]:GetValue() ~= v.Desc ) then
		
			PlayerMenuContent.InventoryDescLabel[k]:SetText( v.Desc );
			
		end
		
		num = num + 1;

	end

	if( num > 0 ) then
	
		if( not PlayerMenuContent.NameLabel ) then
			PlayerMenuContent.NameLabel = PlayerMenuContent:AddLabel( "Name", "DefaultSmall", 73, 78 + scroll, Color( 255, 255, 255, 255 ) );
		end
		
		if( not PlayerMenuContent.AmountLabel ) then
			PlayerMenuContent.AmountLabel = PlayerMenuContent:AddLabel( "Amount", "DefaultSmall", 265, 75 + scroll, Color( 255, 255, 255, 255 ) );
		end
		
		if( not PlayerMenuContent.WeightLabel ) then
			PlayerMenuContent.WeightLabel = PlayerMenuContent:AddLabel( "Weight", "DefaultSmall", 308, 75 + scroll, Color( 255, 255, 255, 255 ) );
		end
		
		if( not PlayerMenuContent.SizeLabel ) then
			PlayerMenuContent.SizeLabel = PlayerMenuContent:AddLabel( "Size", "DefaultSmall", 345, 75 + scroll, Color( 255, 255, 255, 255 ) );
		end

		
	end

	if( num >= 4 ) then

		PlayerMenuContent:SetMaxScroll( math.Clamp( ( num - 3 ) * 94 + 2, 0, 1500 ) );
	
	end
	
	UpdateInventory();
	
end

--STATS MENU
function RenderStatsMenu()

	draw.RoundedBox( 2, 10, 50, 150, 20, Color( 0, 0, 0, 255 ) );
	draw.RoundedBox( 2, 11, 51, math.Clamp( 148 * ( GetFloat( "stat.Strength" ) / 100 ), 2, 148 ), 18, Color( 0, 200, 0, 255 ) );

	draw.RoundedBox( 2, 10, 90, 150, 20, Color( 0, 0, 0, 255 ) );
	draw.RoundedBox( 2, 11, 91, math.Clamp( 148 * ( GetFloat( "stat.Endurance" ) / 100 ), 2, 148 ), 18, Color( 0, 200, 0, 255 ) );

	draw.RoundedBox( 2, 10, 130, 150, 20, Color( 0, 0, 0, 255 ) );
	draw.RoundedBox( 2, 11, 131, math.Clamp( 148 * ( GetFloat( "stat.Speed" ) / 100 ), 2, 148 ), 18, Color( 0, 200, 0, 255 ) );

	draw.RoundedBox( 2, 10, 170, 150, 20, Color( 0, 0, 0, 255 ) );
	draw.RoundedBox( 2, 11, 171, math.Clamp( 148 * ( GetFloat( "stat.Sprint" ) / 100 ), 2, 148 ), 18, Color( 0, 200, 0, 255 ) );

	draw.RoundedBox( 2, 10, 245, 150, 20, Color( 0, 0, 0, 255 ) );
	draw.RoundedBox( 2, 11, 246, math.Clamp( 148 * ( GetFloat( "stat.Aim" ) / 100 ), 2, 148 ), 18, Color( 0, 0, 180, 255 ) );

	draw.RoundedBox( 2, 10, 285, 150, 20, Color( 0, 0, 0, 255 ) );
	draw.RoundedBox( 2, 11, 286, math.Clamp( 148 * ( GetFloat( "stat.Medic" ) / 100 ), 2, 148 ), 18, Color( 0, 0, 180, 255 ) );

	draw.RoundedBox( 2, 10, 325, 150, 20, Color( 0, 0, 0, 255 ) );
	draw.RoundedBox( 2, 11, 326, math.Clamp( 148 * ( GetFloat( "stat.Sneak" ) / 100 ), 2, 148 ), 18, Color( 0, 0, 180, 255 ) );

	PlayerMenuContent.StrengthNum:SetText( math.floor( GetFloat( "stat.Strength" ) ) );
	PlayerMenuContent.StrengthNum:SizeToContents();
	
	PlayerMenuContent.EnduranceNum:SetText( math.floor( GetFloat( "stat.Endurance" ) ) );
	PlayerMenuContent.EnduranceNum:SizeToContents();
	
	PlayerMenuContent.SpeedNum:SetText( math.floor( GetFloat( "stat.Speed" ) ) );
	PlayerMenuContent.SpeedNum:SizeToContents();
	
	PlayerMenuContent.SprintNum:SetText( math.floor( GetFloat( "stat.Sprint" ) ) );
	PlayerMenuContent.SprintNum:SizeToContents();
	
	PlayerMenuContent.AimNum:SetText( math.floor( GetFloat( "stat.Aim" ) ) );
	PlayerMenuContent.AimNum:SizeToContents();
	
	PlayerMenuContent.MedicNum:SetText( math.floor( GetFloat( "stat.Medic" ) ) );
	PlayerMenuContent.MedicNum:SizeToContents();
	
	PlayerMenuContent.SneakNum:SetText( math.floor( GetFloat( "stat.Sneak" ) ) );
	PlayerMenuContent.SneakNum:SizeToContents();
	
	
	
end