![]() |
PRooFPS-dd Dev Doc 1.0
PRooFPS-dd Developer Documentation
|
This class is for tests where we test pure GameMode functionality: we don't need DeathMatchMode for that. More...
This class is for tests where we test pure GameMode functionality: we don't need DeathMatchMode for that.
Definition at line 29 of file GameModeTest.h.
#include <GameModeTest.h>
Inheritance diagram for SpecialGameMode:Public Member Functions | |
| SpecialGameMode (const std::map< pge_network::PgeNetworkConnectionHandle, proofps_dd::Player > &m_mapPlayers) | |
| SpecialGameMode (const SpecialGameMode &)=delete | |
| SpecialGameMode & | operator= (const SpecialGameMode &)=delete |
| SpecialGameMode (SpecialGameMode &&)=delete | |
| SpecialGameMode && | operator= (SpecialGameMode &&)=delete |
| virtual bool | addPlayer (const proofps_dd::Player &player, pge_network::PgeINetwork &) override |
| Adds the specified player. | |
| virtual bool | updatePlayer (const proofps_dd::Player &, pge_network::PgeINetwork &) override |
| Updates data for the specified player. | |
| virtual bool | removePlayer (const proofps_dd::Player &, pge_network::PgeINetwork &) override |
| Removes data for the specified player. | |
| virtual bool | isTeamBasedGame () const override |
| Derived class shall return false if it is non-team-based game, otherwise true. | |
| virtual bool | isRoundBased () const override |
| virtual bool | isRespawnAllowedAfterDie () const override |
| virtual bool | isPlayerAllowedForGameplay (const proofps_dd::Player &) const override |
| Checks if given player is allowed for gameplay. | |
Public Member Functions inherited from proofps_dd::GameMode | |
| CConsole & | getConsole () const |
| virtual | ~GameMode () |
| virtual void | fetchConfig (PGEcfgProfiles &cfgProfiles, pge_network::PgeINetwork &network) |
| Fetches configuration from the given PGEcfgProfiles instance. | |
| GameModeType | getGameModeType () const |
| const char * | getGameModeTypeName () const |
| const std::chrono::time_point< std::chrono::steady_clock > & | getResetTime () const |
| unsigned int | getTimeLimitSecs () const |
| void | setTimeLimitSecs (unsigned int secs) |
| Set the time limit for the game. | |
| unsigned int | getTimeRemainingMillisecs () const |
| void | clientUpdateTimeRemainingMillisecs (const unsigned int &nRemMillisecs, pge_network::PgeINetwork &network) |
| Updates the remaining time on client side, based on the remaining time received from server. | |
| virtual void | restart (pge_network::PgeINetwork &network) |
| Similar to restartWithoutRemovingPlayers() but it also removes all players from this GameMode instance. | |
| virtual void | restartWithoutRemovingPlayers (pge_network::PgeINetwork &network, const proofps_dd::GameRestartType_KeepPlayers &eRestartType) |
| Resets winning time and winning condition, also zeros out relevant members of PlayersTableRow for all players. | |
| virtual bool | serverCheckAndUpdateWinningConditions (pge_network::PgeINetwork &network) |
| Evaluates conditions to see if game is won or not. | |
| void | clientReceiveAndUpdateWinningConditions (pge_network::PgeINetwork &network, bool bGameSessionWon) |
| Handles server's update about current game session goal, e.g. | |
| virtual void | serverTickUpdateWinningConditions (pge_network::PgeINetwork &network) |
| Shall be invoked regularly (per tick or per frame) at the end of server tick or frame loop so hasJustBeenWonThisTick() and further functionalities in derived classes can work properly. | |
| virtual void | clientTickUpdateWinningConditions (pge_network::PgeINetwork &network) |
| Shall be invoked regularly (per tick or per frame) at the end of client tick or frame loop so hasJustBeenWonThisTick() and further functionalities in derived classes can work properly. | |
| bool | isGameWon () const |
| Returns the current game session win state i.e. | |
| bool | wasGameWonAlreadyInPreviousTick () const |
| Returns if the current game session was already won in the previous tick. | |
| bool | hasJustBeenWonThisTick () const |
| Returns if the current game session has been just detected as won in this tick i.e. | |
| const std::chrono::time_point< std::chrono::steady_clock > & | getWinTime () const |
| const std::list< PlayersTableRow > & | getPlayersTable () const |
| const std::map< pge_network::PgeNetworkConnectionHandle, proofps_dd::Player > & | getExternalPlayersContainer () const |
| bool | renamePlayer (const std::string &sOldName, const std::string &sNewName) |
| Renames the player. | |
| virtual bool | isPlayerMovementAllowed () const |
| unsigned int | getSpectatorModePlayersCount () const |
| void | text (PR00FsUltimateRenderingEngine &pure, const std::string &s, int x, int y) const |
Additional Inherited Members | |
Static Public Member Functions inherited from proofps_dd::GameMode | |
| static const char * | getLoggerModuleName () |
| static GameMode * | createGameMode (GameModeType gm, const std::map< pge_network::PgeNetworkConnectionHandle, proofps_dd::Player > &mapPlayers) |
| Similar to singleton design pattern, there is always maximum one instance. | |
| static GameMode * | getGameMode () |
| static bool | isTeamBasedGame (GameModeType gm) |
| static bool | isRoundBased (GameModeType gm) |
| static const char * | getGameModeTypeName (GameModeType gm) |
| static GameModeType | getGameModeTypeFromConfig (PGEcfgProfiles &cfgProfiles) |
| static const char * | getRank (const PlayersTableRow &row) |
Static Public Attributes inherited from proofps_dd::GameMode | |
| static constexpr char * | szCvarSvGamemode = "sv_gamemode" |
| static constexpr char * | szCvarSvGmTimeLimit = "sv_gm_timelimit_secs" |
| static constexpr char * | szCvarSvDmFragLimit = "sv_dm_fraglimit" |
| static constexpr char * | szCvarSvRgmRoundWinLimit = "sv_rgm_roundwinlimit" |
| static constexpr int | nSvGmTimeLimitSecsDef = 0 |
| static constexpr int | nSvGmTimeLimitSecsMin = 0 |
| static constexpr int | nSvGmTimeLimitSecsMax = 60 * 60 * 24 |
| static constexpr int | nSvDmFragLimitDef = 10 |
| static constexpr int | nSvDmFragLimitMin = 0 |
| static constexpr int | nSvDmFragLimitMax = 999 |
| static constexpr int | nSvRgmRoundWinLimitDef = 5 |
| static constexpr int | nSvRgmRoundWinLimitMin = 1 |
| static constexpr int | nSvRgmRoundWinLimitMax = 999 |
Protected Member Functions inherited from proofps_dd::GameMode | |
| GameMode (GameModeType gm, const std::map< pge_network::PgeNetworkConnectionHandle, proofps_dd::Player > &mapPlayers) | |
| GameMode (const GameMode &)=delete | |
| GameMode & | operator= (const GameMode &)=delete |
| GameMode (GameMode &&)=delete | |
| GameMode && | operator= (GameMode &&)=delete |
| virtual bool | serverSendGameSessionStateToClient (pge_network::PgeINetwork &network, const pge_network::PgeNetworkConnectionHandle &connHandle) |
| virtual bool | serverSendGameSessionStateToClients (pge_network::PgeINetwork &network, const proofps_dd::GameRestartType_KeepPlayers &eRestartType) |
| void | handleEventGameWon (pge_network::PgeINetwork &network) |
Protected Attributes inherited from proofps_dd::GameMode | |
| std::chrono::time_point< std::chrono::steady_clock > | m_timeWin |
| std::list< PlayersTableRow > | m_players |
| const std::map< pge_network::PgeNetworkConnectionHandle, proofps_dd::Player > & | m_mapPlayersExternal |
| bool | m_bWon { false } |
| bool | m_bWonPrevious { false } |
| GameModeType | m_gameModeType |
|
inline |
Definition at line 33 of file GameModeTest.h.
|
delete |
|
delete |
|
inlineoverridevirtual |
Adds the specified player.
In case of server instance, if the added player is a client, it SHALL immediately send game win condition to this client using serverSendGameSessionStateToClient(). In case of server instance, it SHALL automatically evaluate winning condition using serverCheckAndUpdateWinningConditions() after adding the player. Note that once a game is won, it stays won even if players are updated to fail the winning conditions, until explicit call to restart().
Note that GameMode does not ensure that a spectating player cannot win a game. The game shall ensure that the player does not gain any frags while in spectator mode! Therefore, if the added player already has enough frags to flip game won state, the game will go into won state, regardless of the player's spectating state!
Fails if a player with same name is already added.
Implements proofps_dd::GameMode.
Definition at line 44 of file GameModeTest.h.
|
inlineoverridevirtual |
Checks if given player is allowed for gameplay.
For example, in a team-based game mode, server can freeze player actions when no team is assigned to the player. But it also checks for spectator mode.
Can be used by both server and client instances. Must also work properly on client-side, since in player-follow spectating view, this function is used to determine which players can be spectated.
Reimplemented from proofps_dd::GameMode.
Definition at line 85 of file GameModeTest.h.
|
inlineoverridevirtual |
Implements proofps_dd::GameMode.
Definition at line 80 of file GameModeTest.h.
|
inlineoverridevirtual |
Implements proofps_dd::GameMode.
Definition at line 75 of file GameModeTest.h.
|
inlineoverridevirtual |
Derived class shall return false if it is non-team-based game, otherwise true.
Implements proofps_dd::GameMode.
Definition at line 70 of file GameModeTest.h.
|
delete |
|
delete |
|
inlineoverridevirtual |
Removes data for the specified player.
Fails if player with same cannot be found.
Does not evaluate winning conditions, since once a game is won, it stays won even if all players are removed, until explicit call to restart().
Implements proofps_dd::GameMode.
Definition at line 63 of file GameModeTest.h.
|
inlineoverridevirtual |
Updates data for the specified player.
In case of server instance, it SHALL automatically evaluate winning condition using serverCheckAndUpdateWinningConditions() after updating the player. Note that once a game is won, it stays won even if players are updated to fail the winning conditions, until explicit call to restart().
Note that GameMode does not ensure that a spectating player cannot win a game. The game shall ensure that the player does not gain any frags while in spectator mode! Therefore, if the added player already has enough frags to flip game won state, the game will go into won state, regardless of the player's spectating state!
Fails if player with same cannot be found.
Implements proofps_dd::GameMode.
Definition at line 56 of file GameModeTest.h.