Changeset 4462 in orxonox.OLD for orxonox/trunk/src/util/resource_manager.cc
- Timestamp:
- Jun 2, 2005, 12:50:37 AM (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
orxonox/trunk/src/util/resource_manager.cc
r4381 r4462 21 21 #include "objModel.h" 22 22 #include "primitive_model.h" 23 #include "md2Model.h" 23 24 #include "texture.h" 24 25 #include "text_engine.h" … … 173 174 { 174 175 ResourceType tmpType; 176 175 177 if (!strncmp(fileName+(strlen(fileName)-4), ".obj", 4)) 176 178 tmpType = OBJ; 179 if (!strncmp(fileName+(strlen(fileName)-4), ".md2", 4)) 180 tmpType = MD2; 177 181 else if (!strncmp(fileName+(strlen(fileName)-4), ".wav", 4)) 178 182 tmpType = WAV; … … 226 230 227 231 // creating the full name. (directoryName + FileName) 228 char* fullName = new char[strlen(this->getDataDir())+strlen(fileName)+1]; 229 sprintf(fullName, "%s%s", this->getDataDir(), fileName); 232 char* fullName = ResourceManager::getFullName(fileName); 230 233 // Checking for the type of resource \see ResourceType 231 234 switch(type) … … 262 265 tmpResource->pointer = new PrimitiveModel(CONE, tmpResource->modelSize); 263 266 break; 267 case MD2: 268 if(ResourceManager::isFile(fullName)) 269 { 270 if (param1) 271 { 272 tmpResource->skinFileName = new char[strlen((const char*)param1)+1]; 273 strcpy(tmpResource->skinFileName, (const char*) fileName); 274 } 275 else 276 tmpResource->skinFileName = NULL; 277 char* skinFileName = ResourceManager::getFullName(tmpResource->skinFileName); 278 tmpResource->pointer = new MD2Data(fullName, skinFileName); 279 delete []skinFileName; 280 } 281 break; 264 282 case TTF: 265 283 if (param1) … … 373 391 delete (Model*)resource->pointer; 374 392 break; 393 case MD2: 394 delete (MD2Data*)resource->pointer; 395 break; 375 396 case IMAGE: 376 397 delete (Texture*)resource->pointer; … … 425 446 \returns a Pointer to the Resource if found, NULL otherwise. 426 447 */ 427 Resource* ResourceManager::locateResourceByInfo(const char* fileName, ResourceType type, void* param1, void* param2, void* param3) 448 Resource* ResourceManager::locateResourceByInfo(const char* fileName, ResourceType type, 449 void* param1, void* param2, void* param3) 428 450 { 429 451 // Resource* enumRes = resourceList->enumerate(); … … 436 458 bool match = false; 437 459 bool subMatch = false; 460 438 461 switch (type) 439 462 { … … 446 469 } 447 470 else if (enumRes->modelSize == *(float*)param1) 471 match = true; 472 break; 473 case MD2: 474 if (!param1) 475 { 476 if (enumRes->skinFileName == NULL) 477 match = true; 478 } 479 else if (!strcmp(enumRes->skinFileName, (const char*) param1)) 448 480 match = true; 449 481 break; … … 519 551 bool ResourceManager::isDir(const char* directoryName) 520 552 { 553 if (directoryName == NULL) 554 return false; 555 521 556 char* tmpDirName = NULL; 522 557 struct stat status; … … 563 598 bool ResourceManager::isFile(const char* fileName) 564 599 { 600 if (fileName == NULL) 601 return false; 565 602 char* tmpFileName = ResourceManager::homeDirCheck(fileName); 566 603 // actually checks the File … … 597 634 { 598 635 char* tmpName = ResourceManager::homeDirCheck(fileName); 599 636 if (tmpName == NULL) 637 return false; 600 638 FILE* stream; 601 639 if( (stream = fopen (tmpName, "w")) == NULL) … … 615 653 bool ResourceManager::deleteFile(const char* fileName) 616 654 { 655 if (fileName == NULL) 656 return false; 617 657 char* tmpName = ResourceManager::homeDirCheck(fileName); 618 658 unlink(tmpName); … … 627 667 char* ResourceManager::homeDirCheck(const char* name) 628 668 { 669 if (name == NULL) 670 return NULL; 629 671 char* retName; 630 672 if (!strncmp(name, "~/", 2)) … … 654 696 char* ResourceManager::getFullName(const char* fileName) 655 697 { 698 if (fileName == NULL) 699 return NULL; 700 656 701 char* retName = new char[strlen(ResourceManager::getInstance()->getDataDir()) 657 702 + strlen(fileName) + 1]; 658 703 sprintf(retName, "%s%s", ResourceManager::getInstance()->getDataDir(), fileName); 659 if (ResourceManager::isFile(retName) )704 if (ResourceManager::isFile(retName) || ResourceManager::isDir(retName)) 660 705 return retName; 661 706 else
Note: See TracChangeset
for help on using the changeset viewer.