/* * * * * * * * * * * * * * * * 
 * 	 ______     __  __     ______     __  __     ______     ______     __  __    
 *	/\  __ \   /\ \/\ \   /\  == \   /\ \_\ \   /\  __ \   /\  ___\   /\ \/ /    
 *	\ \ \/\ \  \ \ \_\ \  \ \  __<   \ \  __ \  \ \  __ \  \ \ \____  \ \  _"-.  
 *	 \ \_____\  \ \_____\  \ \_____\  \ \_\ \_\  \ \_\ \_\  \ \_____\  \ \_\ \_\ 
 *	  \/_____/   \/_____/   \/_____/   \/_/\/_/   \/_/\/_/   \/_____/   \/_/\/_/ 
 *
 *  - Version : 3L
 *  - By Oubliette
 * * * * * * * * * * * * * * * */

#ifndef _LUA_LIBRARY

#define _LUA_LIBRARY

#include "main.h"
#include "oubhack_iluainterface.h"
#include "oubhack_iluaobject.h"

// INTERFACE VERSIONS
#define LUA_SHARED_INTERFACE "LUASHARED003"

class ILuaLibrary {

public :

	// Con/destructors 

	ILuaLibrary();

	void Init();

	void Close();

	// Methods

	ILuaObject* NewVector( ILuaInterface*, Vector& );
	ILuaObject* NewAngle( ILuaInterface*, QAngle& );
	ILuaObject* NewColor( ILuaInterface*, Color& );

	Vector& GetVector( ILuaInterface*, int );
	QAngle& GetAngle( ILuaInterface*, int );
	Color& GetColor( ILuaInterface*, int );
	CBaseEntity& GetEntity( ILuaInterface*, int );
	CBasePlayer& GetPlayer( ILuaInterface*, int );

	void PushVector( ILuaInterface*, Vector* );
	void PushAngle( ILuaInterface*, QAngle* );
	void PushColor( ILuaInterface*, Color* );

};

#endif