summaryrefslogtreecommitdiff
path: root/cheat/internal_rewrite/visual_draw.cpp
blob: 8636af28a59d67affc8867992a89e0a831da42a0 (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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include "d3d.hpp"
#include "interface.hpp"
#include "renderer.hpp"
#include "visual.hpp"
#include "settings.hpp"

namespace features
{
	void c_visuals::draw_line( const vec2_t& a, const vec2_t& b, const clr_t& clr ) {
		if( g_settings.misc.hide_from_obs )
			g_d3d.draw_line( clr, a.x, a.y, b.x, b.y );
		else
			g_renderer.draw_line( a, b, clr );
	}

	void c_visuals::draw_line( int x, int y, int x1, int y1, const clr_t& clr ) {
		if( g_settings.misc.hide_from_obs )
			g_d3d.draw_line( clr, x, y, x1, y1 );
		else
			g_renderer.draw_line( x, y, x1, y1, clr );
	}

	void c_visuals::draw_rect( int x, int y, int w, int h, const clr_t& clr ) {
		if( g_settings.misc.hide_from_obs )
			g_d3d.draw_rect( clr, x, y, w, h );
		else
			g_renderer.draw_box( x, y, w, h, clr );
	}

	void c_visuals::draw_filled_rect( int x, int y, int w, int h, const clr_t& col ) {
		if( g_settings.misc.hide_from_obs )
			g_d3d.draw_filled_rect( col, x, y, w, h );
		else
			g_renderer.draw_rect( x, y, w, h, col );
	}

	void c_visuals::draw_circle( int x, int y, int r, const clr_t& col, int res ) {
		if( g_settings.misc.hide_from_obs )
			g_d3d.draw_circle( col, x, y, r, res );
		else
			g_renderer.draw_circle( x, y, r, col, res );
	}

	void c_visuals::draw_string( int x, int y, int align, bool big, const clr_t& col, const char* msg, ... ) {
		char* buffer = ( char* )_alloca( 1024 );
		va_list list{ };

		memset( buffer, 0, 1024 );

		__crt_va_start( list, msg );
		vsprintf_s( buffer, 1024, msg, list );
		__crt_va_end( list );

		switch( align ) {
		case ALIGN_CENTER:
			if( g_settings.misc.hide_from_obs )
				g_d3d.draw_text< ALIGN_CENTER >( big ? ::d3d::fonts.f_12 : ::d3d::fonts.f_esp_small, col, x, y, D3DFONTFLAG_DROPSHADOW, buffer );
			else
				g_renderer.draw_string< ALIGN_CENTER >( big ? g_fonts.f_12 : g_fonts.f_esp_small, x, y, col, buffer );

			break;
		case ALIGN_LEFT:
			if( g_settings.misc.hide_from_obs )
				g_d3d.draw_text< ALIGN_LEFT >( big ? ::d3d::fonts.f_12 : ::d3d::fonts.f_esp_small, col, x, y, D3DFONTFLAG_DROPSHADOW, buffer );
			else
				g_renderer.draw_string< ALIGN_LEFT >( big ? g_fonts.f_12 : g_fonts.f_esp_small, x, y, col, buffer );

			break;
		case ALIGN_RIGHT:
			if( g_settings.misc.hide_from_obs )
				g_d3d.draw_text< ALIGN_RIGHT >( big ? ::d3d::fonts.f_12 : ::d3d::fonts.f_esp_small, col, x, y, D3DFONTFLAG_DROPSHADOW, buffer );
			else
				g_renderer.draw_string< ALIGN_RIGHT >( big ? g_fonts.f_12 : g_fonts.f_esp_small, x, y, col, buffer );

			break;
		}
	}

	void c_visuals::draw_really_big_string( int x, int y, const clr_t& col, const char* msg, ... ) {
		char* buffer = ( char* )_alloca( 1024 );
		va_list list{ };

		memset( buffer, 0, 1024 );

		__crt_va_start( list, msg );
		vsprintf_s( buffer, 1024, msg, list );
		__crt_va_end( list );

		if( g_settings.misc.hide_from_obs )
			g_d3d.draw_text< ALIGN_LEFT >( ::d3d::fonts.f_18, col, x, y, D3DFONTFLAG_OUTLINE, buffer );
		else
			g_renderer.draw_string< ALIGN_LEFT >( g_fonts.f_bold, x, y, col, msg );
	}
}