Nuclide
Software Development Kit for id Tech
NSGameRules.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2016-2020 Marco Cawthorne <marco@icculus.org>
3 *
4 * Permission to use, copy, modify, and distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
13 * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
14 * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 */
16
25{
26public:
27 void NSGameRules(void);
28
29 /* overrides */
30 virtual void Save(float);
31 virtual void Restore(string,string);
32 virtual void RestoreComplete(void);
33
35 virtual void InitPostEnts(void);
36
37 /* logic */
39 virtual void FrameStart(void);
41 virtual bool ConsoleCommand(NSClientPlayer,string);
43 virtual bool ClientCommand(NSClient,string);
45 virtual bool ImpulseCommand(NSClient, float);
46
47 /* client */
49 virtual void PlayerConnect(NSClientPlayer);
51 virtual void PlayerDisconnect(NSClientPlayer);
53 virtual void PlayerKill(NSClientPlayer);
55 virtual void PlayerSpawn(NSClientPlayer);
57 virtual void PlayerPreFrame(NSClientPlayer);
59 virtual void PlayerPostFrame(NSClientPlayer);
61 virtual void PlayerDeath(NSClientPlayer);
63 virtual void PlayerPain(NSClientPlayer);
65 virtual bool PlayerCanAttack(NSClientPlayer);
66
72
73 /* level transitions */
75 virtual void LevelNewParms(void);
77 virtual void LevelChangeParms(NSClientPlayer);
78
79 /* Entities/Item manipulation */
81 virtual int MaxItemPerSlot(int);
83 virtual bool MonstersSpawn(void);
85 virtual void DamageApply(entity,entity,float,int,damageType_t);
87 virtual bool DamageCheckTrace(entity,vector);
89 virtual void DamageRadius(vector,entity,float,float,bool,int);
90
91 /* end of a game */
93 virtual void IntermissionStart(void);
95 virtual void IntermissionCycle(void);
97 virtual void IntermissionEnd(void);
101 virtual bool InIntermission(void);
102
104 virtual bool IsTeamplay(void);
106 virtual bool IsMultiplayer(void);
107
108 /* chat related methods */
111 virtual void ChatMessageAll(NSClient, string);
112
115 virtual void ChatMessageTeam(NSClient, string);
116
118 virtual string Title(void);
119
120 /* spectator */
121 /*
122 virtual void SpectatorConnect(NSClientPlayer);
123 virtual void SpectatorDisconnect(NSClientPlayer);
124 virtual void SpectatorThink(NSClientPlayer);
125 */
126private:
127 int m_iIntermission;
128 float m_flIntermissionTime;
129 float m_flIntermissionCycle;
130 entity m_eIntermissionPoint;
131};
132
133/* our currently running mode */
135
136#define CGameRules NSGameRules
NSGameRules g_grMode
Definition: NSGameRules.h:134
This entity class represents every player client.
Definition: NSClientPlayer.h:26
This entity class is the lowest client/player class.
Definition: NSClient.h:24
This class represents active gamerules.
Definition: NSGameRules.h:25
virtual void FrameStart(void)
Overridable: Called every server frame.
Definition: NSGameRules.qc:68
virtual bool ConsoleCommand(NSClientPlayer, string)
Overridable: Called when a client issues a console command.
Definition: NSGameRules.qc:73
virtual void PlayerKill(NSClientPlayer)
Overridable: Called when a NSClientPlayer issues the kill console command.
Definition: NSGameRules.qc:102
virtual void InitPostEnts(void)
Overridable: Called when all map entities have initialized.
Definition: NSGameRules.qc:61
virtual string Title(void)
Returns the title of the gamemode running.
Definition: NSGameRules.qc:592
virtual void DamageApply(entity, entity, float, int, damageType_t)
Overridable: shim to handle application of direct damage.
Definition: NSGameRules.qc:283
virtual void IntermissionToPlayer(NSClientPlayer)
Run to send a specific player to an intermission.
Definition: NSGameRules.qc:236
virtual bool DamageCheckTrace(entity, vector)
Checks if an entity can be attacked from a given position.
Definition: NSGameRules.qc:441
virtual bool PlayerRequestRespawn(NSClientPlayer)
Overridable: called when a NSClientPlayer requests a respawn.
Definition: NSGameRules.qc:538
virtual void LevelChangeParms(NSClientPlayer)
Overridable: Called to store parms for a specific NSClientPlayer.
Definition: NSGameRules.qc:141
virtual void Save(float)
Handles saving a copy of this entity to a given filehandle.
Definition: NSGameRules.qc:29
virtual void ChatMessageAll(NSClient, string)
Called by Nuclide when the server has received a chat message that is to be distributed amongst all c...
Definition: NSGameRules.qc:544
virtual void RestoreComplete(void)
Called when the entity has been successfully restored from a savegame file.
Definition: NSGameRules.qc:53
virtual bool IsMultiplayer(void)
Returns if the gamerule is a multiplayer game.
Definition: NSGameRules.qc:277
virtual void PlayerPain(NSClientPlayer)
Overridable: Called when a NSClientPlayer feels pain.
Definition: NSGameRules.qc:113
virtual void Restore(string, string)
Similar to ::SpawnKey but for save-game fields.
Definition: NSGameRules.qc:37
virtual void PlayerDisconnect(NSClientPlayer)
Overridable: Called when a NSClientPlayer leaves the server.
Definition: NSGameRules.qc:96
virtual void LevelNewParms(void)
Overridable: Called to set up new level parms for any NSClientPlayer.
Definition: NSGameRules.qc:136
virtual void PlayerPostFrame(NSClientPlayer)
Overridable: Called after running physics on the NSClientPlayer in question.
Definition: NSGameRules.qc:129
virtual bool InIntermission(void)
Returns if the gamerules find themselves in an intermission.
Definition: NSGameRules.qc:259
virtual void IntermissionEnd(void)
Called when intermission ends.
Definition: NSGameRules.qc:514
virtual void IntermissionStart(void)
Called when intermission starts.
Definition: NSGameRules.qc:170
virtual bool ClientCommand(NSClient, string)
Overridable: Called when a client issues a client command.
Definition: NSGameRules.qc:78
virtual bool PlayerCanAttack(NSClientPlayer)
Overridable: Called to check if a NSClientPlayer can attack.
Definition: NSGameRules.qc:532
virtual void DamageRadius(vector, entity, float, float, bool, int)
Overridable: shim to handle application of indirect radius damage.
Definition: NSGameRules.qc:471
virtual void PlayerConnect(NSClientPlayer)
Overridable: Called when a NSClientPlayer joins the server.
Definition: NSGameRules.qc:90
virtual bool IsTeamplay(void)
Returns if this gamerule considers itself teamplay oriented.
Definition: NSGameRules.qc:272
virtual void IntermissionCycle(void)
Called when the intermission system calls a new map.
Definition: NSGameRules.qc:185
virtual void PlayerPreFrame(NSClientPlayer)
Overridable: Called before running physics on the NSClientPlayer in question.
Definition: NSGameRules.qc:124
virtual void PlayerSpawn(NSClientPlayer)
Overridable: Called when a NSClientPlayer spawns, called sometime after joining.
Definition: NSGameRules.qc:119
virtual void ChatMessageTeam(NSClient, string)
Called by Nuclide when the server has received a chat message that is to be distributed amongst all c...
Definition: NSGameRules.qc:561
virtual int MaxItemPerSlot(int)
Overridable: Returns how many items players can carry in a given slot.
Definition: NSGameRules.qc:164
virtual void PlayerDeath(NSClientPlayer)
Overridable: Called when a NSClientPlayer dies in the game.
Definition: NSGameRules.qc:107
virtual bool ImpulseCommand(NSClient, float)
Overridable: Called when a client issues an impulse command.
Definition: NSGameRules.qc:83
void NSGameRules(void)
Definition: NSGameRules.qc:22
virtual bool MonstersSpawn(void)
Overridable: Returns if NSMonster or NSTalkMonster entities can spawn.
Definition: NSGameRules.qc:265
This class is responsible for handling core entity functionality.
Definition: NSIO.h:27
damageType_t
All available damage types.
Definition: damage.h:19
vector(vector) normalize
entity() spawn