Team Fortress 2 Source Code as on 22/4/2020
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.
|
|
//========= 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
|