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.
131 lines
3.2 KiB
131 lines
3.2 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
//============================================================================= |
|
|
|
#ifndef TF_POWERUP_BOTTLE_H |
|
#define TF_POWERUP_BOTTLE_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include "tf_shareddefs.h" |
|
#include "tf_item_wearable.h" |
|
|
|
#if defined( CLIENT_DLL ) |
|
#define CTFPowerupBottle C_TFPowerupBottle |
|
#include "econ_notifications.h" |
|
#endif |
|
|
|
|
|
class CTFPowerupBottle : public CTFWearable |
|
{ |
|
DECLARE_CLASS( CTFPowerupBottle, CTFWearable ); |
|
public: |
|
DECLARE_NETWORKCLASS(); |
|
DECLARE_DATADESC(); |
|
|
|
CTFPowerupBottle(); |
|
virtual ~CTFPowerupBottle() { } |
|
|
|
PowerupBottleType_t GetPowerupType( void ) const; |
|
|
|
virtual void Precache( void ); |
|
|
|
// reset the bottle to its initial state |
|
void Reset( void ); |
|
|
|
// Unequips the item as usual, but also removes any effect it may have been granting |
|
virtual void UnEquip( CBasePlayer* pOwner ); |
|
|
|
// Overridden so that this item can apply the effect only when it is active |
|
virtual void ReapplyProvision(); |
|
|
|
// @return true if the effect was applied and a charge was consumed, false otherwise |
|
bool Use(); |
|
|
|
// Remove the effect applied by the item |
|
void RemoveEffect(); |
|
|
|
// set the number of charges availabe on this item |
|
// @param usNumCharges |
|
void SetNumCharges( uint8 usNumCharges ); |
|
|
|
// @return the number of charges the item has |
|
uint8 GetNumCharges() const; |
|
|
|
// @return the maximum number of charges this item can hold |
|
uint8 GetMaxNumCharges() const; |
|
|
|
bool AllowedToUse(); |
|
|
|
const char* GetEffectLabelText( void ); |
|
const char* GetEffectIconName( void ); |
|
float GetProgress( void ) { return 0.0f; } |
|
|
|
virtual int GetSkin(); |
|
bool IsBasePowerUpBottle( void ) const { int iMode = 0; CALL_ATTRIB_HOOK_INT( iMode, set_weapon_mode ); return (iMode == 1); }; |
|
|
|
protected: |
|
|
|
// Used internally to remove the effect after a tunable amount of time |
|
void StatusThink(); |
|
|
|
CNetworkVar( bool, m_bActive ); |
|
CNetworkVar( uint8, m_usNumCharges ); |
|
|
|
private: |
|
|
|
#ifdef TF_CLIENT_DLL |
|
virtual void FireGameEvent( IGameEvent *event ); |
|
virtual int GetWorldModelIndex( void ); |
|
#endif |
|
|
|
float m_flLastSpawnTime; |
|
}; |
|
|
|
#ifdef CLIENT_DLL |
|
|
|
// ****************************************************************************************** |
|
// CEquipMvMCanteenNotification - Client notification to equip a canteen |
|
// ****************************************************************************************** |
|
class CEquipMvMCanteenNotification : public CEconNotification |
|
{ |
|
public: |
|
CEquipMvMCanteenNotification() : CEconNotification() |
|
{ |
|
m_bHasTriggered = false; |
|
} |
|
|
|
~CEquipMvMCanteenNotification() |
|
{ |
|
if ( !m_bHasTriggered ) |
|
{ |
|
m_bHasTriggered = true; |
|
} |
|
} |
|
|
|
virtual void MarkForDeletion() |
|
{ |
|
m_bHasTriggered = true; |
|
CEconNotification::MarkForDeletion(); |
|
} |
|
|
|
virtual EType NotificationType() { return eType_AcceptDecline; } |
|
virtual bool BShowInGameElements() const { return true; } |
|
|
|
virtual void Accept(); |
|
virtual void Trigger() { Accept(); } |
|
virtual void Decline() { MarkForDeletion(); } |
|
virtual void UpdateTick(); |
|
|
|
static bool IsNotificationType( CEconNotification *pNotification ) { return dynamic_cast<CEquipMvMCanteenNotification *>( pNotification ) != NULL; } |
|
|
|
private: |
|
bool m_bHasTriggered; |
|
}; |
|
|
|
#endif // client |
|
|
|
#endif // TF_POWERUP_BOTTLE_H
|
|
|