mirror of
https://github.com/shawns-valve/halflife.git
synced 2024-11-22 04:21:30 +00:00
112 lines
2.8 KiB
C
112 lines
2.8 KiB
C
|
//=========== (C) Copyright 1999 Valve, L.L.C. All rights reserved. ===========
|
||
|
//
|
||
|
// The copyright to the contents herein is the property of Valve, L.L.C.
|
||
|
// The contents may be used and/or copied only with the written permission of
|
||
|
// Valve, L.L.C., or in accordance with the terms and conditions stipulated in
|
||
|
// the agreement/contract under which the contents have been supplied.
|
||
|
//
|
||
|
// Purpose:
|
||
|
//
|
||
|
// $Workfile: $
|
||
|
// $Date: $
|
||
|
//
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// $Log: $
|
||
|
//
|
||
|
// $NoKeywords: $
|
||
|
//=============================================================================
|
||
|
|
||
|
#ifndef DISC_ARENA_H
|
||
|
#define DISC_ARENA_H
|
||
|
#pragma once
|
||
|
|
||
|
#define MAX_ARENAS 16
|
||
|
|
||
|
// Arena States
|
||
|
#define ARENA_WAITING_FOR_PLAYERS 0
|
||
|
#define ARENA_COUNTDOWN 1
|
||
|
#define ARENA_BATTLE_IN_PROGRESS 2
|
||
|
#define ARENA_SHOWING_SCORES 3
|
||
|
|
||
|
// Arena Times
|
||
|
#define ARENA_TIME_PREBATTLE 5
|
||
|
#define ARENA_TIME_VIEWSCORES 3
|
||
|
#define ARENA_TIME_ROUNDLIMIT 120 // Timelimit on rounds
|
||
|
|
||
|
enum
|
||
|
{
|
||
|
GAME_LOST = 0,
|
||
|
GAME_WON,
|
||
|
GAME_DIDNTPLAY,
|
||
|
};
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Arena object
|
||
|
class CDiscArena : public CBaseEntity
|
||
|
{
|
||
|
public:
|
||
|
void Spawn( void );
|
||
|
void Reset( void );
|
||
|
|
||
|
// Battle initialisation
|
||
|
void StartBattle( void );
|
||
|
void StartRound( void );
|
||
|
void SpawnCombatant( CBasePlayer *pPlayer );
|
||
|
void MoveToSpectator( CBasePlayer *pPlayer );
|
||
|
void EXPORT StartBattleThink( void );
|
||
|
|
||
|
// Battle running
|
||
|
void EXPORT CountDownThink( void );
|
||
|
void PlayerKilled( CBasePlayer *pPlayer );
|
||
|
void PlayerRespawned( CBasePlayer *pPlayer );
|
||
|
void BattleOver( void );
|
||
|
void EXPORT CheckOverThink( void );
|
||
|
void EXPORT FinishedThink( void );
|
||
|
void RestoreWorldObjects( void );
|
||
|
int ValidateCombatants( void );
|
||
|
void EXPORT TimeOver( void );
|
||
|
void EXPORT BattleThink( void );
|
||
|
bool CheckBattleOver( void );
|
||
|
|
||
|
// Client handling
|
||
|
void AddClient( CBasePlayer *pPlayer, BOOL bCheckStart );
|
||
|
void RemoveClient( CBasePlayer *pPlayer );
|
||
|
void AddPlayerToQueue( CBasePlayer *pPlayer );
|
||
|
void RemovePlayerFromQueue( CBasePlayer *pPlayer );
|
||
|
CBasePlayer * GetNextPlayer( void );
|
||
|
|
||
|
// Multiple Arena handling
|
||
|
int IsFull( void );
|
||
|
CBasePlayer *GetFirstSparePlayer( void );
|
||
|
void PostBattle( void );
|
||
|
|
||
|
// Game handling
|
||
|
bool AllowedToFire( void );
|
||
|
|
||
|
// Variables
|
||
|
int m_iArenaState;
|
||
|
int m_iPlayers;
|
||
|
int m_iMaxRounds;
|
||
|
int m_iCurrRound;
|
||
|
int m_iPlayersPerTeam; // Current players per team
|
||
|
int m_iSecondsTillStart;
|
||
|
int m_iWinningTeam;
|
||
|
int m_iTeamOneScore;
|
||
|
int m_iTeamTwoScore;
|
||
|
float m_flTimeLimitOver;
|
||
|
BOOL m_bShownTimeWarning;
|
||
|
|
||
|
// Queue
|
||
|
EHANDLE m_pPlayerQueue;
|
||
|
|
||
|
// Players in the current battle
|
||
|
EHANDLE m_hCombatants[ 32 ];
|
||
|
};
|
||
|
|
||
|
extern CDiscArena *g_pArenaList[ MAX_ARENAS ];
|
||
|
extern float g_iaDiscColors[33][3];
|
||
|
|
||
|
int InArenaMode();
|
||
|
|
||
|
#endif // DISC_ARENA_H
|