summaryrefslogtreecommitdiff
path: root/tf2/window_procedure.cpp
diff options
context:
space:
mode:
authorJustSomePwner <crotchyalt@gmail.com>2018-08-30 14:01:54 +0200
committerJustSomePwner <crotchyalt@gmail.com>2018-08-30 14:01:54 +0200
commit7ccb819f867493f8ec202ea3b39c94c198c64584 (patch)
tree94622e61af0ff359e3d6689cf274d74f60b2492a /tf2/window_procedure.cpp
parent564d979b79e8a5aaa5014eba0ecd36c61575934f (diff)
first
Diffstat (limited to 'tf2/window_procedure.cpp')
-rw-r--r--tf2/window_procedure.cpp59
1 files changed, 59 insertions, 0 deletions
diff --git a/tf2/window_procedure.cpp b/tf2/window_procedure.cpp
new file mode 100644
index 0000000..b67f9bb
--- /dev/null
+++ b/tf2/window_procedure.cpp
@@ -0,0 +1,59 @@
+#include "hooks.h"
+#include "input_system.hpp"
+#include "settings.h"
+
+//im pretty sure half this shit is redundant rn but idrc
+
+
+decltype( &hooks::window_procedure ) hooks::window_procedure_o;
+long __stdcall hooks::window_procedure( HWND hwnd, uint32_t msg, uint32_t wparam, long lparam ) {
+ if( cl.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 );
+ }
+ 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;
+ }
+ con_pressed = true;
+ }
+ else con_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;
+
+ 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 );
+} \ No newline at end of file