Loading

Paste #phjib9464

  1. Index: src/ai/ai_scanner.cpp
  2. ===================================================================
  3. --- src/ai/ai_scanner.cpp   (revision 27582)
  4. +++ src/ai/ai_scanner.cpp   (working copy)
  5. @@ -136,6 +136,31 @@
  6.         }
  7.     }
  8.  
  9. +   if (info == NULL && !force_exact_match && versionParam != -1) {
  10. +       /* If we didn't find a match AI, maybe the user included a version */
  11. +       char *e = strrchr(ai_name, '.');
  12. +       if (e == NULL) return NULL;
  13. +       *e = '\0';
  14. +       e++;
  15. +       versionParam = atoi(e);
  16. +       /* Try to find a direct 'name.version' match */
  17. +       char ai_name_tmp[1024];
  18. +       seprintf(ai_name_tmp, lastof(ai_name_tmp), "%s.%d", ai_name, versionParam);
  19. +       strtolower(ai_name_tmp);
  20. +       if (this->info_list.find(ai_name_tmp) != this->info_list.end()) return static_cast<AIInfo *>(this->info_list[ai_name_tmp]);
  21. +
  22. +       /* See if there is a compatible AI which goes by that name, with the highest
  23. +       *  version which allows loading the requested version */
  24. +       ScriptInfoList::iterator it = this->info_list.begin();
  25. +       for (; it != this->info_list.end(); it++) {
  26. +           AIInfo *i = static_cast<AIInfo *>((*it).second);
  27. +           if (strcasecmp(ai_name, i->GetName()) == 0 && i->CanLoadFromVersion(versionParam) && (version == -1 || i->GetVersion() > version)) {
  28. +               version = (*it).second->GetVersion();
  29. +               info = i;
  30. +           }
  31. +       }
  32. +   }
  33. +
  34.     return info;
  35.  }
  36.  
  37. Index: src/game/game_scanner.cpp
  38. ===================================================================
  39. --- src/game/game_scanner.cpp   (revision 27582)
  40. +++ src/game/game_scanner.cpp   (working copy)
  41. @@ -77,6 +77,31 @@
  42.         }
  43.     }
  44.  
  45. +   if (info == NULL && !force_exact_match && versionParam != -1) {
  46. +       /* If we didn't find a match Game script, maybe the user included a version */
  47. +       char *e = strrchr(game_name, '.');
  48. +       if (e == NULL) return NULL;
  49. +       *e = '\0';
  50. +       e++;
  51. +       versionParam = atoi(e);
  52. +       /* Try to find a direct 'name.version' match */
  53. +       char game_name_tmp[1024];
  54. +       seprintf(game_name_tmp, lastof(game_name_tmp), "%s.%d", game_name, versionParam);
  55. +       strtolower(game_name_tmp);
  56. +       if (this->info_list.find(game_name_tmp) != this->info_list.end()) return static_cast<GameInfo *>(this->info_list[game_name_tmp]);
  57. +
  58. +       /* See if there is a compatible Game script which goes by that name, with the highest
  59. +       *  version which allows loading the requested version */
  60. +       ScriptInfoList::iterator it = this->info_list.begin();
  61. +       for (; it != this->info_list.end(); it++) {
  62. +           GameInfo *i = static_cast<GameInfo *>((*it).second);
  63. +           if (strcasecmp(game_name, i->GetName()) == 0 && i->CanLoadFromVersion(versionParam) && (version == -1 || i->GetVersion() > version)) {
  64. +               version = (*it).second->GetVersion();
  65. +               info = i;
  66. +           }
  67. +       }
  68. +   }
  69. +
  70.     return info;
  71.  }

Version history

Revision # Author Created at
pxkc1qh0d Anonymous 26 May 2016, 22:08:40 UTC Diff
pyjs64de7 Anonymous 26 May 2016, 20:12:57 UTC Diff
pqbqzlwvt Anonymous 26 May 2016, 17:14:28 UTC Diff
puz8c3l3n Anonymous 26 May 2016, 17:07:52 UTC Diff

Comments