//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // //=============================================================================// #ifndef WEAPON_DODSNIPER_H #define WEAPON_DODSNIPER_H #ifdef _WIN32 #pragma once #endif #include "cbase.h" #include "shake.h" #include "weapon_dodsemiauto.h" #include "dod_shareddefs.h" #if defined( CLIENT_DLL ) #define CDODSniperWeapon C_DODSniperWeapon #endif #define DOD_SNIPER_ZOOM_CHANGE_TIME 0.3 class CDODSniperWeapon : public CDODSemiAutoWeapon { public: DECLARE_CLASS( CDODSniperWeapon, CDODSemiAutoWeapon ); DECLARE_NETWORKCLASS(); DECLARE_PREDICTABLE(); #ifndef CLIENT_DLL DECLARE_DATADESC(); #endif CDODSniperWeapon(); virtual void Spawn( void ); virtual bool Holster( CBaseCombatWeapon *pSwitchingTo ); virtual bool Reload( void ); virtual void FinishReload( void ); virtual void Drop( const Vector &vecVelocity ); virtual void ItemPostFrame( void ); virtual void PrimaryAttack( void ); virtual void SecondaryAttack( void ); void ResetTimers( void ); // reset all the flags, timers that would cause us to re-zoom or unzoom #ifdef CLIENT_DLL virtual Vector GetDesiredViewModelOffset( C_DODPlayer *pOwner ); virtual float GetViewModelSwayScale( void ); float GetZoomedPercentage( void ); #endif // Is the weapon completely zoomed, finished the raising animation bool IsFullyZoomed( void ); virtual bool ShouldDrawCrosshair( void ); virtual bool HideViewModelWhenZoomed( void ) { return true; } virtual float GetWeaponAccuracy( float flPlayerSpeed ); virtual float GetZoomedFOV( void ) { return 20; } bool IsZoomed( void ); virtual bool ShouldZoomOutBetweenShots( void ) { return true; } virtual bool ShouldRezoomAfterReload( void ) { return false; } void ToggleZoom( void ); void ZoomIn( void ); void ZoomOut( void ); void ZoomOutIn( void ); void SetRezoom( bool bRezoom, float flDelay ); bool IsZoomingIn( void ); CNetworkVar( bool, m_bDoViewAnim ); #ifdef CLIENT_DLL bool m_bDoViewAnimCache; float m_flViewAnimTimer; float m_flZoomPercent; #endif protected: bool m_bShouldRezoomAfterShot; // if the gun zooms out after a shot, does it zoom back in automatically? private: CDODSniperWeapon( const CDODSniperWeapon & ); float m_flUnzoomTime; float m_flRezoomTime; float m_flZoomInTime; float m_flZoomOutTime; bool m_bRezoomAfterReload; float m_flZoomChangeTime; bool m_bRezoomAfterShot; }; #endif // WEAPON_DODSNIPER_H