Changeset 5180 in orxonox.OLD for trunk/src/lib/shell/shell_input.cc
- Timestamp:
- Sep 13, 2005, 11:45:51 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/lib/shell/shell_input.cc
r5179 r5180 18 18 #include "shell_input.h" 19 19 20 #include " text_engine.h"20 #include "event_handler.h" 21 21 22 22 #include "shell_command.h" … … 25 25 #include "compiler.h" 26 26 #include "stdlibincl.h" 27 #include "key_names.h" 28 27 29 28 30 using namespace std; … … 40 42 this->inputLine[0] = '\0'; 41 43 this->inputHistory = new tList<char>; 44 this->delayed = 0; 45 this->setRepeatDelay(.3, .05); 46 47 // subscribe all keyboard commands to ES_SEHLL 48 EventHandler* evh = EventHandler::getInstance(); 49 for (int i = 1; i < SDLK_LAST; i++) 50 evh->subscribe(this, ES_SHELL, i); 51 42 52 } 43 53 … … 144 154 } 145 155 156 157 /** 158 * prints out some nice help about the Shell 159 */ 160 void ShellInput::help() const 161 { 162 PRINT(0)("Help for the most important Shell-commands\n"); 163 PRINT(0)("F1 - HELP; F2 - DEBUG; ` - open/close shell\n"); 164 PRINT(0)("input order:\n"); 165 PRINT(0)("ClassName::objectName function [parameter1, [parameter2 ...]] or\n"); 166 PRINT(0)("Command [parameter]\n"); 167 } 168 169 void ShellInput::tick(float dt) 170 { 171 if (this->delayed > 0.0) 172 this->delayed -= dt; 173 else if (this->pressedKey != SDLK_FIRST ) 174 { 175 this->delayed = this->repeatRate; 176 if (this->pressedKey == SDLK_BACKSPACE) 177 this->removeCharacters(1); 178 else if (pressedKey < 127) 179 this->addCharacter(this->pressedKey); 180 } 181 } 182 183 /** 184 * listens for some event 185 * @param event the Event happened 186 */ 187 void ShellInput::process(const Event &event) 188 { 189 if (event.bPressed) 190 { 191 PRINTF(5)("Shell received command %s\n", SDLKToKeyname(event.type)); 192 if (event.type == SDLK_F1) 193 this->help(); 194 else if (event.type == SDLK_F2) 195 this->debug(); 196 else if (event.type == SDLK_TAB) 197 ;//this->autoComplete(); 198 else if (event.type == SDLK_BACKSPACE) 199 { 200 this->delayed = this->repeatDelay; 201 this->pressedKey = SDLK_BACKSPACE; 202 this->removeCharacters(1); 203 } 204 else if (event.type == SDLK_RETURN) 205 this->executeCommand(); 206 /* 207 else if (event.type == SDLK_UP) 208 { 209 // this->flushInputLine(); 210 tIterator<char>* iterator = this->commandList->getIterator(); 211 char* command = iterator->lastElement(); 212 while (command) 213 { 214 if (!strcmp (command, inputLine)) 215 { 216 inputLine = iterator->prevElement(); 217 return; 218 } 219 command = iterator->prevElement(); 220 } 221 inputLine = iterator->lastElement(); 222 } 223 */ 224 else if (likely(event.type < 127)) 225 { 226 Uint8 *keystate = SDL_GetKeyState(NULL); 227 this->delayed = this->repeatDelay; 228 if (unlikely( keystate[SDLK_LSHIFT] || keystate[SDLK_RSHIFT] )) 229 { 230 this->pressedKey = event.type-32; 231 this->addCharacter(event.type-32); 232 } 233 else 234 { 235 this->pressedKey = event.type; 236 this->addCharacter(event.type); 237 } 238 } 239 } 240 else // if(!event.bPressed) 241 { 242 if (this->pressedKey == event.type || (this->pressedKey == event.type - 32)) 243 { 244 this->pressedKey = SDLK_FIRST; 245 this->delayed = 0.0; 246 } 247 } 248 }
Note: See TracChangeset
for help on using the changeset viewer.