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
|