summaryrefslogtreecommitdiff
path: root/gmod/movement_recorder.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 /gmod/movement_recorder.cpp
parent564d979b79e8a5aaa5014eba0ecd36c61575934f (diff)
first
Diffstat (limited to 'gmod/movement_recorder.cpp')
-rw-r--r--gmod/movement_recorder.cpp79
1 files changed, 79 insertions, 0 deletions
diff --git a/gmod/movement_recorder.cpp b/gmod/movement_recorder.cpp
new file mode 100644
index 0000000..60f082e
--- /dev/null
+++ b/gmod/movement_recorder.cpp
@@ -0,0 +1,79 @@
+#include "movement_recorder.hpp"
+#include "input_system.hpp"
+#include "settings.hpp"
+#include "interface.hpp"
+
+namespace features
+{
+ void c_move_recorder::operator()( user_cmd_t* cmd ) {
+ if( !g_settings.misc.recorder_enable )
+ return;
+
+ if( g_input.is_key_pressed( g_settings.misc.recording_start_key( ) ) )
+ start_recording( );
+
+ if( g_input.is_key_pressed( g_settings.misc.recording_stop_key( ) ) )
+ stop_recording( );
+
+ if( m_recording ) {
+ record_cmd( cmd );
+ }
+
+ if( m_playing ) {
+ if( m_move_data.empty( ) ) {
+ m_playing = false;
+ }
+ else if( ++m_record_index >= m_move_data.size( ) ) {
+ m_playing = false;
+ }
+ else {
+ auto& old_cmd = m_move_data.at( m_record_index );
+
+ if( g_settings.misc.recording_show_angles == 1 && ( old_cmd.m_buttons & IN_ATTACK ) ||
+ g_settings.misc.recording_show_angles == 2 ) {
+ g_csgo.m_engine( )->SetViewAngles( old_cmd.m_viewangles );
+ }
+
+ cmd->m_buttons = old_cmd.m_buttons;
+ cmd->m_aimdirection = old_cmd.m_aimdirection;
+ cmd->m_forwardmove = old_cmd.m_forwardmove;
+ cmd->m_impulse = old_cmd.m_impulse;
+ cmd->m_mousedx = old_cmd.m_mousedx;
+ cmd->m_mousedy = old_cmd.m_mousedy;
+ cmd->m_sidemove = old_cmd.m_sidemove;
+ cmd->m_upmove = old_cmd.m_upmove;
+ cmd->m_viewangles = old_cmd.m_viewangles;
+ cmd->m_weaponselect = old_cmd.m_weaponselect;
+ cmd->m_weaponsubtype = old_cmd.m_weaponsubtype;
+ }
+ }
+ else {
+ m_record_index = 0;
+ }
+ }
+
+ void c_move_recorder::record_cmd( user_cmd_t* cmd ) {
+ m_move_data.push_back( *cmd );
+ }
+
+ void c_move_recorder::start_recording( ) {
+ m_recording = true;
+ }
+
+ void c_move_recorder::stop_recording( ) {
+ m_recording = false;
+ }
+
+ void c_move_recorder::play_back( ) {
+ m_recording = false;
+ m_playing = true;
+ }
+
+ void c_move_recorder::stop_playback( ) {
+ m_playing = false;
+ }
+
+ void c_move_recorder::clear_recording( ) {
+ m_move_data.clear( );
+ }
+} \ No newline at end of file