Improve automatic engine detection for some games (nobug, irc r=asherkin).

--HG--
extra : rebase_source : a80a7c0a00956617e58ce5ba196d37fb474061f2
This commit is contained in:
Nicholas Hastings 2014-01-07 17:39:55 -05:00
parent 6992f85f87
commit 013c549090
4 changed files with 12 additions and 9 deletions

View File

@ -213,7 +213,7 @@ public:
QueryValveInterface fileSystemFactory, QueryValveInterface fileSystemFactory,
void *pGlobals) void *pGlobals)
{ {
mm_backend = mm_DetermineBackend(engineFactory, game_name); mm_backend = mm_DetermineBackend(engineFactory, gamedll_qvi, game_name);
char error[255]; char error[255];
if (mm_backend == MMBackend_UNKNOWN) if (mm_backend == MMBackend_UNKNOWN)

View File

@ -270,7 +270,7 @@ mm_GetGameName(char *buffer, size_t size)
} }
MetamodBackend MetamodBackend
mm_DetermineBackend(QueryValveInterface engineFactory, const char *game_name) mm_DetermineBackend(QueryValveInterface engineFactory, QueryValveInterface serverFactory, const char *game_name)
{ {
if (engineFactory("VEngineServer024", NULL) != NULL) if (engineFactory("VEngineServer024", NULL) != NULL)
{ {
@ -287,14 +287,16 @@ mm_DetermineBackend(QueryValveInterface engineFactory, const char *game_name)
else if (engineFactory("VEngineServer022", NULL) != NULL && else if (engineFactory("VEngineServer022", NULL) != NULL &&
engineFactory("VEngineCvar007", NULL) != NULL) engineFactory("VEngineCvar007", NULL) != NULL)
{ {
if (strcmp(game_name, "berimbau") == 0) if (serverFactory("ServerGameClients004", NULL))
{ {
if (strcmp(game_name, "portal2") == 0)
{
return MMBackend_Portal2;
}
return MMBackend_Blade; return MMBackend_Blade;
} }
if (strcmp(game_name, "portal2") == 0)
{
return MMBackend_Portal2;
}
if (engineFactory("EngineTraceServer004", NULL) != NULL) if (engineFactory("EngineTraceServer004", NULL) != NULL)
{ {
return MMBackend_AlienSwarm; return MMBackend_AlienSwarm;
@ -310,6 +312,7 @@ mm_DetermineBackend(QueryValveInterface engineFactory, const char *game_name)
return MMBackend_Left4Dead2; return MMBackend_Left4Dead2;
} }
} }
return MMBackend_Left4Dead; return MMBackend_Left4Dead;
} }
else if (engineFactory("VEngineServer021", NULL) != NULL) else if (engineFactory("VEngineServer021", NULL) != NULL)

View File

@ -120,7 +120,7 @@ extern void
mm_GetGameName(char *buffer, size_t size); mm_GetGameName(char *buffer, size_t size);
extern MetamodBackend extern MetamodBackend
mm_DetermineBackend(QueryValveInterface qvi, const char *game_name); mm_DetermineBackend(QueryValveInterface engineFactory, QueryValveInterface serverFactory, const char *game_name);
extern MetamodBackend mm_backend; extern MetamodBackend mm_backend;

View File

@ -90,7 +90,7 @@ public:
{ {
mm_GetGameName(game_name, sizeof(game_name)); mm_GetGameName(game_name, sizeof(game_name));
mm_backend = mm_DetermineBackend(engineFactory, game_name); mm_backend = mm_DetermineBackend(engineFactory, gsFactory, game_name);
} }
if (mm_backend == MMBackend_UNKNOWN) if (mm_backend == MMBackend_UNKNOWN)