summaryrefslogtreecommitdiff
path: root/cheat/gmod/window_procedure.cpp
blob: f47027b129b9f9edad453b8bc88023ba3ee307b0 (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
95
96
97
98
#include "base_cheat.hpp"
#include "hooks.hpp"
#include "input_system.hpp"
#include "settings.hpp"

decltype( &hooks::window_procedure ) hooks::window_procedure_o;
long __stdcall hooks::window_procedure( HWND hwnd, uint32_t msg, uint32_t wparam, long lparam ) {
	if ( g_gmod.m_panic ) {
		return CallWindowProcA( ( WNDPROC )window_procedure_o, hwnd, msg, wparam, lparam );
	}

	if ( msg == WM_ACTIVATE && wparam == WA_INACTIVE ) {
		g_input.clear_keys( );
	}

	if ( msg == WM_MOUSEMOVE ) {
		g_input.capture_mouse_move( lparam );
		g_con->get_input( )->capture_mouse_move( lparam );
	}

	auto enable_screen_clicker = []( bool enable ) -> void {

	};

	//static auto cvar = g_gmod.m_cvar( )->FindVar( xors( "cl_mouseenable" ) );
	static auto con_pressed = false;
	if( g_con->get_input( )->is_key_pressed( KEYS_HOME ) ) {
		if( !con_pressed ) {
			if( !g_con->m_open ) {
				g_con->m_consuming_input = true;
			}
	
			g_con->m_open ^= 1;
		}
	
		//cvar->set_value( !g_con->m_open );
		con_pressed = true;
	}
	else con_pressed = false;

	static auto list_pressed = false;
	if( g_con->get_input( )->is_key_pressed( KEYS_DELETE ) ) {
		if( !list_pressed ) {
			g_cheat.m_playerlist.is_open( ) ^= 1;
			list_pressed = true;
		}
	}
	else list_pressed = false;

	if( g_cheat.m_playerlist.is_open( ) ) {
		if( g_con->get_input( )->is_key_pressed( KEYS_DOWN ) ) {
			g_cheat.m_playerlist.get_index( )++;
		}
		else if( g_con->get_input( )->is_key_pressed( KEYS_UP ) ) {
			g_cheat.m_playerlist.get_index( )--;
		}

		if( g_cheat.m_playerlist.get_index( ) < 0 )
			g_cheat.m_playerlist.get_index( ) = g_cheat.m_playerlist.get_list( ).size( ) - 1;
		else if( g_cheat.m_playerlist.get_index( ) >= ( signed )g_cheat.m_playerlist.get_list( ).size( ) )
			g_cheat.m_playerlist.get_index( ) = 0;

		static bool was_pressed = false;
		if( g_con->get_input( )->is_key_pressed( KEYS_LEFT ) || g_con->get_input( )->is_key_pressed( KEYS_RIGHT ) ) {
			if( !was_pressed ) {
				*g_cheat.m_playerlist.get_list( )[ g_cheat.m_playerlist.get_index( ) ].m_friend ^= 1;
				was_pressed = true;
			}
		}
		else was_pressed = false;
	}

	if( g_con->get_input( )->register_key_press( VirtualKeyEvents_t( msg ), VirtualKeys_t( wparam ) ) ) {
		if( g_con->m_open ) return false;
	}

	if( !g_con->m_open ) {
		static bool was_pressed = false;
		if( g_input.is_key_pressed( KEYS_INSERT ) ) {
			if( !was_pressed ) {
				g_settings.menu.open ^= 1;
				//cvar->set_value( !g_settings.menu.open );
				//g_gmod.m_surface( )->SetCursorVisible( g_settings.menu.open );
				was_pressed = true;
			}
		}
		else {
			was_pressed = false;
		}

		if( g_input.register_key_press( VirtualKeyEvents_t( msg ), VirtualKeys_t( wparam ) )
			&& g_settings.menu.open ) {
			return false;
		}
	}

	return CallWindowProcA( ( WNDPROC )window_procedure_o, hwnd, msg, wparam, lparam );
}