diff options
| author | JustSomePwner <crotchyalt@gmail.com> | 2018-08-30 14:01:54 +0200 |
|---|---|---|
| committer | JustSomePwner <crotchyalt@gmail.com> | 2018-08-30 14:01:54 +0200 |
| commit | 7ccb819f867493f8ec202ea3b39c94c198c64584 (patch) | |
| tree | 94622e61af0ff359e3d6689cf274d74f60b2492a /tf2/con_alias.hpp | |
| parent | 564d979b79e8a5aaa5014eba0ecd36c61575934f (diff) | |
first
Diffstat (limited to 'tf2/con_alias.hpp')
| -rw-r--r-- | tf2/con_alias.hpp | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/tf2/con_alias.hpp b/tf2/con_alias.hpp new file mode 100644 index 0000000..c943c24 --- /dev/null +++ b/tf2/con_alias.hpp @@ -0,0 +1,60 @@ +#pragma once
+
+#include <string>
+#include "simple_settings.h"
+
+template< typename var_type = bool >
+class con_alias : public ISetting {
+public:
+ con_alias( hash_t hash, con_var< var_type >* var ) :
+ m_var( var ),
+ m_value( var_type{ } ),
+ m_name( hash ),
+ m_is_var( true ) { };
+
+ con_alias( hash_t hash ) :
+ m_name( hash ),
+ m_value( 0 ),
+ m_var( nullptr ),
+ m_is_var( false ) { };
+
+ con_alias( hash_t hash, var_type&& rhs ) :
+ m_name( hash ),
+ m_value( rhs ),
+ m_var( nullptr ),
+ m_is_var( false ) { };
+
+ virtual std::string get_string( ) override {
+ if( m_is_var )
+ return m_var->get_string( );
+ else
+ return std::to_string( m_value );
+ }
+
+ virtual void set_value( int value ) override {
+ set_value_internal( value );
+ }
+
+ virtual void set_value( float value ) override {
+ set_value_internal( value );
+ }
+
+ virtual void set_value( ulong_t value ) override {
+ set_value_internal( value );
+ }
+
+private:
+ template < typename t >
+ void set_value_internal( t&& val ) {
+ if( m_is_var )
+ m_var->set( val );
+ else
+ m_value = ( var_type )( val );
+ }
+
+private:
+ bool m_is_var;
+ hash_t m_name;
+ var_type m_value;
+ con_var< var_type >* m_var;
+};
\ No newline at end of file |
