initial
This commit is contained in:
217
game/client/cstrike15/gameui/rungameengine.cpp
Normal file
217
game/client/cstrike15/gameui/rungameengine.cpp
Normal file
@ -0,0 +1,217 @@
|
||||
//===== Copyright <20> 1996-2005, 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)
|
||||
{
|
||||
// SERVERBROWSER HACK: -- it just stuffs commands into command buffer
|
||||
// which is pretty horrible because it doesn't let game code to react
|
||||
if ( text && StringHasPrefix( text, "connect " ) && g_pMatchFramework )
|
||||
{
|
||||
g_pMatchFramework->CloseSession();
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
#if 0// DDK: this code could very likely cause a crash
|
||||
Assert(false);
|
||||
// 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)
|
||||
{
|
||||
return pi.name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
return NULL;
|
||||
}
|
||||
|
||||
virtual const char *GetPlayerFriendsName(int trackerID)
|
||||
{
|
||||
#if 0// DDK: this code could very likely cause a crash
|
||||
|
||||
Assert(false);
|
||||
// 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)
|
||||
{
|
||||
return pi.friendsName;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
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
|
||||
//}
|
||||
|
Reference in New Issue
Block a user