summaryrefslogtreecommitdiff
path: root/gmod/visual.hpp
blob: 748497fb50a92d6a4799e8865b9839af68681885 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#pragma once
#include <vector>
#include "interface.hpp"
#include "vector.hpp"
#include "color.hpp"
#include "d3d.hpp"
#include <unordered_map>
#include "strings.hpp"
#include "IVRenderView.hpp"

class c_base_player;

namespace features
{
	class c_visuals
	{
		void draw_line( const vec2_t& a, const vec2_t& b, const clr_t& clr );
		void draw_line( int x, int y, int x1, int y1, const clr_t& clr );
		void draw_rect( int x, int y, int w, int h, const clr_t& clr );
		void draw_filled_rect( int x, int y, int w, int h, const clr_t& clr );
		void draw_circle( int x, int y, int r, const clr_t& clr, int res = 48 );

		void draw_really_big_string( int x, int y, const clr_t& clr, const char* msg, ... );
		void draw_string( int x, int y, int align, bool big, const clr_t& clr, const char* msg, ... );

		struct stored_player_data_t
		{
			std::string m_rank{ };
			clr_t m_team_color{ };
			matrix3x4 m_matrix[ 128 ]{ };
			vec3_t m_pos{ };
			matrix3x4 m_coordinate_frame{ };
		};

		struct stored_data_t
		{
			std::array< stored_player_data_t, 256 > m_player{ };
			VMatrix m_matrix{ };
		};

		stored_data_t m_data{ };

		void spectator_list( );
		void draw_players( );

	public:
		void operator( )( );
		void store_data( );
		VMatrix& get_matrix( );
	};
}