summaryrefslogtreecommitdiff
path: root/gameui/RunGameEngine.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gameui/RunGameEngine.cpp')
-rw-r--r--gameui/RunGameEngine.cpp205
1 files changed, 205 insertions, 0 deletions
diff --git a/gameui/RunGameEngine.cpp b/gameui/RunGameEngine.cpp
new file mode 100644
index 0000000..b0ecd0f
--- /dev/null
+++ b/gameui/RunGameEngine.cpp
@@ -0,0 +1,205 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//===========================================================================//
+
+
+#include "IRunGameEngine.h"
+#include "EngineInterface.h"
+#include "tier1/strtools.h"
+#include "IGameUIFuncs.h"
+#include "tier1/convar.h"
+
+// memdbgon must be the last include file in a .cpp file!!!
+#include "tier0/memdbgon.h"
+
+
+//-----------------------------------------------------------------------------
+// Purpose: Interface to running the engine from the UI dlls
+//-----------------------------------------------------------------------------
+class CRunGameEngine : public IRunGameEngine
+{
+public:
+ // Returns true if the engine is running, false otherwise.
+ virtual bool IsRunning()
+ {
+ return true;
+ }
+
+ // Adds text to the engine command buffer. Only works if IsRunning()
+ // returns true on success, false on failure
+ virtual bool AddTextCommand(const char *text)
+ {
+ engine->ClientCmd_Unrestricted((char *)text);
+ return true;
+ }
+
+ // runs the engine with the specified command line parameters. Only works if !IsRunning()
+ // returns true on success, false on failure
+ virtual bool RunEngine(const char *gameName, const char *commandLineParams)
+ {
+ return false;
+ }
+
+ virtual bool RunEngine2(const char *gameDir, const char *commandLineParams, bool isSourceGame)
+ {
+ return false;
+ }
+
+ virtual ERunResult RunEngine( int iAppID, const char *gameDir, const char *commandLineParams )
+ {
+ return k_ERunResultOkay;
+ }
+
+ // returns true if the player is currently connected to a game server
+ virtual bool IsInGame()
+ {
+ return engine->GetLevelName() && strlen(engine->GetLevelName()) > 0;
+ }
+
+ // gets information about the server the engine is currently connected to
+ // returns true on success, false on failure
+ virtual bool GetGameInfo(char *infoBuffer, int bufferSize)
+ {
+ //!! need to implement
+ return false;
+ }
+
+ virtual void SetTrackerUserID(int trackerID, const char *trackerName)
+ {
+ gameuifuncs->SetFriendsID(trackerID, trackerName);
+
+ // update the player's name if necessary
+ ConVarRef name( "name" );
+ if ( name.IsValid() && trackerName && *trackerName && !Q_strcmp( name.GetString(), "unnamed" ) )
+ {
+ name.SetValue(trackerName);
+ }
+ }
+
+ // iterates users
+ // returns the number of user
+ virtual int GetPlayerCount()
+ {
+ return engine->GetMaxClients();
+ }
+
+ // returns a playerID for a player
+ // playerIndex is in the range [0, GetPlayerCount)
+ virtual unsigned int GetPlayerFriendsID(int playerIndex)
+ {
+ player_info_t pi;
+
+ if ( engine->GetPlayerInfo(playerIndex, &pi ) )
+ return pi.friendsID;
+
+ return 0;
+ }
+
+ // gets the in-game name of another user, returns NULL if that user doesn't exists
+ virtual const char *GetPlayerName(int trackerID, char *name, int namelen)
+ {
+ // find the player by their friendsID
+ player_info_t pi;
+ for (int i = 0; i < engine->GetMaxClients(); i++)
+ {
+ if (engine->GetPlayerInfo(i, &pi ))
+ {
+ if (pi.friendsID == (uint)trackerID)
+ {
+ Q_strncpy( name, pi.name, namelen );
+ return name;
+ }
+ }
+ }
+
+ return NULL;
+ }
+
+ virtual const char *GetPlayerFriendsName(int trackerID, char *name, int namelen)
+ {
+ // find the player by their friendsID
+ player_info_t pi;
+ for (int i = 0; i < engine->GetMaxClients(); i++)
+ {
+ if (engine->GetPlayerInfo(i, &pi ))
+ {
+ if (pi.friendsID == (uint)trackerID)
+ {
+ Q_strncpy( name, pi.friendsName, namelen );
+ return name;
+ }
+ }
+ }
+
+ return NULL;
+ }
+
+ // return the build number of the engine
+ virtual unsigned int GetEngineBuildNumber()
+ {
+ return engine->GetEngineBuildNumber();
+ }
+
+ // return the product version of the mod being played (comes from steam.inf)
+ virtual const char *GetProductVersionString()
+ {
+ return engine->GetProductVersionString();
+ }
+};
+
+EXPOSE_SINGLE_INTERFACE(CRunGameEngine, IRunGameEngine, RUNGAMEENGINE_INTERFACE_VERSION);
+
+//namespace
+//{
+////-----------------------------------------------------------------------------
+//// Purpose: Interface to running the game engine
+////-----------------------------------------------------------------------------
+//abstract_class IRunGameEngine_Old : public IBaseInterface
+//{
+//public:
+// // Returns true if the engine is running, false otherwise.
+// virtual bool IsRunning() = 0;
+//
+// // Adds text to the engine command buffer. Only works if IsRunning()
+// // returns true on success, false on failure
+// virtual bool AddTextCommand(const char *text) = 0;
+//
+// // runs the engine with the specified command line parameters. Only works if !IsRunning()
+// // returns true on success, false on failure
+// virtual bool RunEngine(const char *gameDir, const char *commandLineParams) = 0;
+//
+// // returns true if the player is currently connected to a game server
+// virtual bool IsInGame() = 0;
+//
+// // gets information about the server the engine is currently ctrue on success, false on failure
+// virtual bool GetGameInfo(char *infoBuffer, int bufferSize) = 0;
+//
+// // tells the engine our userID
+// virtual void SetTrackerUserID(int trackerID, const char *trackerName) = 0;
+//
+// // this next section could probably moved to another interface
+// // iterates users
+// // returns the number of user
+// virtual int GetPlayerCount() = 0;
+//
+// // returns a playerID for a player
+// // playerIndex is in the range [0, GetPlayerCount)
+// virtual unsigned int GetPlayerFriendsID(int playerIndex) = 0;
+//
+// // gets the in-game name of another user, returns NULL if that user doesn't exists
+// virtual const char *GetPlayerName(int friendsID) = 0;
+//
+// // gets the friends name of a player
+// virtual const char *GetPlayerFriendsName(int friendsID) = 0;
+//};
+//
+//#define RUNGAMEENGINE_INTERFACE_VERSION_OLD "RunGameEngine004"
+//
+//#ifndef _XBOX
+//EXPOSE_SINGLE_INTERFACE(CRunGameEngine, IRunGameEngine_Old, RUNGAMEENGINE_INTERFACE_VERSION_OLD);
+//#endif
+//}
+