- Timestamp:
- Aug 23, 2005, 11:18:39 PM (19 years ago)
- Location:
- trunk/src
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/lib/coord/p_node.cc
r5111 r5113 165 165 void PNode::setRelCoor (const Vector& relCoord) 166 166 { 167 if (this->toCoordinate!= NULL) 168 { 169 delete this->toCoordinate; 170 this->toCoordinate = NULL; 171 } 172 167 173 this->relCoordinate = relCoord; 168 174 this->bRelCoorChanged = true; … … 213 219 void PNode::setAbsCoor (const Vector& absCoord) 214 220 { 221 if (this->toCoordinate!= NULL) 222 { 223 delete this->toCoordinate; 224 this->toCoordinate = NULL; 225 } 226 215 227 if( likely(this->parentMode & PNODE_MOVEMENT)) 216 228 { … … 276 288 void PNode::setRelDir (const Quaternion& relDir) 277 289 { 290 if (this->toDirection!= NULL) 291 { 292 delete this->toDirection; 293 this->toDirection = NULL; 294 } 278 295 this->relDirection = relDir; 279 296 this->bRelCoorChanged = true; … … 327 344 void PNode::setAbsDir (const Quaternion& absDir) 328 345 { 346 if (this->toDirection!= NULL) 347 { 348 delete this->toDirection; 349 this->toDirection = NULL; 350 } 351 329 352 if (likely(this->parent != NULL)) 330 353 this->relDirection = absDir / this->parent->getAbsDir(); -
trunk/src/lib/coord/p_node.h
r5111 r5113 66 66 /** @returns the relative position */ 67 67 inline const Vector& getRelCoor () const { return this->prevRelCoordinate; }; 68 /** @returns the Relative Coordinate Destination */ 69 inline const Vector& getRelCoorSoft2D() const { return (this->toCoordinate)?*this->toCoordinate:this->relCoordinate; }; 68 70 void setAbsCoor (const Vector& absCoord); 69 71 void setAbsCoor (float x, float y, float z); … … 78 80 /** @returns the relative Direction */ 79 81 inline const Quaternion& getRelDir () const { return this->prevRelDirection; }; 82 /** @returns the Relative Directional Destination */ 83 inline const Quaternion& getRelDirSoft2D() const { return (this->toDirection)?*this->toDirection:this->relDirection; }; 80 84 /** @returns a Vector pointing into the relative Direction */ 81 85 inline Vector getRelDirV() const { return this->prevRelDirection.apply(Vector(0,1,0)); }; -
trunk/src/lib/graphics/render2D/element_2d.cc
r5111 r5113 214 214 void Element2D::setRelCoor2D (const Vector& relCoord) 215 215 { 216 if (this->toCoordinate!= NULL) 217 { 218 delete this->toCoordinate; 219 this->toCoordinate = NULL; 220 } 216 221 this->relCoordinate = relCoord; 217 222 this->bRelCoorChanged = true; … … 227 232 void Element2D::setRelCoor2D (float x, float y, float z) 228 233 { 229 this->set AbsCoor2D(Vector(x,y,z));234 this->setRelCoor2D(Vector(x,y,z)); 230 235 } 231 236 … … 288 293 void Element2D::setAbsCoor2D (const Vector& absCoord) 289 294 { 295 if (this->toCoordinate!= NULL) 296 { 297 delete this->toCoordinate; 298 this->toCoordinate = NULL; 299 } 300 290 301 if( likely(this->parentMode & E2D_PARENT_MOVEMENT)) 291 302 { … … 362 373 void Element2D::setRelDir2D (float relDir) 363 374 { 375 if (this->toDirection!= NULL) 376 { 377 delete this->toDirection; 378 this->toDirection = NULL; 379 } 380 364 381 this->relDirection = relDir; 365 382 this->bRelDirChanged = true; … … 386 403 void Element2D::setAbsDir2D (float absDir) 387 404 { 405 if (this->toDirection!= NULL) 406 { 407 delete this->toDirection; 408 this->toDirection = NULL; 409 } 410 388 411 if (likely(this->parent != NULL)) 389 412 this->relDirection = absDir - this->parent->getAbsDir2D(); … … 712 735 { 713 736 tIterator<Element2D>* iterator = this->children->getIterator(); 714 //PNode* pn = this->children->enumerate ();715 737 Element2D* pn = iterator->nextElement(); 716 738 while( pn != NULL) -
trunk/src/lib/graphics/render2D/element_2d.h
r5111 r5113 108 108 /** @returns the relative position */ 109 109 inline const Vector& getRelCoor2D () const { return this->prevRelCoordinate; }; 110 /** @returns the Relative Coordinate Destination */ 111 inline const Vector& getRelCoorSoft2D() const { return (this->toCoordinate)?*this->toCoordinate:this->relCoordinate; }; 110 112 const Vector& getRelCoor2Dpx() const; 111 113 void setAbsCoor2D (const Vector& absCoord); … … 123 125 /** @returns the relative Direction */ 124 126 inline float getRelDir2D () const { return this->prevRelDirection; }; 127 /** @returns the Relative Directional Destination */ 128 inline float getRelDirSoft2D() const { return (this->toDirection)?*this->toDirection:this->relDirection; }; 125 129 void setAbsDir2D (float absDir); 126 130 /** @returns the absolute Direction */ -
trunk/src/lib/graphics/text_engine.cc
r5111 r5113 592 592 if( glyphSurf != NULL ) 593 593 { 594 595 594 SDL_SetAlpha(glyphSurf, 0, 0); 596 595 … … 598 597 TexCoord tmpTexCoord; 599 598 tmpTexCoord.minU = (float)tmpRect.x/(float)tmpSurf->w; 600 tmpTexCoord.maxU = (float)(tmpRect.x +1 + tmpGlyph->width)/(float)tmpSurf->w;599 tmpTexCoord.maxU = (float)(tmpRect.x +1 + tmpGlyph->width)/(float)tmpSurf->w; 601 600 tmpTexCoord.minV = (float)tmpRect.y/(float)tmpSurf->w; 602 601 tmpTexCoord.maxV = (float)(tmpRect.y+tmpGlyph->height)/(float)tmpSurf->w; … … 620 619 621 620 // Outputting Glyphs to BMP-files. 622 623 char outname[ 64];621 /* 622 char outname[512]; 624 623 if (i < 10) 625 sprintf( outname, " glyph-00%d.bmp", i );624 sprintf( outname, "%s-glyph-00%d.bmp", this->getName(), i ); 626 625 else if (i <100) 627 sprintf( outname, "glyph-0%d.bmp", i );626 sprintf( outname, "%s-glyph-0%d.bmp", this->getName(), i ); 628 627 else 629 sprintf( outname, "glyph-%d.bmp", i );630 SDL_SaveBMP(tmpSurf, outname); 631 */ 628 sprintf( outname, "%s-glyph-%d.bmp", this->getName(), i ); 629 SDL_SaveBMP(tmpSurf, outname);*/ 630 632 631 } 633 632 } … … 712 711 x = 0; 713 712 y = y + maxLineHeight; 714 maxLineHeight = 0;713 //maxLineHeight = 0; 715 714 } 716 715 if (y + maxLineHeight + 1 > size) -
trunk/src/lib/lang/base_object.cc
r5111 r5113 52 52 // delete []this->className; 53 53 if (this->objectName) 54 delete []this->objectName;}54 delete[] this->objectName;} 55 55 56 56 /** … … 84 84 { 85 85 if (this->objectName) 86 delete []this->objectName;86 delete[] this->objectName; 87 87 if (objectName) 88 88 { -
trunk/src/lib/lang/base_object.h
r5111 r5113 27 27 28 28 void setName (const char* newName); 29 /** \briefreturns the Name of this Object */29 /** returns the Name of this Object */ 30 30 inline const char* getName ()const { return this->objectName; }; 31 31 -
trunk/src/lib/lang/class_list.cc
r5111 r5113 48 48 { 49 49 delete this->objectList; 50 if(ClassList::classList != NULL) 51 { 52 delete ClassList::classList; 53 ClassList::classList = NULL; 54 } 50 55 --ClassList::classCount; 51 56 } … … 56 61 //! the Count of classes 57 62 unsigned int ClassList::classCount = 0; 63 64 //! a List of all strings of all classes, that have registered so far. 65 tList<const char>* ClassList::classList = NULL; 58 66 59 67 /** … … 109 117 } 110 118 119 /** 120 * grabs the names of all Classes, and injects it into a List of const chars 121 * @return the generated List 122 * 123 * This function first looks, if the List has been changed (by the ListSize) 124 * befor it changes anything. 125 */ 126 const tList<const char>* ClassList::getClassList() 127 { 128 if (unlikely(ClassList::classList != NULL && ClassList::classList->getSize() != ClassList::classCount)) 129 { 130 delete ClassList::classList; 131 ClassList::classList = NULL; 132 } 133 if (unlikely(ClassList::classList == NULL)) 134 ClassList::classList = new tList<const char>; 135 136 if(likely(ClassList::first != NULL)) 137 { 138 ClassList* tmpCL = ClassList::first; 139 while (likely(tmpCL != NULL)) 140 { 141 ClassList::classList->add(tmpCL->className); 142 tmpCL = tmpCL->next; 143 } 144 } 145 return ClassList::classList; 146 } 147 148 /** 149 * searches for classID and returns the list of Entities 150 * @param classID the ID of the class to get the list from 151 * @return the List accessed by classID, or NULL if not found 152 */ 111 153 tList<BaseObject>* ClassList::getList(long classID) 112 154 { … … 119 161 { 120 162 if (unlikely(tmpCL->classID == classID)) 163 return tmpCL->objectList; 164 tmpCL = tmpCL->next; 165 } 166 } 167 return NULL; 168 } 169 170 /** 171 * searches for className and returns the list of Entities 172 * @param className the name of the class to get the list from 173 * @return the List accessed by classID, or NULL if not found 174 */tList<BaseObject>* ClassList::getList(const char* className) 175 { 176 if(unlikely(ClassList::first == NULL)) 177 return NULL; 178 else 179 { 180 ClassList* tmpCL = ClassList::first; 181 while (likely(tmpCL != NULL)) 182 { 183 if (unlikely(!strcmp(tmpCL->className, className))) 121 184 return tmpCL->objectList; 122 185 tmpCL = tmpCL->next; … … 205 268 } 206 269 207 208 270 /** 209 271 * prints out a string of all the types this Object matches … … 222 284 } 223 285 } 286 287 /** 288 * converts a ClassID into a string 289 * @param classID the ClassID to search for 290 * @return a String containing the name of the Class, NULL if the Class was not found 291 */ 292 const char* ClassList::IDToString(ClassID classID) 293 { 294 if(likely(ClassList::first != NULL)) 295 { 296 ClassList* tmpCL = ClassList::first; 297 while (likely(tmpCL != NULL)) 298 { 299 if (tmpCL->classID == classID) 300 return tmpCL->className; 301 tmpCL = tmpCL->next; 302 } 303 } 304 return NULL; 305 } 306 307 /** 308 * converts a String into a ClassID 309 * @param className the name of the class to search for 310 * @return the ClassID. CL_NULL, if the class was not found. 311 */ 312 long ClassList::StringToID(const char* className) 313 { 314 if(likely(ClassList::first != NULL)) 315 { 316 ClassList* tmpCL = ClassList::first; 317 while (likely(tmpCL != NULL)) 318 { 319 if (!strcasecmp(tmpCL->className, className)) 320 return tmpCL->classID; 321 tmpCL = tmpCL->next; 322 } 323 } 324 return CL_NULL; 325 } 326 327 224 328 225 329 /** -
trunk/src/lib/lang/class_list.h
r5111 r5113 35 35 36 36 // STATIC FUNCTIONS 37 static void addToClassList(BaseObject* objectPointer, const long& classID, const char* className);38 static void removeFromClassList(BaseObject* objectPointer);37 static void addToClassList(BaseObject* objectPointer, const long& classID, const char* className); 38 static void removeFromClassList(BaseObject* objectPointer); 39 39 40 static tList<BaseObject>* getList(long classID = CL_NULL); 41 static BaseObject* getObject(const char* name, long classID = CL_NULL); 42 static bool exists(const BaseObject* object, long classID = CL_NULL); 40 static tList<BaseObject>* getList(long classID = CL_NULL); 41 static tList<BaseObject>* getList(const char* className); 42 static const tList<const char>* getClassList(); 43 static BaseObject* getObject(const char* name, long classID = CL_NULL); 44 static bool exists(const BaseObject* object, long classID = CL_NULL); 43 45 44 static void whatIs(const BaseObject* object); 45 static void debug(unsigned int debugLevel = 0, long classID = CL_NULL); 46 static void whatIs(const BaseObject* object); 47 48 static const char* IDToString(ClassID classID = CL_NULL); 49 static long StringToID(const char* className); 50 static void debug(unsigned int debugLevel = 0, long classID = CL_NULL); 51 46 52 47 53 private: 48 tList<BaseObject>* objectList; //!< A list of Objects belonging to this Class54 tList<BaseObject>* objectList; //!< A list of Objects belonging to this Class 49 55 50 long classID; //!< ClassID stored in this ClassList \see ClassID51 const char* className; //!< Name of the Class Stored here56 long classID; //!< ClassID stored in this ClassList \see ClassID 57 const char* className; //!< Name of the Class Stored here 52 58 53 ClassList* next; //!< Pointer to the next class in the List59 ClassList* next; //!< Pointer to the next class in the List 54 60 55 61 // STATIC MEMBERS 56 static ClassList* first; //!< The first Class in the List 57 static unsigned int classCount; //!< The Count of classes that have been registered (should match the lower description) 62 static ClassList* first; //!< The first Class in the List 63 static tList<const char>* classList; //!< a List of all Names of all classes, that have registered so far. 64 static unsigned int classCount; //!< The Count of classes that have been registered (should match the lower description) 58 65 }; 59 66 -
trunk/src/lib/util/list.h
r5111 r5113 135 135 void removeLast(); 136 136 void flush(); 137 T* firstElement() ;138 T* lastElement() ;139 bool isEmpty() ;140 unsigned int getSize() ;137 T* firstElement() const; 138 T* lastElement() const; 139 bool isEmpty() const; 140 unsigned int getSize() const; 141 141 bool inList(T* entity); 142 tIterator<T>* getIterator() ;142 tIterator<T>* getIterator() const; 143 143 T* nextElement(T* toEntity); 144 144 T* toArray(); … … 303 303 */ 304 304 template<class T> 305 inline T* tList<T>::firstElement() 305 inline T* tList<T>::firstElement() const 306 306 { 307 307 return this->first->curr; … … 314 314 */ 315 315 template<class T> 316 inline T* tList<T>::lastElement() 316 inline T* tList<T>::lastElement() const 317 317 { 318 318 return this->last->curr; … … 325 325 */ 326 326 template<class T> 327 inline bool tList<T>::isEmpty() 327 inline bool tList<T>::isEmpty() const 328 328 { 329 329 return (this->size==0)?true:false; … … 359 359 */ 360 360 template<class T> 361 inline unsigned int tList<T>::getSize() 361 inline unsigned int tList<T>::getSize() const 362 362 { 363 363 return this->size; … … 372 372 */ 373 373 template<class T> 374 inline tIterator<T>* tList<T>::getIterator() 374 inline tIterator<T>* tList<T>::getIterator() const 375 375 { 376 376 tIterator<T>* iterator = new tIterator<T>(this->first); -
trunk/src/util/loading/load_param.cc
r5111 r5113 17 17 18 18 #include "list.h" 19 #include "array.h"20 19 #include "base_object.h" 21 20 … … 386 385 * searches for classes, which beginn with classNameBegin 387 386 * @param classNameBegin the beginning string of a Class 388 * @return a NEW char-array with ClassNames. The ARRAYshould be deleted afterwards,387 * @return a NEW char-array with ClassNames. The LIST should be deleted afterwards, 389 388 * !! The strings MUST NOT be deleted !! 390 389 */ 391 Array<char*>* LoadClassDescription::searchClassWithShort(const char* classNameBegin)390 tList<const char>* LoadClassDescription::searchClassWithShort(const char* classNameBegin) 392 391 { 393 392 unsigned int searchLength = strlen(classNameBegin); 394 Array<char*>* retVal = new Array<char*>;393 tList<const char>* retVal = new tList<const char>; 395 394 396 395 tIterator<LoadClassDescription>* iterator = LoadClassDescription::classList->getIterator(); … … 401 400 !strncasecmp(enumClassDesc->className, classNameBegin, searchLength)) 402 401 { 403 retVal->add Entry(enumClassDesc->className);402 retVal->add(enumClassDesc->className); 404 403 } 405 404 enumClassDesc = iterator->nextElement(); … … 407 406 delete iterator; 408 407 409 retVal->finalizeArray();410 408 return retVal; 411 409 } -
trunk/src/util/loading/load_param.h
r5111 r5113 31 31 // Forward Declaration // 32 32 template<class T> class tList; 33 template<class T> class Array;34 33 35 34 //! macro that makes it even more easy to load a Parameter … … 312 311 313 312 static void printAll(const char* fileName = NULL); 314 static Array<char*>* searchClassWithShort(const char* classNameBegin);313 static tList<const char>* searchClassWithShort(const char* classNameBegin); 315 314 // static const LoadParamDescription* getClass(const char* className); 316 315 -
trunk/src/util/resource_manager.cc
r5111 r5113 99 99 this->dataDir = new char[strlen(realDir)+1]; 100 100 strcpy(this->dataDir, realDir); 101 delete realDir;101 delete[] realDir; 102 102 return true; 103 103 } 104 104 else 105 105 { 106 PRINTF(1)("%s is not a Directory, and can not be the Data Directory, leaving as %s \n", dataDir, this->dataDir);107 delete realDir;106 PRINTF(1)("%s is not a Directory, and can not be the Data Directory, leaving as %s \n", realDir, this->dataDir); 107 delete[] realDir; 108 108 return false; 109 109 } … … 631 631 632 632 // checking for the termination of the string given. If there is a "/" at the end cut it away 633 if (directoryName[strlen(directoryName)-1] == '/') 633 if (directoryName[strlen(directoryName)-1] == '/' || 634 directoryName[strlen(directoryName)-1] == '\\') 634 635 { 635 636 tmpDirName = new char[strlen(directoryName)+1]; … … 651 652 )) 652 653 { 653 delete tmpDirName;654 delete[] tmpDirName; 654 655 return true; 655 656 } -
trunk/src/util/shell.cc
r5111 r5113 20 20 #include "text_engine.h" 21 21 #include "list.h" 22 #include "array.h"23 22 #include "graphics_engine.h" 24 23 #include "event_handler.h" 25 24 26 25 #include "load_param.h" 26 #include "class_list.h" 27 28 #include "key_names.h" 27 29 #include "debug.h" 28 30 #include <stdarg.h> … … 40 42 this->setName("Shell"); 41 43 44 this->shellHeight = 400; 45 this->bActive = false; 42 46 this->buffer = new tList<char>; 43 47 44 this->textSize = 10; 48 this->textSize = 15; 49 this->lineSpacing = 5; 45 50 46 51 //this->bufferSize = 0; 47 52 this->bufferText = NULL; 48 53 this->setBufferSize(100); 54 this->bufferDisplaySize = 10; 49 55 this->setBufferDisplaySize(10); 50 this->setAbsCoor2D(3, GraphicsEngine::getInstance()->getResolutionY());56 this->setAbsCoor2D(3, -400); 51 57 this->delayed = 0; 52 58 this->setRepeatDelay(.3, .05); 53 59 this->pressedKey = SDLK_FIRST; 54 60 55 this->inputLineText = TextEngine::getInstance()->createText("fonts/earth.ttf", 10, TEXT_DYNAMIC, 255, 0, 0); 56 this->inputLineText->setAlignment(TEXT_ALIGN_LEFT); 57 this->inputLineText->setText(NULL); 61 this->inputLineText = NULL; 58 62 this->inputLine = new char[1]; 59 63 this->inputLine[0] = '\0'; 60 this->inputLineText->setParent2D(this); 61 62 64 65 this->rebuildText(); 66 this->completionList = NULL; 67 68 // EVENT-Handler subscription of '`' to all States, and all other keyboard commands to ES_SEHLL 63 69 EventHandler* evh = EventHandler::getInstance(); 64 70 evh->subscribe(this, ES_ALL, SDLK_BACKQUOTE); … … 77 83 for (int i = 0; i < this->bufferDisplaySize; i++) 78 84 delete this->bufferText[i]; 79 delete this->bufferText;85 delete[] this->bufferText; 80 86 81 87 // delete the inputLine … … 93 99 delete charIterator; 94 100 101 // if (this->completionList != NULL) 102 //delete this->completionList; 103 95 104 Shell::singletonRef = NULL; 96 105 } 106 107 108 void Shell::activate() 109 { 110 if (this->bActive == true) 111 PRINTF(3)("The shell is already active\n"); 112 this->bActive = true; 113 114 EventHandler::getInstance()->setState(ES_SHELL); 115 this->setRelCoorSoft2D(0, 0, 1, 5); 116 } 117 118 void Shell::deactivate() 119 { 120 if (this->bActive == false) 121 PRINTF(3)("The shell is already inactive\n"); 122 this->bActive = false; 123 124 EventHandler::getInstance()->setState(ES_GAME); 125 this->setRelCoorSoft2D(0, -400, 1, 5); 126 } 127 128 void Shell::setTextSize(unsigned int textSize, unsigned int lineSpacing) 129 { 130 this->textSize = textSize; 131 this->lineSpacing = lineSpacing; 132 133 this->rebuildText(); 134 } 135 136 void Shell::rebuildText() 137 { 138 if (this->inputLineText == NULL) 139 delete this->inputLineText; 140 this->inputLineText = TextEngine::getInstance()->createText("fonts/Aniron_Bold.ttf", this->textSize, TEXT_DYNAMIC, 255, 0, 0); 141 this->inputLineText->setAlignment(TEXT_ALIGN_LEFT); 142 this->inputLineText->setText(NULL); 143 this->inputLineText->setParent2D(this); 144 this->inputLineText->setRelCoor2D(5, (this->textSize + this->lineSpacing)*this->bufferDisplaySize); 145 146 this->setBufferDisplaySize(this->bufferDisplaySize); 147 } 148 149 97 150 98 151 /** … … 106 159 for (unsigned int i = 0; i < this->bufferDisplaySize; i++) 107 160 delete this->bufferText[i]; 108 delete this->bufferText;161 delete[] this->bufferText; 109 162 } 110 163 … … 112 165 for (unsigned int i = 0; i < bufferDisplaySize; i++) 113 166 { 114 this->bufferText[i] = TextEngine::getInstance()->createText("fonts/ earth.ttf", this->textSize, TEXT_DYNAMIC, 255, 0, 0);167 this->bufferText[i] = TextEngine::getInstance()->createText("fonts/Aniron_Bold.ttf", this->textSize, TEXT_DYNAMIC, 255, 0, 0); 115 168 this->bufferText[i]->setAlignment(TEXT_ALIGN_LEFT); 116 this->bufferText[i]->setRelCoor2D(5, 12+12*i);169 this->bufferText[i]->setRelCoor2D(5, (this->textSize + this->lineSpacing)*(bufferDisplaySize - i -1)); 117 170 this->bufferText[i]->setText(NULL); 118 171 this->bufferText[i]->setParent2D(this); 119 172 } 120 121 122 173 this->bufferDisplaySize = bufferDisplaySize; 174 175 this->shellHeight = (this->textSize + this->lineSpacing) * (bufferDisplaySize+1); 123 176 } 124 177 … … 153 206 * @param line the Line as in the first argument in printf 154 207 * @param args the arguments as a va_list 155 *156 * @todo optimize157 208 */ 158 209 bool Shell::addBufferLineStatic(const char* line, ...) … … 174 225 return true; 175 226 } 176 int curr = 0;177 227 178 228 /** … … 199 249 } 200 250 201 if ( likely(bufferText != NULL))251 if (this->bActive && likely(bufferText != NULL)) 202 252 { 203 Text* moveText = this->bufferText[this->bufferDisplaySize-1]; 204 for (int i = this->bufferDisplaySize-1; i > 0; i--) 253 Text* lastText = this->bufferText[this->bufferDisplaySize-1]; 254 Vector firstCoord = this->bufferText[0]->getRelCoorSoft2D(); 255 256 Text* swapText; 257 Text* moveText = this->bufferText[0]; 258 this->bufferText[0]->setRelCoorSoft2D(this->bufferText[1]->getRelCoorSoft2D(), 5); 259 for (unsigned int i = 1; i < this->bufferDisplaySize; i++) 205 260 { 206 this->bufferText[i] = this->bufferText[i-1]; 261 if ( i < this->bufferDisplaySize-1) 262 this->bufferText[i]->setRelCoorSoft2D(this->bufferText[i+1]->getRelCoorSoft2D(),5); 263 swapText = this->bufferText[i]; 264 this->bufferText[i] = moveText; 265 moveText = swapText; 207 266 } 208 this->bufferText[0] = moveText; 267 lastText->setRelCoor2D(firstCoord); 268 this->bufferText[0] = lastText; 269 270 this->bufferText[0]->setText(newLine); 209 271 } 210 this->bufferText[0]->setText(newLine);211 // this->bufferText->212 // this->inputLineText->setText(newLine);213 272 } 214 273 … … 246 305 } 247 306 248 249 307 /** 250 308 * deletes the InputLine … … 258 316 this->inputLine = new char[1]; 259 317 *this->inputLine = '\0'; 260 261 318 } 262 319 … … 316 373 bool Shell::executeCommand() 317 374 { 318 319 375 this->addBufferLineStatic("Execute Command: %s\n", this->inputLine); 320 376 delete this->inputLine; … … 337 393 } 338 394 339 340 #include "key_names.h"341 395 /** 342 396 * listens for some event … … 352 406 if (EventHandler::getInstance()->getState() == ES_GAME) 353 407 { 354 EventHandler::getInstance()->setState(ES_SHELL); 355 this->setRelCoorSoft2D(0, GraphicsEngine::getInstance()->getResolutionY()-150, 1, 5); 408 this->activate(); 356 409 } 357 410 358 411 else 359 412 { 360 EventHandler::getInstance()->setState(ES_GAME); 361 this->setRelCoorSoft2D(0, GraphicsEngine::getInstance()->getResolutionY()+10, 1, 5); 413 this->deactivate(); 362 414 } 363 415 } … … 382 434 { 383 435 if (this->pressedKey == event.type) 436 { 384 437 this->pressedKey = SDLK_FIRST; 385 this->delayed = 0.0; 438 this->delayed = 0.0; 439 } 386 440 } 387 441 } … … 426 480 427 481 // glTexCoord2f(this->texCoord.maxU, this->texCoord.minV); 428 glVertex2f( this->getAbsCoor2D().x + 800, this->getAbsCoor2D().y );482 glVertex2f(GraphicsEngine::getInstance()->getResolutionX() - this->getAbsCoor2D().x, this->getAbsCoor2D().y ); 429 483 430 484 // glTexCoord2f(this->texCoord.maxU, this->texCoord.maxV); 431 glVertex2f( this->getAbsCoor2D().x + 800, this->getAbsCoor2D().y + 150);485 glVertex2f(GraphicsEngine::getInstance()->getResolutionX() - this->getAbsCoor2D().x, this->getAbsCoor2D().y + this->shellHeight); 432 486 433 487 // glTexCoord2f(this->texCoord.minU, this->texCoord.maxV); 434 glVertex2f(this->getAbsCoor2D().x, this->getAbsCoor2D().y + 150);488 glVertex2f(this->getAbsCoor2D().x, this->getAbsCoor2D().y + this->shellHeight); 435 489 436 490 glEnd(); … … 451 505 strcpy(completionLine, this->inputLine); 452 506 453 507 char* commandBegin = strrchr(completionLine, ' '); 454 508 if (commandBegin == NULL) 455 509 commandBegin = completionLine; … … 462 516 } 463 517 464 printf("%s\n",commandBegin); 465 Array<char*>* classArray = LoadClassDescription::searchClassWithShort(commandBegin); 466 if (classArray->getCount() == 0) 467 { 468 delete[] completionLine; 469 delete classArray; 470 //PRINTF(0)("no completion found for %s\n", commandBegin); 471 return false; 472 } 473 474 for (unsigned int i = 0; i < classArray->getCount(); i++) 475 { 476 PRINTF(0)("%s\n", classArray->getEntry(i)); 477 } 478 if (classArray->getCount() == 1) 479 { 480 this->removeCharacters(strlen(commandBegin)); 481 this->addCharacters(classArray->getEntry(0)); 482 this->addCharacter(' '); 483 } 484 485 delete[] completionLine; 486 delete classArray; 518 char* objectStart; 519 if (objectStart = strstr(commandBegin, "::")) 520 { 521 char* classIdentity = new char[objectStart - commandBegin +1]; 522 strncpy(classIdentity, commandBegin, objectStart - commandBegin); 523 classIdentity[objectStart - commandBegin] = '\0'; 524 this->objectComplete(objectStart+2, ClassList::StringToID(classIdentity)); 525 delete[] classIdentity; 526 } 527 else 528 this->classComplete(commandBegin); 529 530 delete[] completionLine; 531 } 532 533 /** 534 * autocompletes a className 535 * @param classBegin the Beginning of a String to autoComplete 536 * @return true on success, false otherwise 537 */ 538 bool Shell::classComplete(const char* classBegin) 539 { 540 if (unlikely(classBegin == NULL)) 541 return false; 542 const tList<const char>* clList = ClassList::getClassList(); 543 if (clList != NULL) 544 { 545 const tList<const char>* classList = this->createCompleteList(clList, classBegin); 546 if (classList != NULL) 547 this->generalComplete(classList, classBegin, "%s::", "::"); 548 else 549 return false; 550 } 551 else 552 return false; 553 return true; 554 } 555 556 /** 557 * autocompletes an ObjectName 558 * @param objectBegin the beginning string of a Object 559 * @param classID the ID of the Class to search for. 560 * @return true on success, false otherwise 561 */ 562 bool Shell::objectComplete(const char* objectBegin, long classID) 563 { 564 printf("%s\n", objectBegin); 565 566 if (unlikely(objectBegin == NULL)) 567 return false; 568 tList<BaseObject>* boList = ClassList::getList(classID); 569 if (boList != NULL) 570 { 571 printf("\n", boList->firstElement()->getName()); 572 const tList<const char>* objectList = this->createCompleteList(boList, objectBegin); 573 if (objectList != NULL) 574 this->generalComplete(objectList, objectBegin, "%s"); 575 else 576 return false; 577 } 578 else 579 return false; 580 return true; 581 } 582 583 bool Shell::functionComplete(const char* functionBegin) 584 { 585 } 586 587 /** 588 * completes the inputline on grounds of an inputList 589 * @param stringList the List to parse through 590 * @param begin the String to search in the inputList, and to extend with it. 591 * @param displayAs how to display the found value to the user, printf-style, !!with only one %s!! ex.: "::%s::" 592 * @param addBack what should be added at the end of the completion 593 * @param addFront what should be added to the front of one finished completion 594 * @return true if ok, false otherwise 595 */ 596 bool Shell::generalComplete(const tList<const char>* stringList, const char* begin, const char* displayAs, const char* addBack, const char* addFront) 597 { 598 if (stringList->getSize() == 0) 599 return false; 600 601 const char* addString = stringList->firstElement(); 602 unsigned int addLength = 0; 603 unsigned int inputLenght = strlen(begin); 604 605 if (addString != NULL) 606 addLength = strlen(addString); 607 tIterator<const char>* charIterator = stringList->getIterator(); 608 const char* charElem = charIterator->nextElement(); 609 while (charElem != NULL) 610 { 611 PRINTF(0)(displayAs, charElem); 612 for (unsigned int i = inputLenght; i < addLength; i++) 613 if (addString[i] != charElem[i]) 614 { 615 addLength = i; 616 break; 617 } 618 charElem = charIterator->nextElement(); 619 } 620 delete charIterator; 621 622 if (addLength >= inputLenght) 623 { 624 char* adder = new char[addLength+1]; 625 strncpy(adder, addString, addLength); 626 adder[addLength] = '\0'; 627 this->removeCharacters(inputLenght); 628 this->addCharacters(adder); 629 if (addBack != NULL && stringList->getSize() == 1) 630 this->addCharacters("::"); 631 delete[] adder; 632 } 633 return true; 634 } 635 636 637 638 /** 639 * searches for classes, which beginn with classNameBegin 640 * @param inputList the List to parse through 641 * @param classNameBegin the beginning string 642 * @return a NEW char-array with ClassNames. The LIST should be deleted afterwards, 643 * !! The strings MUST NOT be deleted !! 644 */ 645 const tList<const char>* Shell::createCompleteList(const tList<const char>* inputList, const char* classNameBegin) 646 { 647 if (inputList == NULL || classNameBegin == NULL) 648 return NULL; 649 unsigned int searchLength = strlen(classNameBegin); 650 if (this->completionList != NULL) 651 delete this->completionList; 652 this->completionList = new tList<const char>; 653 654 // tList<const char>* classList = ClassList::getClassList(); 655 656 tIterator<const char>* iterator = inputList->getIterator(); 657 const char* enumString = iterator->nextElement(); 658 while (enumString != NULL) 659 { 660 if (strlen(enumString)>searchLength+1 && 661 !strncasecmp(enumString, classNameBegin, searchLength)) 662 { 663 this->completionList->add(enumString); 664 } 665 enumString = iterator->nextElement(); 666 } 667 delete iterator; 668 669 return this->completionList; 670 } 671 672 /** 673 * searches for classes, which beginn with classNameBegin 674 * @param inputList the List to parse through 675 * @param classNameBegin the beginning string 676 * @return a NEW char-array with ClassNames. The LIST should be deleted afterwards, 677 * !! The strings MUST NOT be deleted !! 678 */ 679 const tList<const char>* Shell::createCompleteList(const tList<BaseObject>* inputList, const char* classNameBegin) 680 { 681 if (inputList == NULL || classNameBegin == NULL) 682 return NULL; 683 unsigned int searchLength = strlen(classNameBegin); 684 if (this->completionList != NULL) 685 delete this->completionList; 686 this->completionList = new tList<const char>; 687 688 tIterator<BaseObject>* iterator = inputList->getIterator(); 689 BaseObject* enumBO = iterator->nextElement(); 690 while (enumBO != NULL) 691 { 692 if (enumBO->getName() != NULL && 693 strlen(enumBO->getName())>searchLength+1 && 694 !strncasecmp(enumBO->getName(), classNameBegin, searchLength)) 695 { 696 this->completionList->add(enumBO->getName()); 697 } 698 enumBO = iterator->nextElement(); 699 } 700 delete iterator; 701 702 return this->completionList; 487 703 } 488 704 … … 494 710 if (this->pressedKey != SDLK_FIRST) 495 711 printf("%s::%f %f\n", SDLKToKeyname(this->pressedKey), this->delayed, this->repeatDelay); 496 497 } 712 } -
trunk/src/util/shell.h
r5111 r5113 36 36 37 37 38 void setBufferSize(unsigned int bufferSize) { this->bufferSize = bufferSize; }; 38 void activate(); 39 void deactivate(); 39 40 40 void setBufferDisplaySize(unsigned int bufferDisplaySize); 41 void setTextSize(unsigned int textSize, unsigned int lineSpacing = 1); 42 void rebuildText(); 41 43 42 44 // BUFFER // 45 void setBufferSize(unsigned int bufferSize) { this->bufferSize = bufferSize; }; 46 void setBufferDisplaySize(unsigned int bufferDisplaySize); 43 47 void flushBuffers(); 44 48 static bool addBufferLineStatic(const char* line, ...); … … 67 71 private: 68 72 bool autoComplete(); 73 bool classComplete(const char* classBegin); 74 bool objectComplete(const char* objectBegin, long classID); 75 bool functionComplete(const char* functionBegin); 76 77 bool generalComplete(const tList<const char>* stringList, const char* begin, const char* displayAs = "%s", const char* addBack = NULL, const char* addFront = NULL); 78 79 const tList<const char>* Shell::createCompleteList(const tList<const char>* inputList, const char* classNameBegin); 80 const tList<const char>* Shell::createCompleteList(const tList<BaseObject>* inputList, const char* classNameBegin); 69 81 70 82 … … 88 100 unsigned int textSize; //!< The size of the text. 89 101 unsigned int lineSpacing; //!< The Spacing between lines. 102 unsigned int shellHeight; //!< The hight of the Shell in Pixels 103 bool bActive; //!< if the shell is active; 90 104 91 105 char bufferArray[10000]; //!< a BUFFER for fast writing 106 107 // completion 108 tList<const char>* completionList; //!< A list of completions, that are io. 92 109 }; 93 110
Note: See TracChangeset
for help on using the changeset viewer.