blob: a478776cf8db319ab54f8c15f05b05f3820eeec9 (
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
|
#pragma once
#include <deque>
#include "util.hpp"
#include "sdk.hpp"
NAMESPACE_REGION( context )
struct shot_data_t {
vec3_t m_local_pos;
vec3_t m_angle;
vec3_t m_enemy_pos;
int m_enemy_index;
int m_resolver_shots;
bool m_resolver_state;
bool m_missed{ true };
float m_hitbox_radius;
int m_hitgroup;
};
//replacement to the old global:: namespace
class c_context {
public:
//run localplayer check, pointer, is valid etc
bool run_frame( );
float pred_time( );
void on_cmove_end( user_cmd_t* cmd );
bool create_snapshot( user_cmd_t* );
//calculate accurate tickbase
bool calculate_tickbase( );
user_cmd_t* get_last_cmd( ) {
return m_snapshot.empty( ) ? nullptr : &m_snapshot.front( );
}
public:
c_base_player* m_local{ };
int m_stage{ };
//accurate tickbase
int m_tickbase{ };
bool m_drawing_postscreenspace{ };
bool m_has_incremented_shots{ };
bool m_drawing_screneend{ };
bool m_has_fired_this_frame{ };
vec3_t m_last_realangle{ };
vec3_t m_last_fakeangle{ };
vec3_t m_thirdperson_angle{ };
vec3_t m_last_origin{ };
float m_fov{ 90.f };
CLuaInterface* m_lua{ };
public:
void reset_shot_queue( );
int m_last_shot_ack;
int m_last_shot;
std::array< shot_data_t, 128 > m_shot_data;
private:
std::deque< user_cmd_t > m_snapshot;
};
END_REGION
extern context::c_context g_ctx;
|