//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: 
//
// $NoKeywords: $
//=============================================================================//

#include "render_pch.h"
#include "draw.h"
#include "server.h"
#include "filesystem.h"
#include "filesystem_engine.h"
#include "tier1/utlbuffer.h"
#include "tier1/utlvector.h"
#include "tier2/renderutils.h"

// memdbgon must be the last include file in a .cpp file!!!
#include "tier0/memdbgon.h"

CUtlVector< Vector >	g_Points;
//-----------------------------------------------------------------------------
// Purpose: Draw the currently loaded line file
// Input  : g_Points - list of points
//-----------------------------------------------------------------------------
void Linefile_Draw( void )
{
	Vector *points = g_Points.Base();
	int pointCount = g_Points.Size();

	for ( int i = 0; i < pointCount-1; i++ )
	{
		RenderLine( points[i], points[i+1], Color( 255, 255, 0, 255 ), true );
	}
}


//-----------------------------------------------------------------------------
// Purpose: parse the map.lin file from disk
//			this file contains a list of line segments illustrating a leak in
//			the map
//-----------------------------------------------------------------------------
void Linefile_Read_f( void )
{
	Vector	org;
	int		r;
	int		c;
	char	name[MAX_OSPATH];

	g_Points.Purge();

	Q_snprintf( name, sizeof( name ), "maps/%s.lin", sv.GetMapName() );

	CUtlBuffer buf( 0, 0, CUtlBuffer::TEXT_BUFFER );
	if ( !g_pFileSystem->ReadFile( name, NULL, buf ) )
	{
		ConMsg ("couldn't open %s\n", name);
		return;
	}
	
	ConMsg ("Reading %s...\n", name);
	c = 0;

	for ( ;; )
	{
		r = buf.Scanf ("%f %f %f\n", &org[0], &org[1], &org[2]);
		if (r != 3)
			break;
		c++;
		
		g_Points.AddToTail( org );
	}

	ConMsg ("%i lines read\n", c);
}