1.1 --- a/core/logic_bridge.cpp Fri May 14 21:16:35 2010 -0700
1.2 +++ b/core/logic_bridge.cpp Fri May 14 23:35:42 2010 -0700
1.3 @@ -55,8 +55,6 @@
1.4
1.5 IThreader *g_pThreader;
1.6 ITextParsers *textparsers;
1.7 -SM_FN_CRC32 UTIL_CRC32;
1.8 -IMemoryUtils *memutils;
1.9 sm_logic_t logicore;
1.10 ITranslator *translator;
1.11
1.12 @@ -109,6 +107,56 @@
1.13 return cvar->GetString();
1.14 }
1.15
1.16 +static bool get_game_name(char *buffer, size_t maxlength)
1.17 +{
1.18 + KeyValues *pGameInfo = new KeyValues("GameInfo");
1.19 + if (g_HL2.KVLoadFromFile(pGameInfo, basefilesystem, "gameinfo.txt"))
1.20 + {
1.21 + const char *str;
1.22 + if ((str = pGameInfo->GetString("game", NULL)) != NULL)
1.23 + {
1.24 + strncopy(buffer, str, maxlength);
1.25 + return true;
1.26 + }
1.27 + }
1.28 + pGameInfo->deleteThis();
1.29 + return false;
1.30 +}
1.31 +
1.32 +static const char *get_game_description()
1.33 +{
1.34 + return SERVER_CALL(GetGameDescription)();
1.35 +}
1.36 +
1.37 +static const char *get_source_engine_name()
1.38 +{
1.39 +#if !defined SOURCE_ENGINE
1.40 +# error "Unknown engine type"
1.41 +#endif
1.42 +#if SOURCE_ENGINE == SE_EPISODEONE
1.43 + return "original";
1.44 +#elif SOURCE_ENGINE == SE_DARKMESSIAH
1.45 + return "darkmessiah";
1.46 +#elif SOURCE_ENGINE == SE_ORANGEBOX
1.47 + return "orangebox";
1.48 +#elif SOURCE_ENGINE == SE_ORANGEBOXVALVE
1.49 + return "orangebox_valve";
1.50 +#elif SOURCE_ENGINE == SE_LEFT4DEAD
1.51 + return "left4dead";
1.52 +#elif SOURCE_ENGINE == SE_LEFT4DEAD2
1.53 + return "left4dead2";
1.54 +#endif
1.55 +}
1.56 +
1.57 +static bool symbols_are_hidden()
1.58 +{
1.59 +#if (SOURCE_ENGINE == SE_ORANGEBOXVALVE) || (SOURCE_ENGINE == SE_LEFT4DEAD2)
1.60 + return true;
1.61 +#else
1.62 + return false;
1.63 +#endif
1.64 +}
1.65 +
1.66 static ServerGlobals serverGlobals;
1.67
1.68 static sm_core_t core_bridge =
1.69 @@ -138,6 +186,10 @@
1.70 generate_error,
1.71 gnprintf,
1.72 atcprintf,
1.73 + get_game_name,
1.74 + get_game_description,
1.75 + get_source_engine_name,
1.76 + symbols_are_hidden,
1.77 &serverGlobals
1.78 };
1.79
1.80 @@ -148,6 +200,8 @@
1.81 serverGlobals.interval_per_tick = &gpGlobals->interval_per_tick;
1.82
1.83 core_bridge.core_ident = g_pCoreIdent;
1.84 + core_bridge.engineFactory = (void *)g_SMAPI->GetEngineFactory(false);
1.85 + core_bridge.serverFactory = (void *)g_SMAPI->GetServerFactory(false);
1.86 logic_init_fn(&core_bridge, &logicore);
1.87
1.88 /* Add SMGlobalClass instances */
1.89 @@ -161,8 +215,6 @@
1.90
1.91 g_pThreader = logicore.threader;
1.92 g_pSourcePawn2->SetProfiler(logicore.profiler);
1.93 - UTIL_CRC32 = logicore.CRC32;
1.94 - memutils = logicore.memutils;
1.95 translator = logicore.translator;
1.96 }
1.97