]> icculus.org git repositories - divverent/nexuiz.git/blob - data/qcsrc/menu/system/debug.qc
support for menu_cmd sync to reload all cvar objects - and using that in the video...
[divverent/nexuiz.git] / data / qcsrc / menu / system / debug.qc
1 // SCMenu
2 // system/debug.qc
3
4
5 /*
6 ===================
7 Sys_Debug_Init
8 ===================
9 */
10 void() Sys_Debug_Init =
11 {
12         registercvar( SYSTEM_CVAR_VERSION_BUILDDATE, "", CVAR_READONLY );
13         cvar_set( SYSTEM_CVAR_VERSION_BUILDDATE, SYSTEM_CVAR_VERSION_BUILDDATE_VALUE );
14         registercvar( SYSTEM_CVAR_VERSION_BUILDTIME, "", CVAR_READONLY );
15         cvar_set( SYSTEM_CVAR_VERSION_BUILDTIME, SYSTEM_CVAR_VERSION_BUILDTIME_VALUE );
16         registercvar( SYSTEM_CVAR_VERSION, "", CVAR_READONLY );
17         cvar_set( SYSTEM_CVAR_VERSION, SYSTEM_CVAR_VERSION_VALUE );
18
19         registercvar( SYSTEM_CVAR_DEBUG, ftos( SYSTEM_CVAR_DEBUG_DEFAULT ), 0 );
20         registercvar( SYSTEM_CVAR_DEBUG_REF, ftos( SYSTEM_CVAR_DEBUG_REF_DEFAULT ), 0 );
21         registercvar( SYSTEM_CVAR_DEBUG_RUNFLAG, ftos( SYSTEM_CVAR_DEBUG_RUNFLAG_DEFAULT ), 0 );
22         registercvar( SYSTEM_CVAR_DEBUG_PROCESS, ftos( SYSTEM_CVAR_DEBUG_PROCESS_DEFAULT ), 0 );
23         registercvar( SYSTEM_CVAR_DEBUG_MGFX, ftos( SYSTEM_CVAR_DEBUG_MGFX_DEFAULT ), 0 );
24         registercvar( SYSTEM_CVAR_DEBUG_STRUCTURE, ftos( SYSTEM_CVAR_DEBUG_STRUCTURE_DEFAULT ), 0 );
25         registercvar( SYSTEM_CVAR_DEBUG_PARSER, SYSTEM_CVAR_DEBUG_PARSER_DEFAULT, 0 );
26         registercvar( SYSTEM_CVAR_DEBUG_PROCESS_FILTER, SYSTEM_CVAR_DEBUG_PROCESS_FILTER_DEFAULT, 0 );
27         registercvar( SYSTEM_CVAR_DEBUG_SOUND, ftos( SYSTEM_CVAR_DEBUG_SOUND_DEFAULT ), 0 );
28         registercvar( SYSTEM_CVAR_DEBUG_DUMP_NAMES, "0", 0 );
29         registercvar( SYSTEM_CVAR_DEBUG_AREA, ftos( SYSTEM_CVAR_DEBUG_AREA_DEFAULT ), 0 );
30         registercvar( SYSTEM_CVAR_DEBUG_STEP, ftos( SYSTEM_CVAR_DEBUG_STEP_DEFAULT ), 0 );
31         registercvar( SYSTEM_CVAR_DEBUG_MOUSE, ftos( SYSTEM_CVAR_DEBUG_MOUSE_DEFAULT ), 0 );
32 };
33
34 /*
35 ===================
36 Sys_Debug_Frame
37 ===================
38 */
39 void() Sys_Debug_Frame =
40 {
41         local float lTemp1, lTemp2, lStep;
42         sys_debug = cvar( SYSTEM_CVAR_DEBUG );
43         if( sys_debug ) {
44                 sys_debug_ref = cvar( SYSTEM_CVAR_DEBUG_REF );
45
46                 sys_debug_area = cvar( SYSTEM_CVAR_DEBUG_AREA );
47
48                 sys_debug_sound = cvar( SYSTEM_CVAR_DEBUG_SOUND );
49
50                 sys_debug_structure = cvar( SYSTEM_CVAR_DEBUG_STRUCTURE );
51
52                 sys_debug_mouse = cvar( SYSTEM_CVAR_DEBUG_MOUSE );
53
54                 lStep = cvar( SYSTEM_CVAR_DEBUG_STEP );
55                 if( lStep == 1 ) {
56                         sys_debug_halt = true;
57                 } else if( lStep == 2 ) {
58                         sys_debug_halt = false;
59                         cvar_set( SYSTEM_CVAR_DEBUG_STEP, "1" );
60
61                         print( "Menu: -- Step: Time:", ftos( gettime() ), "\n" );
62                 } else {
63                         sys_debug_halt = false;
64                 }
65
66                 sys_debug_runflag = cvar( SYSTEM_CVAR_DEBUG_RUNFLAG );
67                 // FIXME: evil bug in fteqcc!! dont pass function calls to switches
68                 switch( sys_debug_runflag ) {
69                 case 0:
70                         sys_debug_runflag = false;
71                         break;
72                 case 1:
73                         cvar_set( SYSTEM_CVAR_DEBUG_RUNFLAG, "0" );
74                 case 2:
75                         sys_debug_runflag = true;
76                         break;
77                 }
78
79                 sys_debug_process = cvar( SYSTEM_CVAR_DEBUG_PROCESS );
80                 switch( sys_debug_process ) {
81                 case 0:
82                         sys_debug_process = false;
83                         break;
84                 case 1:
85                         cvar_set( SYSTEM_CVAR_DEBUG_PROCESS, "0" );
86                 case 2:
87                         sys_debug_process = true;
88                         break;
89                 }
90
91                 sys_debug_mgfx = cvar( SYSTEM_CVAR_DEBUG_MGFX );
92                 switch( sys_debug_mgfx ) {
93                 case 0:
94                         sys_debug_mgfx = false;
95                         break;
96                 case 1:
97                         cvar_set( SYSTEM_CVAR_DEBUG_MGFX, "0" );
98                 case 2:
99                         sys_debug_mgfx = true;
100                         break;
101                 }
102
103                 lTemp1 = tokenize( cvar_string( SYSTEM_CVAR_DEBUG_PROCESS_FILTER ) );
104                 sys_debug_process_filter = 0;
105                 for( lTemp2 = 0 ; lTemp2 < lTemp1 ; ++lTemp2 )
106                         if( argv( lTemp2 ) == "runflag" )
107                                 sys_debug_process_filter = sys_debug_process_filter | MENU_PROCESS_RUNFLAG;
108                         else if( argv( lTemp2 ) == "draw" )
109                                 sys_debug_process_filter = sys_debug_process_filter | MENU_PROCESS_DRAW;
110                         else if( argv( lTemp2 ) == "update" )
111                                 sys_debug_process_filter = sys_debug_process_filter | MENU_PROCESS_UPDATE;
112                         else if( argv( lTemp2 ) == "mouse" )
113                                 sys_debug_process_filter = sys_debug_process_filter | MENU_PROCESS_MOUSE;
114                         else if( argv( lTemp2 ) == "key" )
115                                 sys_debug_process_filter = sys_debug_process_filter | MENU_PROCESS_KEY;
116
117                 lTemp1 = tokenize( cvar_string( SYSTEM_CVAR_DEBUG_PARSER ) );
118                 sys_debug_parser = 0;
119                 for( lTemp2 = 0 ; lTemp2 < lTemp1 ; ++lTemp2 )
120                         if( argv( lTemp2 ) == "info" )
121                                 sys_debug_parser = sys_debug_parser | PARSER_INFO;
122                         else if( argv( lTemp2 ) == "high" )
123                                 sys_debug_parser = sys_debug_parser | PARSER_HIGH;
124                         else if( argv( lTemp2 ) == "low" )
125                                 sys_debug_parser = sys_debug_parser | PARSER_LOW;
126
127
128         } else {
129                 sys_debug_halt = false;
130                 sys_debug_ref = false;
131                 sys_debug_area = false;
132                 sys_debug_sound = false;
133                 sys_debug_runflag = 0;
134                 sys_debug_process = 0;
135                 sys_debug_mgfx = false;
136                 sys_debug_structure = 0;
137                 sys_debug_parser = 0;
138                 sys_debug_process_filter = 0;
139                 sys_debug_mouse = 0;
140         }
141         if( cvar( SYSTEM_CVAR_DEBUG_DUMP_NAMES ) ) {
142                 Sys_Debug_DumpNames();
143                 cvar_set( SYSTEM_CVAR_DEBUG_DUMP_NAMES, "0" );
144         }
145         sys_debug_cursor_localpos = '-1 -1 -1';
146 };
147
148 /*
149 ===================
150 Sys_Debug_Draw
151 ===================
152 */
153 void() Sys_Debug_Draw =
154 {
155         if( sys_debug_mouse == 1 )
156                 Cursor_PrintInfo( '1 0 0', strcat( ftos( floor( sys_debug_cursor_localpos_x ) ),
157                         " ", ftos( floor( sys_debug_cursor_localpos_y ) ) ), '9 9 0', '0.8 0.8 0.8',
158                         1, DRAWFLAG_ADDITIVE );
159         else if( sys_debug_mouse == 2 )
160                 Cursor_PrintInfo( '1 0 0', strcat( ftos( floor( Cursor_Position_x ) ), " ",
161                         ftos( floor( Cursor_Position_y ) ) ), '9 9 0', '0.8 0.8 0.8', 1, DRAWFLAG_ADDITIVE );
162 };
163
164 /*
165 ===================
166 Sys_Debug_DumpNames
167 ===================
168 */
169 void() Sys_Debug_DumpNames =
170 {
171         local entity lNode;
172
173         print( "Menu: Dumping names..\n" );
174
175         lNode = null_entity;
176         while( (lNode = nextent( lNode )) != null_entity )
177                 print( "Menu: ", etos( lNode ), " <-> ", lNode.name, "\n" );
178         print( "\n" );
179 };