Files
FC1/CryGame/XServerRules.h
romkazvo 34d6c5d489 123
2023-08-07 19:29:24 +08:00

118 lines
3.5 KiB
C++

//////////////////////////////////////////////////////////////////////
//
// Game Source Code
//
// File: XServerRules.h
// Description: Server rules class.
//
// History:
// - August 9, 2001: Created by Alberto Demichelis
//
//////////////////////////////////////////////////////////////////////
#ifndef GAME_XSERVERRULES_H
#define GAME_XSERVERRULES_H
#if _MSC_VER > 1000
# pragma once
#endif
// Forward declarations.
class CLuaState;
class CXGame;
struct SWeaponHit;
struct IScript;
struct ICVar;
struct IScriptObject;
///////////////////////////////////////////////
#define TEAM_HAS_NOT_CHANGED -1
#define SPECTATORS_TEAM 0
#include "ScriptObjectServerSlot.h"
class CXServerRules
{
public:
CXServerRules();
virtual ~CXServerRules();
//! Load the rules set by the console variables
bool Init(CXGame *pGame, IConsole *pConsole,IScriptSystem *pScriptSystem, ILog *pLog = NULL);
void Update();
//! Unload the rules
void ShutDown();
void CallVote(CScriptObjectServerSlot &sss, char *command, char *arg1);
void Vote(CScriptObjectServerSlot &sss, int vote);
void Kill(CScriptObjectServerSlot &sss);
void MapChanged();
//! \return 0 if the class is not initialized (e.g. during loading)
const char *GetGameType();
IScriptObject *GetScriptObject() { return m_pGameRulesObj; };
void PrintEnterGameMessage(const char *playername,int color);
void OnHitObject( const SWeaponHit &hit );
void OnHitPlayer( const SWeaponHit &hit );
//! When new player connected.
int OnClientConnect(IScriptObject *pSS,int nRequestedClassID);
//! When new player connected.
void OnClientDisconnect( IScriptObject *pSS );
void OnClientRequestRespawn( IScriptObject *pSS , const EntityClassId nRequestedClassID);
//! When player respawn after death.
void OnPlayerRespawn( IEntity *player );
//! When player try to change team
int OnClientMsgJoinTeamRequest(CXServerSlot *pSS,BYTE nTeamId,const char *sClass);
int OnClientCmd(CXServerSlot *pSS,const char *sCmd);
//! when a spectator whant to switch spectating mode
void OnSpectatorSwitchModeRequest(IEntity *spec);
void OnClientMsgText(EntityId sender,TextMessage &tm);
void SetGameStuffScript(string sName);
string GetGameStuffScript();
void SendEntityTextMessage(EntityId sender,TextMessage &tm);
void SendTeamTextMessage(EntityId sender,TextMessage &tm);
void SendWorldTextMessage(EntityId sender,TextMessage &tm);
// void SendEntityCommand(EntityId sender,ClientCommand &cc);
// void SendTeamCommand(EntityId sender,ClientCommand &cc);
//! After the map and its entities have been loaded
void OnAfterLoad();
public:
// console variable used to set the rules
IConsole *m_pConsole;
/*ICVar* m_pcvRuleProfile;
ICVar* m_pcvRuleTask;
ICVar* m_pcvRuleTaskNum;
ICVar* m_pcvRuleModGame;
ICVar* m_pcvScoreBlue;
ICVar* m_pcvScoreRed;
ICVar* m_pcvDomStat;
ICVar* m_pcvDomPoints;
ICVar* m_pcvgFriendlyFire;
ICVar* m_pcvgForceRespawn;
ICVar* m_pcvgWeaponsStay;
ICVar* m_pcvgFallingDamage;
ICVar* m_pcvgSameMap;
ICVar* m_pcvgDropableItems;
ICVar* m_pcvgAllowPowerups;*/
private:
//! Get rules script.
//IScriptObject *GetRulesTable() const;
//CScriptObjectServerSlot m_ScriptObjectServerSlot;
CXGame *m_pGame;
IScriptSystem *m_pScriptSystem;
IScriptObject *m_pGameRulesObj;
bool m_init;
string m_sGameStuffScript;
//! load the GameRules for the given gametype
//! /param inszGameType gametype e.g. "Default" or "TDM", must not be 0
//! /return true=success, false=failed
bool ChangeGameRules( const char *inszGameType );
};
#endif // GAME_XSERVERRULES_H