summaryrefslogtreecommitdiff
path: root/cheat/tf2/netvar_proxy.hpp
blob: ea18a4d4b6afeb4ff8cbdeceabf1de2f8c6b2997 (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
#pragma once
#include "dt_recv.h"

//dont leave things out of namespaces
namespace hooks
{
	class c_netvar_proxy {
	public:
		c_netvar_proxy( RecvProp* target_property, RecvVarProxyFn new_proxy ) {
			m_target = target_property;
			m_original = target_property->m_ProxyFn;
			m_target->m_ProxyFn = new_proxy;
		}

		c_netvar_proxy( ) = default;

		void init( RecvProp* target, RecvVarProxyFn new_proxy ) {
			m_target = target;
			m_original = target->m_ProxyFn;
			m_target->m_ProxyFn = new_proxy;
		}

		~c_netvar_proxy( ) {
			if( !m_target ) return;
			m_target->m_ProxyFn = m_original;
		}

		RecvVarProxyFn get_old_function( ) const {
			return m_original;
		}

	private:
		//overcomplicated...
		RecvProp * m_target;
		RecvVarProxyFn m_original;
	};
}