1.1 --- a/core/convar_sm_dota.h Wed Jul 10 20:46:00 2013 -0400
1.2 +++ b/core/convar_sm_dota.h Fri Jul 12 02:31:41 2013 -0400
1.3 @@ -49,6 +49,22 @@
1.4 class ConCommandBase;
1.5 struct characterset_t;
1.6
1.7 +struct CCommandContext
1.8 +{
1.9 + CCommandContext( int index )
1.10 + {
1.11 + _index = index;
1.12 + }
1.13 +
1.14 + int Get() const
1.15 + {
1.16 + return _index;
1.17 + }
1.18 +
1.19 +private:
1.20 + int _index;
1.21 +};
1.22 +
1.23
1.24
1.25 //-----------------------------------------------------------------------------
1.26 @@ -76,7 +92,7 @@
1.27 // Called when a ConCommand needs to execute
1.28 //-----------------------------------------------------------------------------
1.29 typedef void ( *FnCommandCallbackV1_t )( void );
1.30 -typedef void ( *FnCommandCallback_t )( void *pUnknown, const CCommand &command );
1.31 +typedef void ( *FnCommandCallback_t )( const CCommandContext &context, const CCommand &command );
1.32
1.33 #define COMMAND_COMPLETION_MAXITEMS 64
1.34 #define COMMAND_COMPLETION_ITEM_LENGTH 64
1.35 @@ -99,7 +115,7 @@
1.36 class ICommandCallback2
1.37 {
1.38 public:
1.39 - virtual void CommandCallback( void *pUnknown, const CCommand &command ) = 0;
1.40 + virtual void CommandCallback( const CCommandContext &context, const CCommand &command ) = 0;
1.41 };
1.42
1.43 class ICommandCompletionCallback
1.44 @@ -307,7 +323,7 @@
1.45 virtual bool CanAutoComplete( void );
1.46
1.47 // Invoke the function
1.48 - virtual void Dispatch( void *pUnknown, const CCommand &command );
1.49 + virtual void Dispatch( const CCommandContext &context, const CCommand &command );
1.50
1.51 private:
1.52 // NOTE: To maintain backward compat, we have to be very careful:
1.53 @@ -962,71 +978,71 @@
1.54 // Purpose: Utility macros to quicky generate a simple console command
1.55 //-----------------------------------------------------------------------------
1.56 #define CON_COMMAND( name, description ) \
1.57 - static void name( void *pUnknown, const CCommand &args ); \
1.58 + static void name( const CCommandContext &context, const CCommand &args ); \
1.59 static ConCommand name##_command( #name, name, description ); \
1.60 - static void name( void *pUnknown, const CCommand &args )
1.61 + static void name( const CCommandContext &context, const CCommand &args )
1.62
1.63 #ifdef CLIENT_DLL
1.64 #define CON_COMMAND_SHARED( name, description ) \
1.65 - static void name( void *pUnknown, const CCommand &args ); \
1.66 + static void name( const CCommandContext &context, const CCommand &args ); \
1.67 static ConCommand name##_command_client( #name "_client", name, description ); \
1.68 - static void name( void *pUnknown, const CCommand &args )
1.69 + static void name( const CCommandContext &context, const CCommand &args )
1.70 #else
1.71 #define CON_COMMAND_SHARED( name, description ) \
1.72 - static void name( void *pUnknown, const CCommand &args ); \
1.73 + static void name( const CCommandContext &context, const CCommand &args ); \
1.74 static ConCommand name##_command( #name, name, description ); \
1.75 - static void name( void *pUnknown, const CCommand &args )
1.76 + static void name( const CCommandContext &context, const CCommand &args )
1.77 #endif
1.78
1.79
1.80 #define CON_COMMAND_F( name, description, flags ) \
1.81 - static void name( void *pUnknown, const CCommand &args ); \
1.82 + static void name( const CCommandContext &context, const CCommand &args ); \
1.83 static ConCommand name##_command( #name, name, description, flags ); \
1.84 - static void name( void *pUnknown, const CCommand &args )
1.85 + static void name( const CCommandContext &context, const CCommand &args )
1.86
1.87 #ifdef CLIENT_DLL
1.88 #define CON_COMMAND_F_SHARED( name, description, flags ) \
1.89 - static void name( void *pUnknown, const CCommand &args ); \
1.90 + static void name( const CCommandContext &context, const CCommand &args ); \
1.91 static ConCommand name##_command_client( #name "_client", name, description, flags ); \
1.92 - static void name( void *pUnknown, const CCommand &args )
1.93 + static void name( const CCommandContext &context, const CCommand &args )
1.94 #else
1.95 #define CON_COMMAND_F_SHARED( name, description, flags ) \
1.96 - static void name( void *pUnknown, const CCommand &args ); \
1.97 + static void name( const CCommandContext &context, const CCommand &args ); \
1.98 static ConCommand name##_command( #name, name, description, flags ); \
1.99 - static void name( void *pUnknown, const CCommand &args )
1.100 + static void name( const CCommandContext &context, const CCommand &args )
1.101 #endif
1.102
1.103
1.104 #define CON_COMMAND_F_COMPLETION( name, description, flags, completion ) \
1.105 - static void name( void *pUnknown, const CCommand &args ); \
1.106 + static void name( const CCommandContext &context, const CCommand &args ); \
1.107 static ConCommand name##_command( #name, name, description, flags, completion ); \
1.108 - static void name( void *pUnknown, const CCommand &args )
1.109 + static void name( const CCommandContext &context, const CCommand &args )
1.110
1.111 #ifdef CLIENT_DLL
1.112 #define CON_COMMAND_F_COMPLETION_SHARED( name, description, flags, completion ) \
1.113 - static void name( void *pUnknown, const CCommand &args ); \
1.114 + static void name( const CCommandContext &context, const CCommand &args ); \
1.115 static ConCommand name##_command_client( #name "_client", name, description, flags, completion ); \
1.116 - static void name( void *pUnknown, const CCommand &args )
1.117 + static void name( const CCommandContext &context, const CCommand &args )
1.118 #else
1.119 #define CON_COMMAND_F_COMPLETION_SHARED( name, description, flags, completion ) \
1.120 - static void name( void *pUnknown, const CCommand &args ); \
1.121 + static void name( const CCommandContext &context, const CCommand &args ); \
1.122 static ConCommand name##_command( #name, name, description, flags, completion ); \
1.123 - static void name( void *pUnknown, const CCommand &args )
1.124 + static void name( const CCommandContext &context, const CCommand &args )
1.125 #endif
1.126
1.127
1.128 #define CON_COMMAND_EXTERN( name, _funcname, description ) \
1.129 - void _funcname( void *pUnknown, const CCommand &args ); \
1.130 + void _funcname( const CCommandContext &context, const CCommand &args ); \
1.131 static ConCommand name##_command( #name, _funcname, description ); \
1.132 - void _funcname( void *pUnknown, const CCommand &args )
1.133 + void _funcname( const CCommandContext &context, const CCommand &args )
1.134
1.135 #define CON_COMMAND_EXTERN_F( name, _funcname, description, flags ) \
1.136 - void _funcname( void *pUnknown, const CCommand &args ); \
1.137 + void _funcname( const CCommandContext &context, const CCommand &args ); \
1.138 static ConCommand name##_command( #name, _funcname, description, flags ); \
1.139 - void _funcname( void *pUnknown, const CCommand &args )
1.140 + void _funcname( const CCommandContext &context, const CCommand &args )
1.141
1.142 #define CON_COMMAND_MEMBER_F( _thisclass, name, _funcname, description, flags ) \
1.143 - void _funcname( void *pUnknown, const CCommand &args ); \
1.144 + void _funcname( const CCommandContext &context, const CCommand &args ); \
1.145 friend class CCommandMemberInitializer_##_funcname; \
1.146 class CCommandMemberInitializer_##_funcname \
1.147 { \