diff --git a/AMBuildScript b/AMBuildScript index e285540..5ec06eb 100644 --- a/AMBuildScript +++ b/AMBuildScript @@ -48,11 +48,12 @@ PossibleSDKs = { 'swarm': SDK('HL2SDK-SWARM', '2.swarm', '16', 'ALIENSWARM', WinOnly, 'swarm'), 'bgt': SDK('HL2SDK-BGT', '2.bgt', '4', 'BLOODYGOODTIME', WinOnly, 'bgt'), 'eye': SDK('HL2SDK-EYE', '2.eye', '5', 'EYE', WinOnly, 'eye'), - 'csgo': SDK('HL2SDKCSGO', '2.csgo', '20', 'CSGO', WinLinuxMac, 'csgo'), - 'dota': SDK('HL2SDKDOTA', '2.dota', '21', 'DOTA', Source2, 'dota'), + 'csgo': SDK('HL2SDKCSGO', '2.csgo', '21', 'CSGO', WinLinuxMac, 'csgo'), + 'dota': SDK('HL2SDKDOTA', '2.dota', '22', 'DOTA', Source2, 'dota'), 'portal2': SDK('HL2SDKPORTAL2', '2.portal2', '17', 'PORTAL2', [], 'portal2'), 'blade': SDK('HL2SDKBLADE', '2.blade', '18', 'BLADE', WinLinux, 'blade'), 'insurgency': SDK('HL2SDKINSURGENCY', '2.insurgency', '19', 'INSURGENCY', WinLinuxMac, 'insurgency'), + 'doi': SDK('HL2SDKDOI', '2.doi', '20', 'DOI', WinLinuxMac, 'doi'), 'contagion': SDK('HL2SDKCONTAGION', '2.contagion', '14', 'CONTAGION', WinOnly, 'contagion'), 'bms': SDK('HL2SDKBMS', '2.bms', '10', 'BMS', WinLinux, 'bms'), } @@ -400,7 +401,7 @@ class MMSConfig(object): else: compiler.postlink += [compiler.Dep(os.path.join(lib_folder, 'tier1_i486.a'))] - if sdk.name in ['blade', 'insurgency', 'csgo', 'dota']: + if sdk.name in ['blade', 'insurgency', 'doi', 'csgo', 'dota']: compiler.postlink += [compiler.Dep(os.path.join(lib_folder, 'interfaces_i486.a'))] binary = self.LibraryBuilder(compiler, name) @@ -408,9 +409,9 @@ class MMSConfig(object): dynamic_libs = [] if builder.target.platform == 'linux': compiler.linkflags[0:0] = ['-lm'] - if sdk.name in ['css', 'hl2dm', 'dods', 'tf2', 'sdk2013', 'bms', 'nucleardawn', 'l4d2', 'insurgency']: + if sdk.name in ['css', 'hl2dm', 'dods', 'tf2', 'sdk2013', 'bms', 'nucleardawn', 'l4d2', 'insurgency', 'doi']: dynamic_libs = ['libtier0_srv.so', 'libvstdlib_srv.so'] - elif sdk.name in ['l4d', 'blade', 'insurgency', 'csgo', 'dota']: + elif sdk.name in ['l4d', 'blade', 'insurgency', 'doi', 'csgo', 'dota']: dynamic_libs = ['libtier0.so', 'libvstdlib.so'] else: dynamic_libs = ['tier0_i486.so', 'vstdlib_i486.so'] @@ -419,7 +420,7 @@ class MMSConfig(object): dynamic_libs = ['libtier0.dylib', 'libvstdlib.dylib'] elif builder.target.platform == 'windows': libs = ['tier0', 'tier1', 'vstdlib'] - if sdk.name in ['swarm', 'blade', 'insurgency', 'csgo', 'dota']: + if sdk.name in ['swarm', 'blade', 'insurgency', 'doi', 'csgo', 'dota']: libs.append('interfaces') for lib in libs: if builder.target.arch == 'x86': diff --git a/core/ISmmPluginExt.h b/core/ISmmPluginExt.h index 6284b00..9cb4b8c 100644 --- a/core/ISmmPluginExt.h +++ b/core/ISmmPluginExt.h @@ -59,6 +59,7 @@ #define SOURCE_ENGINE_INSURGENCY 21 /**< Insurgency */ #define SOURCE_ENGINE_CONTAGION 22 /**< Contagion */ #define SOURCE_ENGINE_BMS 23 /**< Black Mesa Multiplayer */ +#define SOURCE_ENGINE_DOI 24 /**< Day of Infamy */ #define METAMOD_PLAPI_VERSION 16 /**< Version of this header file */ #define METAMOD_PLAPI_NAME "ISmmPlugin" /**< Name of the plugin interface */ diff --git a/core/provider/provider_ep2.cpp b/core/provider/provider_ep2.cpp index 54b447c..445f503 100644 --- a/core/provider/provider_ep2.cpp +++ b/core/provider/provider_ep2.cpp @@ -530,6 +530,8 @@ int BaseProvider::DetermineSourceEngine() return SOURCE_ENGINE_BLADE; #elif SOURCE_ENGINE == SE_INSURGENCY return SOURCE_ENGINE_INSURGENCY; +#elif SOURCE_ENGINE == SE_DOI + return SOURCE_ENGINE_DOI; #elif SOURCE_ENGINE == SE_CSGO return SOURCE_ENGINE_CSGO; #elif SOURCE_ENGINE == SE_DOTA @@ -654,6 +656,8 @@ const char *BaseProvider::GetEngineDescription() const return "Blade Symphony (2013)"; #elif SOURCE_ENGINE == SE_INSURGENCY return "Insurgency (2013)"; +#elif SOURCE_ENGINE == SE_DOI + return "Day of Infamy (2016)"; #elif SOURCE_ENGINE == SE_CSGO return "Counter-Strike: Global Offensive (2012)"; #elif SOURCE_ENGINE == SE_DOTA diff --git a/loader/loader.cpp b/loader/loader.cpp index f16b733..e03d3d4 100644 --- a/loader/loader.cpp +++ b/loader/loader.cpp @@ -90,6 +90,7 @@ static const char *backend_names[] = "2.insurgency", "2.contagion", "2.bms", + "2.doi", }; #if defined _WIN32 @@ -307,6 +308,14 @@ mm_DetermineBackend(QueryValveInterface engineFactory, QueryValveInterface serve if (engineFactory("IEngineSoundServer004", NULL) != NULL) { + void *lib = (void *)serverFactory; + void *addr; + if (strcmp(game_name, "doi") == 0 + || (addr = mm_FindPattern(lib, "doi_gamerules_data", sizeof("doi_gamerules_data") - 1))) + { + return MMBackend_DOI; + } + return MMBackend_Insurgency; } diff --git a/loader/loader.h b/loader/loader.h index 9134217..ca2e01d 100644 --- a/loader/loader.h +++ b/loader/loader.h @@ -102,6 +102,7 @@ enum MetamodBackend MMBackend_Insurgency, MMBackend_Contagion, MMBackend_BMS, + MMBackend_DOI, MMBackend_UNKNOWN }; diff --git a/loader/serverplugin.cpp b/loader/serverplugin.cpp index 2db2435..9daff26 100644 --- a/loader/serverplugin.cpp +++ b/loader/serverplugin.cpp @@ -135,6 +135,7 @@ public: && mm_backend != MMBackend_Portal2 && mm_backend != MMBackend_Blade && mm_backend != MMBackend_Insurgency + && mm_backend != MMBackend_DOI && mm_backend != MMBackend_CSGO && mm_backend != MMBackend_DOTA) {