You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
2.5 KiB
81 lines
2.5 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
// func_passtime_goal - based on func_capture_zone |
|
#ifndef FUNC_PASSTIME_GOAL_H |
|
#define FUNC_PASSTIME_GOAL_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include "triggers.h" |
|
|
|
class CPasstimeBall; |
|
|
|
//----------------------------------------------------------------------------- |
|
// This class is to get around the fact that DEFINE_FUNCTION doesn't like multiple inheritance |
|
// TODO: make AutoList work without inheritance |
|
class CFuncPasstimeGoalShim : public CBaseTrigger |
|
{ |
|
public: |
|
virtual void StartTouch(CBaseEntity *pOther) OVERRIDE { CBaseTrigger::StartTouch(pOther); ShimStartTouch(pOther); } |
|
virtual void EndTouch(CBaseEntity *pOther) OVERRIDE { CBaseTrigger::EndTouch(pOther); ShimEndTouch(pOther); } |
|
|
|
private: |
|
virtual void ShimStartTouch( CBaseEntity* pOther ) = 0; |
|
virtual void ShimEndTouch( CBaseEntity* pOther ) = 0; |
|
}; |
|
|
|
//----------------------------------------------------------------------------- |
|
class CFuncPasstimeGoal : public CFuncPasstimeGoalShim, public TAutoList< CFuncPasstimeGoal > |
|
{ |
|
public: |
|
DECLARE_CLASS( CFuncPasstimeGoal, CFuncPasstimeGoalShim ); |
|
DECLARE_SERVERCLASS(); |
|
DECLARE_DATADESC(); |
|
CFuncPasstimeGoal(); |
|
virtual void Spawn() OVERRIDE; |
|
virtual int UpdateTransmitState() OVERRIDE; |
|
void OnScore( int team ); |
|
int Points() const { return m_iPoints; } |
|
bool IsDisabled() const { return m_bTriggerDisabled; } |
|
|
|
enum SpawnFlags |
|
{ |
|
WIN_ON_SCORE = 1, |
|
DISABLE_BALL_SCORE = 2, |
|
ENABLE_PLAYER_SCORE = 4, |
|
TYPE_TOWER_GOAL = 8, |
|
}; |
|
|
|
// FIXME: this is copypasta with c_func_passtime_goal |
|
enum GoalType |
|
{ |
|
TYPE_HOOP, |
|
TYPE_ENDZONE, |
|
TYPE_TOWER, |
|
}; |
|
|
|
bool BWinOnScore() const { return (GetSpawnFlags() & (CFuncPasstimeGoal::WIN_ON_SCORE << 24)) != 0; } |
|
bool BDisableBallScore() const { return (GetSpawnFlags() & (CFuncPasstimeGoal::DISABLE_BALL_SCORE << 24)) != 0; } |
|
bool BEnablePlayerScore() const { return (GetSpawnFlags() & (CFuncPasstimeGoal::ENABLE_PLAYER_SCORE << 24)) != 0; } |
|
bool BTowerGoal() const { return (GetSpawnFlags() & (CFuncPasstimeGoal::TYPE_TOWER_GOAL << 24)) != 0; } |
|
|
|
private: |
|
virtual void ShimStartTouch( CBaseEntity *pOther ) OVERRIDE; |
|
virtual void ShimEndTouch( CBaseEntity *pOther ) OVERRIDE; |
|
bool CanTouchMe( CBaseEntity *pOther ); |
|
void GoalThink(); |
|
|
|
COutputEvent m_onScoreBlu; |
|
COutputEvent m_onScoreRed; |
|
int m_iPoints; |
|
CNetworkVar( bool, m_bTriggerDisabled ); |
|
CNetworkVar( int, m_iGoalType ); |
|
}; |
|
|
|
#endif // FUNC_PASSTIME_GOAL_H
|
|
|