home *** CD-ROM | disk | FTP | other *** search
/ GameStar 2006 March / Gamestar_82_2006-03_dvd.iso / DVDStar / Editace / quake4_sdkv10.exe / source / game / mp / Tourney.h < prev    next >
C/C++ Source or Header  |  2005-11-14  |  5KB  |  155 lines

  1. //----------------------------------------------------------------
  2. // Tourney.h
  3. //
  4. // Copyright 2002-2004 Raven Software
  5. //----------------------------------------------------------------
  6.  
  7. #ifndef __TOURNEY_H__
  8. #define __TOURNEY_H__
  9.  
  10. #include "../Game_local.h"
  11.  
  12. enum arenaState_t {
  13.     AS_INACTIVE = 0,
  14.     AS_WARMUP,
  15.     AS_ROUND,
  16.     AS_SUDDEN_DEATH,
  17.     AS_DONE
  18. };
  19.  
  20. #define MAX_TOURNEY_HISTORY_NAME_LEN 32
  21.  
  22. typedef struct arenaOutcome_s {
  23.     // for clients that have disconnected, copy their names for history purposes
  24.     char    playerOne[ MAX_TOURNEY_HISTORY_NAME_LEN ];
  25.     char    playerTwo[ MAX_TOURNEY_HISTORY_NAME_LEN ];
  26.  
  27.     // for currently connected clients, use clientnum to get current name
  28.     int        playerOneNum;
  29.     int        playerTwoNum;
  30.  
  31.     int playerOneScore;
  32.     int playerTwoScore;
  33. } arenaOutcome_t;
  34.  
  35. // shouldn't exceed MAX_INSTANCES from idMultiplayerGame
  36. const int MAX_ARENAS = 8;
  37.  
  38. const int MAX_ROUNDS = 4;
  39.  
  40. class rvTourneyArena {
  41. public:
  42.     rvTourneyArena();
  43.     
  44.     void            AddPlayers( idPlayer* playerOne, idPlayer* playerTwo );
  45.     void            ClearPlayers( idPlayer* clearPlayer = NULL );
  46.     void            Clear( bool respawnPlayers = true );
  47.     void            Ready( void );
  48.  
  49.     idPlayer*        GetLeader( void );
  50.     idPlayer*        GetLoser( void );
  51.     idPlayer*        GetWinner( void ) { return winner; }
  52.     void            UpdateState( void );
  53.     void            NewState( arenaState_t newState );
  54.     
  55.     idPlayer**        GetPlayers( void );
  56.  
  57.     void            SetArenaID( int id );
  58.     int                GetArenaID( void ) const;
  59.  
  60.     arenaState_t    GetState( void ) const;
  61.     void            SetState( arenaState_t newState );
  62.     void            SetNextStateTime( int time );
  63.     int                GetNextStateTime( void );
  64.     int                GetMatchStartTime( void ) { return matchStartTime; }
  65.  
  66.     void            PackState( idBitMsg& outMsg );
  67.     void            UnpackState( const idBitMsg& inMsg );
  68.  
  69.     void            RemovePlayer( idPlayer* player, bool disconnecting );
  70.     bool            TimeLimitHit( void );
  71.     bool            IsPlaying( idPlayer* player ) { return ( arenaState != AS_INACTIVE && arenaState != AS_DONE && ( player == players[ 0 ] || player == players[ 1 ] ) ); }
  72.  
  73.     const char*        GetPlayerName( int player );
  74.     int                GetPlayerScore( int player );
  75.     int                GetFraglimitTimeout( void ) { return fragLimitTimeout; }
  76.     bool            operator==( const rvTourneyArena& rhs ) const;
  77.     bool            operator!=( const rvTourneyArena& rhs ) const;
  78.     rvTourneyArena& operator=( const rvTourneyArena& rhs );
  79.  
  80. private:
  81.     // players            - players in arena
  82.     idPlayer*            players[ 2 ];    
  83.     // arenaID            - this arena's ID
  84.     int                    arenaID;
  85.     // arenaState        - state of the arena
  86.     arenaState_t        arenaState;
  87.     // nextStateTime    - transition time to next state
  88.     int                    nextStateTime;
  89.     // winner            - the winner of the arena
  90.     idPlayer*            winner;
  91.     // fragLimitTimeout    - timeout to let death anims play
  92.     int                    fragLimitTimeout;
  93.     // matchStartTime    - time arena started
  94.     int                    matchStartTime;
  95. };
  96.  
  97. ID_INLINE idPlayer** rvTourneyArena::GetPlayers( void ) {
  98.     return players;
  99. }
  100.  
  101. ID_INLINE void rvTourneyArena::SetArenaID( int id ) {
  102.     arenaID = id;
  103. }
  104.  
  105. ID_INLINE int rvTourneyArena::GetArenaID( void ) const {
  106.     return arenaID;
  107. }
  108.  
  109. ID_INLINE bool rvTourneyArena::operator==( const rvTourneyArena& rhs ) const {
  110.     return ( arenaState == rhs.arenaState && players[ 0 ] == rhs.players[ 0 ] && players[ 1 ] == rhs.players[ 1 ] && nextStateTime == rhs.nextStateTime && arenaID == rhs.arenaID && fragLimitTimeout == rhs.fragLimitTimeout && matchStartTime == rhs.matchStartTime );
  111. }
  112.  
  113. ID_INLINE bool rvTourneyArena::operator!=( const rvTourneyArena& rhs ) const {
  114.     return ( arenaState != rhs.arenaState || players[ 0 ] != rhs.players[ 0 ] || players[ 1 ] != rhs.players[ 1 ] || nextStateTime != rhs.nextStateTime || arenaID != rhs.arenaID || fragLimitTimeout != rhs.fragLimitTimeout || matchStartTime != rhs.matchStartTime );
  115. }
  116.  
  117. ID_INLINE rvTourneyArena& rvTourneyArena::operator=( const rvTourneyArena& rhs ) {
  118.     players[ 0 ] = rhs.players[ 0 ];
  119.     players[ 1 ] = rhs.players[ 1 ];
  120.     arenaState = rhs.arenaState;
  121.     nextStateTime = rhs.nextStateTime;
  122.     arenaID = rhs.arenaID;
  123.     fragLimitTimeout = rhs.fragLimitTimeout;
  124.     matchStartTime = rhs.matchStartTime;
  125.     return (*this);
  126. }
  127.  
  128. typedef enum {
  129.     TGH_BRACKET,
  130.     TGH_PLAYER_ONE,
  131.     TGH_PLAYER_TWO
  132. } tourneyGUIHighlight_t;
  133.  
  134. class rvTourneyGUI {
  135. public:
  136.             rvTourneyGUI();
  137.     void    SetupTourneyGUI( idUserInterface* newTourneyGUI, idUserInterface* newTourneyScoreboard );
  138.  
  139.     void    RoundStart( void );
  140.     void    ArenaStart( int arena );
  141.     void    ArenaDone( int arena );
  142.     void    ArenaSelect( int arena, tourneyGUIHighlight_t highlightType );
  143.     void    UpdateScores( void );
  144.     void    PreTourney( void );
  145.     void    TourneyStart( void );
  146.     void    UpdateByePlayer( void );
  147.     void    SetupTourneyHistory( int startHistory, int endHistory, arenaOutcome_t tourneyHistory[ MAX_ROUNDS ][ MAX_ARENAS ] );
  148.  
  149. private:
  150.     idUserInterface*    tourneyGUI;
  151.     idUserInterface*    tourneyScoreboard;
  152. };
  153.  
  154. #endif
  155.