From 630070ea00eb44ae2c0a10c63ec1e456e35285dc Mon Sep 17 00:00:00 2001 From: David Anderson Date: Wed, 10 Oct 2007 02:43:25 +0000 Subject: [PATCH] fixed a bug where engine version wasn't being passed right --HG-- extra : convert_revision : svn%3Ac2935e3e-5518-0410-8daf-afa5dab7d4e3/trunk%40495 --- sourcemm/episode1/provider_ep1.cpp | 12 ++++++++++++ sourcemm/episode1/provider_ep1.h | 1 + sourcemm/episode2/provider_ep2.cpp | 5 +++++ sourcemm/metamod.cpp | 2 +- sourcemm/metamod_provider.h | 8 ++++++++ 5 files changed, 27 insertions(+), 1 deletion(-) diff --git a/sourcemm/episode1/provider_ep1.cpp b/sourcemm/episode1/provider_ep1.cpp index 8647dd6..81a8825 100644 --- a/sourcemm/episode1/provider_ep1.cpp +++ b/sourcemm/episode1/provider_ep1.cpp @@ -309,6 +309,18 @@ const char *BaseProvider::GetGameDescription() return server->GetGameDescription(); } +int BaseProvider::DetermineSourceEngine(const char *game) +{ + if (strcmp(game, "ship") == 0) + { + return SOURCE_ENGINE_ORIGINAL; + } + else + { + return SOURCE_ENGINE_EPISODEONE; + } +} + ConVar *BaseProvider::CreateConVar(const char *name, const char *defval, const char *help, diff --git a/sourcemm/episode1/provider_ep1.h b/sourcemm/episode1/provider_ep1.h index 0a22f10..3400571 100644 --- a/sourcemm/episode1/provider_ep1.h +++ b/sourcemm/episode1/provider_ep1.h @@ -70,6 +70,7 @@ public: virtual int GetUserMessageCount(); virtual int FindUserMessage(const char *name, int *size=NULL); virtual const char *GetUserMessage(int index, int *size=NULL); + virtual int DetermineSourceEngine(const char *game); }; extern IVEngineServer *engine; diff --git a/sourcemm/episode2/provider_ep2.cpp b/sourcemm/episode2/provider_ep2.cpp index bdd2440..ce824c7 100644 --- a/sourcemm/episode2/provider_ep2.cpp +++ b/sourcemm/episode2/provider_ep2.cpp @@ -324,6 +324,11 @@ const char *BaseProvider::GetGameDescription() return server->GetGameDescription(); } +int BaseProvider::DetermineSourceEngine(const char *game) +{ + return SOURCE_ENGINE_ORANGEBOX; +} + ConVar *BaseProvider::CreateConVar(const char *name, const char *defval, const char *help, diff --git a/sourcemm/metamod.cpp b/sourcemm/metamod.cpp index 84e2909..9527c9f 100644 --- a/sourcemm/metamod.cpp +++ b/sourcemm/metamod.cpp @@ -239,7 +239,7 @@ SMM_API void *CreateInterface(const char *iface, int *ret) /* Get value of -game from command line, defaulting to hl2 as engine seems to do */ game_dir = provider->GetCommandLineValue("-game", "hl2"); - engine_build = SOURCE_ENGINE_ORANGEBOX; + engine_build = provider->DetermineSourceEngine(game_dir);; /* Get absolute path */ abspath(game_path, game_dir); diff --git a/sourcemm/metamod_provider.h b/sourcemm/metamod_provider.h index f7f324e..94458d7 100644 --- a/sourcemm/metamod_provider.h +++ b/sourcemm/metamod_provider.h @@ -283,6 +283,14 @@ namespace SourceMM * @return Message name, or NULL on failure. */ virtual const char *GetUserMessage(int index, int *size=NULL) =0; + + /** + * @brief Returns the Source Engine build. + * + * @param game Game folder. + * @return SOURCE_ENGINE constant. + */ + virtual int DetermineSourceEngine(const char *game) =0; }; };