Modified source engine (2017) developed by valve and leaked in 2020. Not for commercial purporses
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.

132 lines
3.2 KiB

5 years ago
//========= 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