summaryrefslogtreecommitdiff
path: root/cheat/gmod/paint_traverse.cpp
blob: c3dd47e9cab0f59efed59f16399fe101f1a22f53 (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
#include "hooks.hpp"
#include "renderer.hpp"
#include "context.hpp"
#include "console.hpp"
#include "base_cheat.hpp"
#include "math.hpp"
#include "settings.hpp"

void __fastcall hooks::paint_traverse( void* ecx_, void* edx_, unsigned int panel, bool force_repaint, bool allowforce ) {
	static auto paint_traverse_o = g_gmod.m_panel->get_old_function< decltype( &hooks::paint_traverse ) >( 41 );
	if( g_gmod.m_panic ) return paint_traverse_o( ecx_, 0, panel, force_repaint, allowforce );


	static uint32_t mat_system_top_panel{ };
	if( !mat_system_top_panel ) {
		auto panel_name = g_gmod.m_panel( )->GetName( panel );
		auto panel_hash = hash::fnv1a( panel_name );
		if( fnv( "MatSystemTopPanel" ) == panel_hash ) {
			mat_system_top_panel = panel;
		}
	}

	if( panel && panel == mat_system_top_panel ) {
		g_gmod.m_panel( )->SetMouseInputEnabled( panel, g_settings.menu.open );
	}

	return paint_traverse_o( ecx_, 0, panel, force_repaint, allowforce );
}