mirror of
https://github.com/ValveSoftware/source-sdk-2013.git
synced 2025-04-19 00:42:19 +00:00
Merge branch 'ValveSoftware:master' into ejectbrass_fix
This commit is contained in:
commit
9bcd2454eb
30 changed files with 217 additions and 128 deletions
2
LICENSE
2
LICENSE
|
@ -18,6 +18,6 @@ WARRANTY OF ANY KIND. VALVE EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS O
|
|||
INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT, TITLE AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
LIMITATION OF LIABILITY. VALVE AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL,
|
||||
OR CONSEQUENTIAL DAMAGES WHATSOEVER ) THAT MAY BE INCURRED BY YOU EVEN IF VALVE HAS BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
OR CONSEQUENTIAL DAMAGES WHATSOEVER THAT MAY BE INCURRED BY YOU EVEN IF VALVE HAS BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
|
|
@ -16,7 +16,11 @@ Clone the repository using the following command:
|
|||
|
||||
Requirements:
|
||||
- Source SDK 2013 Multiplayer installed via Steam
|
||||
- Visual Studio 2022
|
||||
- Visual Studio 2022 with the following workload and components:
|
||||
- Desktop development with C++:
|
||||
- MSVC v143 - VS 2022 C++ x64/x86 build tools (Latest)
|
||||
- Windows 11 SDK (10.0.22621.0) or Windows 10 SDK (10.0.19041.1)
|
||||
- Python 3.13 or later
|
||||
|
||||
Inside the cloned directory, navigate to `src`, run:
|
||||
```bat
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -191,12 +191,12 @@ void CMoveHelperClient::ProcessImpacts( void )
|
|||
}
|
||||
|
||||
// misyl: Debug
|
||||
if ( vOldLocalVel != vOldAbsVel )
|
||||
{
|
||||
Msg( "%d\n", gpGlobals->tickcount );
|
||||
Msg( "vOldLocalVel: %f %f %f\n", vOldLocalVel.x, vOldLocalVel.y, vOldLocalVel.z );
|
||||
Msg( "vOldAbsVel: %f %f %f\n", vOldAbsVel.x, vOldAbsVel.y, vOldAbsVel.z );
|
||||
}
|
||||
// if ( vOldLocalVel != vOldAbsVel )
|
||||
// {
|
||||
// Msg( "%d\n", gpGlobals->tickcount );
|
||||
// Msg( "vOldLocalVel: %f %f %f\n", vOldLocalVel.x, vOldLocalVel.y, vOldLocalVel.z );
|
||||
// Msg( "vOldAbsVel: %f %f %f\n", vOldAbsVel.x, vOldAbsVel.y, vOldAbsVel.z );
|
||||
// }
|
||||
// Restore the velocity
|
||||
m_pHost->SetAbsVelocity( vOldAbsVel );
|
||||
//m_pHost->SetLocalVelocity( vOldLocalVel );
|
||||
|
|
|
@ -547,7 +547,7 @@ void CTFAutoRP::ModifySpeech( const char *pszInText, char *pszOutText, int iOutL
|
|||
{
|
||||
szStoredWord[0] = toupper( szStoredWord[0] );
|
||||
}
|
||||
else if ( pszCurWord[0] >= 'a' && pszCurWord[0] <= 'a' )
|
||||
else if ( pszCurWord[0] >= 'a' && pszCurWord[0] <= 'z' )
|
||||
{
|
||||
szStoredWord[0] = tolower( szStoredWord[0] );
|
||||
}
|
||||
|
|
|
@ -40,6 +40,7 @@ public:
|
|||
virtual Vector EyePosition( void );
|
||||
|
||||
virtual INextBot *MyNextBotPointer( void ) { return this; }
|
||||
virtual bool IsNextBot(void) const { return true; }
|
||||
|
||||
// Event hooks into NextBot system ---------------------------------------
|
||||
virtual int OnTakeDamage_Alive( const CTakeDamageInfo &info );
|
||||
|
|
|
@ -996,6 +996,9 @@ public:
|
|||
void TraceBleed( float flDamage, const Vector &vecDir, trace_t *ptr, int bitsDamageType );
|
||||
virtual bool IsTriggered( CBaseEntity *pActivator ) {return true;}
|
||||
virtual bool IsNPC( void ) const { return false; }
|
||||
#ifdef NEXT_BOT
|
||||
virtual bool IsNextBot(void) const { return false; }
|
||||
#endif
|
||||
CAI_BaseNPC *MyNPCPointer( void );
|
||||
virtual CBaseCombatCharacter *MyCombatCharacterPointer( void ) { return NULL; }
|
||||
virtual INextBot *MyNextBotPointer( void ) { return NULL; }
|
||||
|
|
|
@ -95,9 +95,9 @@ ConVar spec_freeze_traveltime( "spec_freeze_traveltime", "0.4", FCVAR_CHEAT | FC
|
|||
|
||||
ConVar sv_bonus_challenge( "sv_bonus_challenge", "0", FCVAR_REPLICATED, "Set to values other than 0 to select a bonus map challenge type." );
|
||||
|
||||
ConVar sv_chat_bucket_size_tier1( "sv_chat_bucket_size_tier1", "4", FCVAR_NONE, "The maxmimum size of the short term chat msg bucket." );
|
||||
ConVar sv_chat_bucket_size_tier1( "sv_chat_bucket_size_tier1", "4", FCVAR_NONE, "The maximum size of the short term chat msg bucket." );
|
||||
ConVar sv_chat_seconds_per_msg_tier1( "sv_chat_seconds_per_msg_tier1", "3", FCVAR_NONE, "The number of seconds to accrue an additional short term chat msg." );
|
||||
ConVar sv_chat_bucket_size_tier2( "sv_chat_bucket_size_tier2", "30", FCVAR_NONE, "The maxmimum size of the long term chat msg bucket." );
|
||||
ConVar sv_chat_bucket_size_tier2( "sv_chat_bucket_size_tier2", "30", FCVAR_NONE, "The maximum size of the long term chat msg bucket." );
|
||||
ConVar sv_chat_seconds_per_msg_tier2( "sv_chat_seconds_per_msg_tier2", "10", FCVAR_NONE, "The number of seconds to accrue an additional long term chat msg." );
|
||||
|
||||
static ConVar sv_maxusrcmdprocessticks( "sv_maxusrcmdprocessticks", "24", FCVAR_NOTIFY, "Maximum number of client-issued usrcmd ticks that can be replayed in packet loss conditions, 0 to allow no restrictions" );
|
||||
|
@ -8101,13 +8101,6 @@ void CMovementSpeedMod::InputSpeedMod(inputdata_t &data)
|
|||
}
|
||||
}
|
||||
|
||||
void SendProxy_CropFlagsToPlayerFlagBitsLength( const SendProp* pProp, const void* pStruct, const void* pVarData, DVariant* pOut, int iElement, int objectID )
|
||||
{
|
||||
int mask = ( 1 << PLAYER_FLAG_BITS ) - 1;
|
||||
int data = *( int* )pVarData;
|
||||
|
||||
pOut->m_Int = ( data & mask );
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------------- //
|
||||
// SendTable for CPlayerState.
|
||||
|
@ -8187,7 +8180,7 @@ void SendProxy_CropFlagsToPlayerFlagBitsLength( const SendProp* pProp, const voi
|
|||
SendPropInt (SENDINFO(m_iBonusProgress), 15 ),
|
||||
SendPropInt (SENDINFO(m_iBonusChallenge), 4 ),
|
||||
SendPropFloat (SENDINFO(m_flMaxspeed), 12, SPROP_ROUNDDOWN, 0.0f, 2048.0f ), // CL
|
||||
SendPropInt (SENDINFO(m_fFlags), PLAYER_FLAG_BITS, SPROP_UNSIGNED|SPROP_CHANGES_OFTEN, SendProxy_CropFlagsToPlayerFlagBitsLength ),
|
||||
SendPropInt (SENDINFO(m_fFlags), 0, SPROP_UNSIGNED|SPROP_CHANGES_OFTEN ),
|
||||
SendPropInt (SENDINFO(m_iObserverMode), 3, SPROP_UNSIGNED ),
|
||||
SendPropEHandle (SENDINFO(m_hObserverTarget) ),
|
||||
SendPropInt (SENDINFO(m_iFOV), 8, SPROP_UNSIGNED ),
|
||||
|
|
|
@ -1156,7 +1156,8 @@ int CTeamControlPointMaster::GetNumPointsOwnedByTeam( int iTeam )
|
|||
//-----------------------------------------------------------------------------
|
||||
int CTeamControlPointMaster::CalcNumRoundsRemaining( int iTeam )
|
||||
{
|
||||
if (m_ControlPointRounds.Count() == 0) return 0;
|
||||
if ( m_ControlPointRounds.IsEmpty() )
|
||||
return 0;
|
||||
|
||||
// To determine how many rounds remain for a given team if it consistently wins mini-rounds, we have to
|
||||
// simulate forward each mini-round and track the control point ownership that would result
|
||||
|
|
|
@ -70,7 +70,14 @@ ActionResult< CTFBot > CTFBotSpyHide::Update( CTFBot *me, float interval )
|
|||
if ( m_talkTimer.IsElapsed() )
|
||||
{
|
||||
m_talkTimer.Start( RandomFloat( 5.0f, 10.0f ) );
|
||||
me->EmitSound( "Spy.TeaseVictim" );
|
||||
if ( TFGameRules()->IsMannVsMachineMode() && me->GetTeamNumber() == TF_TEAM_PVE_INVADERS )
|
||||
{
|
||||
me->EmitSound( "Spy.MVM_TeaseVictim" );
|
||||
}
|
||||
else
|
||||
{
|
||||
me->EmitSound( "Spy.TeaseVictim" );
|
||||
}
|
||||
}
|
||||
|
||||
if ( m_isAtGoal )
|
||||
|
|
|
@ -126,7 +126,6 @@
|
|||
#include "tf_revive.h"
|
||||
#include "tf_logic_halloween_2014.h"
|
||||
#include "tf_logic_player_destruction.h"
|
||||
#include "tf_weapon_rocketpack.h"
|
||||
#include "tf_weapon_slap.h"
|
||||
#include "func_croc.h"
|
||||
#include "tf_weapon_bonesaw.h"
|
||||
|
@ -997,7 +996,6 @@ CTFPlayer::CTFPlayer()
|
|||
m_flNextChangeClassTime = 0.0f;
|
||||
m_flNextChangeTeamTime = 0.0f;
|
||||
|
||||
m_bScattergunJump = false;
|
||||
m_iOldStunFlags = 0;
|
||||
m_iLastWeaponSlot = 1;
|
||||
m_iNumberofDominations = 0;
|
||||
|
@ -1453,35 +1451,6 @@ void CTFPlayer::TFPlayerThink()
|
|||
else
|
||||
{
|
||||
m_iLeftGroundHealth = -1;
|
||||
if ( GetFlags() & FL_ONGROUND )
|
||||
{
|
||||
// Airborne conditions end on ground contact
|
||||
m_Shared.RemoveCond( TF_COND_KNOCKED_INTO_AIR );
|
||||
m_Shared.RemoveCond( TF_COND_AIR_CURRENT );
|
||||
|
||||
if ( m_Shared.InCond( TF_COND_ROCKETPACK ) )
|
||||
{
|
||||
// Make sure we're still not dealing with launch, where it's possible
|
||||
// to hit your head and fall to the ground before the second stage.
|
||||
CTFWeaponBase *pRocketPack = Weapon_OwnsThisID( TF_WEAPON_ROCKETPACK );
|
||||
if ( pRocketPack )
|
||||
{
|
||||
if ( gpGlobals->curtime > ( static_cast< CTFRocketPack* >( pRocketPack )->GetRefireTime() ) )
|
||||
{
|
||||
EmitSound( "Weapon_RocketPack.BoostersShutdown" );
|
||||
EmitSound( "Weapon_RocketPack.Land" );
|
||||
m_Shared.RemoveCond( TF_COND_ROCKETPACK );
|
||||
|
||||
IGameEvent *pEvent = gameeventmanager->CreateEvent( "rocketpack_landed" );
|
||||
if ( pEvent )
|
||||
{
|
||||
pEvent->SetInt( "userid", GetUserID() );
|
||||
gameeventmanager->FireEvent( pEvent );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( m_iBlastJumpState )
|
||||
{
|
||||
|
@ -2833,6 +2802,7 @@ void CTFPlayer::PrecacheMvM()
|
|||
PrecacheScriptSound( "MVM.DeployBombGiant" );
|
||||
PrecacheScriptSound( "Weapon_Upgrade.ExplosiveHeadshot" );
|
||||
PrecacheScriptSound( "Spy.MVM_Chuckle" );
|
||||
PrecacheScriptSound( "Spy.MVM_TeaseVictim" );
|
||||
PrecacheScriptSound( "MVM.Robot_Engineer_Spawn" );
|
||||
PrecacheScriptSound( "MVM.Robot_Teleporter_Deliver" );
|
||||
PrecacheScriptSound( "MVM.MoneyPickup" );
|
||||
|
@ -3781,7 +3751,6 @@ void CTFPlayer::Spawn()
|
|||
|
||||
m_Shared.SetFeignDeathReady( false );
|
||||
|
||||
m_bScattergunJump = false;
|
||||
m_iOldStunFlags = 0;
|
||||
|
||||
m_flAccumulatedHealthRegen = 0;
|
||||
|
|
|
@ -938,7 +938,6 @@ public:
|
|||
|
||||
bool m_bSuicideExplode;
|
||||
|
||||
bool m_bScattergunJump;
|
||||
int m_iOldStunFlags;
|
||||
|
||||
bool m_bFlipViewModels;
|
||||
|
|
|
@ -54,8 +54,6 @@ BEGIN_DATADESC( CBaseGrenade )
|
|||
|
||||
END_DATADESC()
|
||||
|
||||
void SendProxy_CropFlagsToPlayerFlagBitsLength( const SendProp *pProp, const void *pStruct, const void *pVarData, DVariant *pOut, int iElement, int objectID);
|
||||
|
||||
#endif
|
||||
|
||||
IMPLEMENT_NETWORKCLASS_ALIASED( BaseGrenade, DT_BaseGrenade )
|
||||
|
@ -70,7 +68,7 @@ BEGIN_NETWORK_TABLE( CBaseGrenade, DT_BaseGrenade )
|
|||
|
||||
SendPropVector( SENDINFO( m_vecVelocity ), 0, SPROP_NOSCALE ),
|
||||
// HACK: Use same flag bits as player for now
|
||||
SendPropInt ( SENDINFO(m_fFlags), PLAYER_FLAG_BITS, SPROP_UNSIGNED, SendProxy_CropFlagsToPlayerFlagBitsLength ),
|
||||
SendPropInt ( SENDINFO(m_fFlags), 0, SPROP_UNSIGNED ),
|
||||
#else
|
||||
RecvPropFloat( RECVINFO( m_flDamage ) ),
|
||||
RecvPropFloat( RECVINFO( m_DmgRadius ) ),
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
|
||||
#ifdef CLIENT_DLL
|
||||
#include "c_hl2mp_player.h"
|
||||
#include <prediction.h>
|
||||
#else
|
||||
#include "hl2mp_player.h"
|
||||
#endif
|
||||
|
@ -133,16 +134,18 @@ void CWeapon357::PrimaryAttack( void )
|
|||
// Fire the bullets, and force the first shot to be perfectly accuracy
|
||||
pPlayer->FireBullets( info );
|
||||
|
||||
#ifdef CLIENT_DLL
|
||||
//Disorient the player
|
||||
QAngle angles = pPlayer->GetLocalAngles();
|
||||
|
||||
angles.x += random->RandomInt( -1, 1 );
|
||||
angles.y += random->RandomInt( -1, 1 );
|
||||
angles.z = 0;
|
||||
|
||||
#ifndef CLIENT_DLL
|
||||
pPlayer->SnapEyeAngles( angles );
|
||||
#endif
|
||||
if ( prediction->IsFirstTimePredicted() )
|
||||
{
|
||||
QAngle angles;
|
||||
engine->GetViewAngles( angles );
|
||||
angles.x += random->RandomInt( -1, 1 );
|
||||
angles.y += random->RandomInt( -1, 1 );
|
||||
angles.z += 0.0f;
|
||||
engine->SetViewAngles( angles );
|
||||
}
|
||||
#endif // CLIENT_DLL
|
||||
|
||||
pPlayer->ViewPunch( QAngle( -8, random->RandomFloat( -2, 2 ), 0 ) );
|
||||
|
||||
|
|
|
@ -2957,9 +2957,9 @@ void CTFGameMovement::SetGroundEntity( trace_t *pm )
|
|||
{
|
||||
m_pTFPlayer->SpeakConceptIfAllowed( MP_CONCEPT_DOUBLE_JUMP, "started_jumping:0" );
|
||||
}
|
||||
m_pTFPlayer->m_Shared.SetWeaponKnockbackID( -1 );
|
||||
m_pTFPlayer->m_bScattergunJump = false;
|
||||
#endif // GAME_DLL
|
||||
m_pTFPlayer->m_Shared.SetWeaponKnockbackID( -1 );
|
||||
m_pTFPlayer->m_Shared.m_bScattergunJump = false;
|
||||
m_pTFPlayer->m_Shared.SetAirDash( 0 );
|
||||
m_pTFPlayer->m_Shared.SetAirDucked( 0 );
|
||||
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
#include "tf_mapinfo.h"
|
||||
#include "tf_dropped_weapon.h"
|
||||
#include "tf_weapon_passtime_gun.h"
|
||||
#include "tf_weapon_rocketpack.h"
|
||||
#include <functional>
|
||||
|
||||
// Client specific.
|
||||
|
@ -471,7 +472,10 @@ BEGIN_PREDICTION_DATA_NO_BASE( CTFPlayerShared )
|
|||
DEFINE_PRED_FIELD( m_bHasPasstimeBall, FIELD_BOOLEAN, FTYPEDESC_INSENDTABLE ),
|
||||
DEFINE_PRED_FIELD( m_bIsTargetedForPasstimePass, FIELD_BOOLEAN, FTYPEDESC_INSENDTABLE ), // does this belong here?
|
||||
DEFINE_PRED_FIELD( m_askForBallTime, FIELD_FLOAT, FTYPEDESC_INSENDTABLE ),
|
||||
DEFINE_PRED_FIELD( m_flHolsterAnimTime, FIELD_FLOAT, FTYPEDESC_INSENDTABLE ),
|
||||
DEFINE_PRED_ARRAY( m_flItemChargeMeter, FIELD_FLOAT, LAST_LOADOUT_SLOT_WITH_CHARGE_METER, FTYPEDESC_INSENDTABLE ),
|
||||
DEFINE_PRED_FIELD( m_iStunIndex, FIELD_INTEGER, FTYPEDESC_INSENDTABLE ),
|
||||
DEFINE_PRED_FIELD( m_bScattergunJump, FIELD_BOOLEAN, 0 ),
|
||||
END_PREDICTION_DATA()
|
||||
|
||||
// Server specific.
|
||||
|
@ -784,6 +788,8 @@ CTFPlayerShared::CTFPlayerShared()
|
|||
m_flPrevInvisibility = 0.f;
|
||||
m_flTmpDamageBonusAmount = 1.0f;
|
||||
|
||||
m_bScattergunJump = false;
|
||||
|
||||
m_bFeignDeathReady = false;
|
||||
|
||||
m_fCloakConsumeRate = tf_spy_cloak_consume_rate.GetFloat();
|
||||
|
@ -1005,7 +1011,6 @@ void CTFPlayerShared::Spawn( void )
|
|||
SetRevengeCrits( 0 );
|
||||
|
||||
m_PlayerStuns.RemoveAll();
|
||||
m_iStunIndex = -1;
|
||||
|
||||
m_iPasstimeThrowAnimState = PASSTIME_THROW_ANIM_NONE;
|
||||
m_bHasPasstimeBall = false;
|
||||
|
@ -1014,6 +1019,7 @@ void CTFPlayerShared::Spawn( void )
|
|||
#else
|
||||
m_bSyncingConditions = false;
|
||||
#endif
|
||||
m_iStunIndex = -1;
|
||||
m_bKingRuneBuffActive = false;
|
||||
|
||||
// Reset our assist here incase something happens before we get killed
|
||||
|
@ -3090,9 +3096,48 @@ void CTFPlayerShared::ConditionThink( void )
|
|||
|
||||
VehicleThink();
|
||||
|
||||
if ( m_pOuter->GetFlags() & FL_ONGROUND && InCond( TF_COND_PARACHUTE_ACTIVE ) )
|
||||
if ( m_pOuter->GetFlags() & FL_ONGROUND )
|
||||
{
|
||||
RemoveCond( TF_COND_PARACHUTE_ACTIVE );
|
||||
// Airborne conditions end on ground contact
|
||||
RemoveCond( TF_COND_KNOCKED_INTO_AIR );
|
||||
RemoveCond( TF_COND_AIR_CURRENT );
|
||||
|
||||
if ( InCond( TF_COND_PARACHUTE_ACTIVE ) )
|
||||
{
|
||||
RemoveCond( TF_COND_PARACHUTE_ACTIVE );
|
||||
}
|
||||
|
||||
if ( InCond( TF_COND_ROCKETPACK ) )
|
||||
{
|
||||
// Make sure we're still not dealing with launch, where it's possible
|
||||
// to hit your head and fall to the ground before the second stage.
|
||||
CTFWeaponBase *pRocketPack = m_pOuter->Weapon_OwnsThisID( TF_WEAPON_ROCKETPACK );
|
||||
if ( pRocketPack )
|
||||
{
|
||||
if ( gpGlobals->curtime > ( static_cast< CTFRocketPack* >( pRocketPack )->GetRefireTime() ) )
|
||||
{
|
||||
#ifdef CLIENT_DLL
|
||||
if ( prediction->IsFirstTimePredicted() )
|
||||
#endif
|
||||
{
|
||||
CPASAttenuationFilter filter( m_pOuter );
|
||||
filter.UsePredictionRules();
|
||||
m_pOuter->EmitSound( filter, m_pOuter->entindex(), "Weapon_RocketPack.BoostersShutdown" );
|
||||
m_pOuter->EmitSound( filter, m_pOuter->entindex(), "Weapon_RocketPack.Land" );
|
||||
}
|
||||
RemoveCond( TF_COND_ROCKETPACK );
|
||||
|
||||
#ifdef GAME_DLL
|
||||
IGameEvent *pEvent = gameeventmanager->CreateEvent( "rocketpack_landed" );
|
||||
if ( pEvent )
|
||||
{
|
||||
pEvent->SetInt( "userid", m_pOuter->GetUserID() );
|
||||
gameeventmanager->FireEvent( pEvent );
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// See if we should be pulsing our radius heal
|
||||
|
@ -7301,6 +7346,8 @@ void CTFPlayerShared::OnRemoveStunned( void )
|
|||
m_iStunFlags = 0;
|
||||
m_hStunner = NULL;
|
||||
|
||||
m_iStunIndex = -1;
|
||||
|
||||
#ifdef CLIENT_DLL
|
||||
if ( m_pOuter->m_pStunnedEffect )
|
||||
{
|
||||
|
@ -7310,7 +7357,6 @@ void CTFPlayerShared::OnRemoveStunned( void )
|
|||
m_pOuter->m_pStunnedEffect = NULL;
|
||||
}
|
||||
#else
|
||||
m_iStunIndex = -1;
|
||||
m_PlayerStuns.RemoveAll();
|
||||
#endif
|
||||
|
||||
|
@ -9624,15 +9670,16 @@ bool CTFPlayerShared::AddToSpyCloakMeter( float val, bool bForce )
|
|||
|
||||
#endif
|
||||
|
||||
#ifdef GAME_DLL
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Stun & Snare Application
|
||||
//-----------------------------------------------------------------------------
|
||||
void CTFPlayerShared::StunPlayer( float flTime, float flReductionAmount, int iStunFlags, CTFPlayer* pAttacker )
|
||||
{
|
||||
#ifdef GAME_DLL
|
||||
// Insanity prevention
|
||||
if ( ( m_PlayerStuns.Count() + 1 ) >= 250 )
|
||||
return;
|
||||
#endif
|
||||
|
||||
if ( InCond( TF_COND_PHASE ) || InCond( TF_COND_PASSTIME_INTERCEPTION ) )
|
||||
return;
|
||||
|
@ -9643,11 +9690,13 @@ void CTFPlayerShared::StunPlayer( float flTime, float flReductionAmount, int iSt
|
|||
if ( InCond( TF_COND_INVULNERABLE_HIDE_UNLESS_DAMAGED ) && !InCond( TF_COND_MVM_BOT_STUN_RADIOWAVE ) )
|
||||
return;
|
||||
|
||||
#ifdef GAME_DLL
|
||||
if ( pAttacker && TFGameRules() && TFGameRules()->IsTruceActive() && pAttacker->IsTruceValidForEnt() )
|
||||
{
|
||||
if ( ( pAttacker->GetTeamNumber() == TF_TEAM_RED ) || ( pAttacker->GetTeamNumber() == TF_TEAM_BLUE ) )
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
float flRemapAmount = RemapValClamped( flReductionAmount, 0.0, 1.0, 0, 255 );
|
||||
|
||||
|
@ -9674,10 +9723,13 @@ void CTFPlayerShared::StunPlayer( float flTime, float flReductionAmount, int iSt
|
|||
}
|
||||
else if ( GetActiveStunInfo() )
|
||||
{
|
||||
#ifdef GAME_DLL
|
||||
// Something yanked our TF_COND_STUNNED in an unexpected way
|
||||
if ( !HushAsserts() )
|
||||
Assert( !"Something yanked out TF_COND_STUNNED." );
|
||||
m_PlayerStuns.RemoveAll();
|
||||
#endif
|
||||
m_iStunIndex = -1;
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -9699,7 +9751,16 @@ void CTFPlayerShared::StunPlayer( float flTime, float flReductionAmount, int iSt
|
|||
// This can happen when stuns use TF_STUN_CONTROLS or TF_STUN_LOSER_STATE.
|
||||
float flOldStun = GetActiveStunInfo() ? GetActiveStunInfo()->flStunAmount : 0.f;
|
||||
|
||||
#ifdef GAME_DLL
|
||||
m_iStunIndex = m_PlayerStuns.AddToTail( stunEvent );
|
||||
#else
|
||||
m_iStunIndex = 0;
|
||||
|
||||
if ( prediction->IsFirstTimePredicted() )
|
||||
{
|
||||
m_ActiveStunInfo = stunEvent;
|
||||
}
|
||||
#endif
|
||||
|
||||
if ( flOldStun > flRemapAmount )
|
||||
{
|
||||
|
@ -9709,10 +9770,18 @@ void CTFPlayerShared::StunPlayer( float flTime, float flReductionAmount, int iSt
|
|||
else
|
||||
{
|
||||
// Done for now
|
||||
#ifdef GAME_DLL
|
||||
m_PlayerStuns.AddToTail( stunEvent );
|
||||
#else
|
||||
if ( prediction->IsFirstTimePredicted() )
|
||||
{
|
||||
m_ActiveStunInfo = stunEvent;
|
||||
}
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef GAME_DLL
|
||||
// Add in extra time when TF_STUN_CONTROLS
|
||||
if ( GetActiveStunInfo()->iStunFlags & TF_STUN_CONTROLS )
|
||||
{
|
||||
|
@ -9766,10 +9835,10 @@ void CTFPlayerShared::StunPlayer( float flTime, float flReductionAmount, int iSt
|
|||
m_pOuter->ClearExpression();
|
||||
m_pOuter->ClearWeaponFireScene();
|
||||
}
|
||||
#endif
|
||||
|
||||
AddCond( TF_COND_STUNNED, -1.f, pAttacker );
|
||||
}
|
||||
#endif // GAME_DLL
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Returns the intensity of the current stun effect, if we have the type of stun indicated.
|
||||
|
|
|
@ -560,9 +560,7 @@ public:
|
|||
|
||||
// Stuns
|
||||
stun_struct_t *GetActiveStunInfo( void ) const;
|
||||
#ifdef GAME_DLL
|
||||
void StunPlayer( float flTime, float flReductionAmount, int iStunFlags = TF_STUN_MOVEMENT, CTFPlayer* pAttacker = NULL );
|
||||
#endif // GAME_DLL
|
||||
float GetAmountStunned( int iStunFlags );
|
||||
bool IsLoserStateStunned( void ) const;
|
||||
bool IsControlStunned( void );
|
||||
|
@ -1218,6 +1216,8 @@ private:
|
|||
#endif
|
||||
|
||||
public:
|
||||
bool m_bScattergunJump;
|
||||
|
||||
float m_flStunFade;
|
||||
float m_flStunEnd;
|
||||
float m_flStunMid;
|
||||
|
|
|
@ -1144,7 +1144,7 @@ protected:
|
|||
|
||||
int nNumJumps = pNonConstPlayer->GetGroundEntity() == NULL ? 1 : 0;
|
||||
nNumJumps += pPlayer->m_Shared.GetAirDash();
|
||||
nNumJumps += pPlayer->m_bScattergunJump;
|
||||
nNumJumps += pPlayer->m_Shared.m_bScattergunJump;
|
||||
|
||||
if ( m_eJumpingState == JUMPING_STATE_IS_NOT_JUMPING )
|
||||
{
|
||||
|
@ -3027,7 +3027,7 @@ bool CTFJumpStateQuestModifier::BPassesModifier( const CTFPlayer *pOwner, Invali
|
|||
#else
|
||||
int nNumJumps = const_cast< CTFPlayer* >( pOwner )->GetGroundEntity() == NULL ? 1 : 0;
|
||||
nNumJumps += pOwner->m_Shared.GetAirDash();
|
||||
nNumJumps += pOwner->m_bScattergunJump;
|
||||
nNumJumps += pOwner->m_Shared.m_bScattergunJump;
|
||||
|
||||
// If we want them on the ground, make sure they're on the ground
|
||||
if ( m_nJumpCount == 0 )
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
#ifdef CLIENT_DLL
|
||||
#include "c_tf_player.h"
|
||||
#include "c_rope.h"
|
||||
#include "prediction.h"
|
||||
// Server specific.
|
||||
#else
|
||||
#include "tf_player.h"
|
||||
|
@ -47,7 +48,10 @@ END_NETWORK_TABLE()
|
|||
#ifdef CLIENT_DLL
|
||||
BEGIN_PREDICTION_DATA( CTFRocketPack )
|
||||
DEFINE_PRED_FIELD( m_flInitLaunchTime, FIELD_FLOAT, FTYPEDESC_INSENDTABLE ),
|
||||
DEFINE_PRED_FIELD( m_flLaunchTime, FIELD_FLOAT, FTYPEDESC_INSENDTABLE ),
|
||||
DEFINE_PRED_FIELD( m_flToggleEndTime, FIELD_FLOAT, FTYPEDESC_INSENDTABLE ),
|
||||
DEFINE_PRED_FIELD( m_flRefireTime, FIELD_FLOAT, 0 ),
|
||||
DEFINE_PRED_FIELD( m_bLaunchedFromGround, FIELD_BOOLEAN, 0 ),
|
||||
END_PREDICTION_DATA()
|
||||
#endif // CLIENT_DLL
|
||||
|
||||
|
@ -211,10 +215,13 @@ bool CTFRocketPack::InitiateLaunch( void )
|
|||
CTFPlayer *pOwner = GetTFPlayerOwner();
|
||||
if ( !pOwner->m_Shared.IsRocketPackReady() )
|
||||
{
|
||||
#ifdef GAME_DLL
|
||||
CPVSFilter filter( WorldSpaceCenter() );
|
||||
pOwner->EmitSound( filter, entindex(), "Weapon_RocketPack.BoostersNotReady" );
|
||||
#endif // GAME_DLL
|
||||
// note: this is never reached
|
||||
#ifdef CLIENT_DLL
|
||||
if ( prediction->IsFirstTimePredicted() )
|
||||
{
|
||||
pOwner->EmitSound( "Weapon_RocketPack.BoostersNotReady" );
|
||||
}
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -224,16 +231,18 @@ bool CTFRocketPack::InitiateLaunch( void )
|
|||
return false;
|
||||
}
|
||||
|
||||
#ifdef GAME_DLL
|
||||
if ( pOwner->m_Shared.IsLoser() )
|
||||
#ifdef CLIENT_DLL
|
||||
if ( prediction->IsFirstTimePredicted() )
|
||||
#endif
|
||||
{
|
||||
pOwner->EmitSound( "Weapon_RocketPack.BoostersNotReady" );
|
||||
CPASAttenuationFilter filter( pOwner );
|
||||
filter.UsePredictionRules();
|
||||
pOwner->EmitSound(
|
||||
filter,
|
||||
entindex(),
|
||||
pOwner->m_Shared.IsLoser() ? "Weapon_RocketPack.BoostersNotReady" : "Weapon_RocketPack.BoostersCharge"
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
pOwner->EmitSound( "Weapon_RocketPack.BoostersCharge" );
|
||||
}
|
||||
#endif // GAME_DLL
|
||||
|
||||
m_flInitLaunchTime = gpGlobals->curtime;
|
||||
|
||||
|
@ -369,7 +378,6 @@ bool CTFRocketPack::ShouldDraw()
|
|||
|
||||
#endif // CLIENT_DLL
|
||||
|
||||
#ifdef GAME_DLL
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -384,7 +392,7 @@ Vector CTFRocketPack::CalcRocketForceFromPlayer( CTFPlayer *pPlayer )
|
|||
const float flVertPushScale = ( bOnGround ) ? 0.7f : 0.25f; // Less vertical force while airborne
|
||||
|
||||
Vector vecForward, vecRight;
|
||||
QAngle angAim = ( bOnGround ) ? pPlayer->GetAbsAngles() : pPlayer->EyeAngles();
|
||||
QAngle angAim = pPlayer->EyeAngles();
|
||||
AngleVectors( angAim, &vecForward, &vecRight, NULL );
|
||||
bool bNone = !( pPlayer->m_nButtons & IN_FORWARD ) &&
|
||||
!( pPlayer->m_nButtons & IN_BACK ) /* &&
|
||||
|
@ -468,7 +476,6 @@ void CTFRocketPack::RocketLaunchPlayer( CTFPlayer *pPlayer, const Vector& vecFor
|
|||
|
||||
pPlayer->ApplyAbsVelocityImpulse( vecForce );
|
||||
}
|
||||
#endif // GAME_DLL
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
|
@ -482,7 +489,6 @@ bool CTFRocketPack::PreLaunch( void )
|
|||
pOwner->DoAnimationEvent( PLAYERANIMEVENT_CUSTOM, ACT_MP_ATTACK_STAND_PRIMARYFIRE );
|
||||
SendWeaponAnim( ACT_VM_PRIMARYATTACK );
|
||||
|
||||
#ifdef GAME_DLL
|
||||
// Negate any fall
|
||||
Vector vecVel = pOwner->GetAbsVelocity();
|
||||
if ( vecVel.z < 0.f )
|
||||
|
@ -496,14 +502,15 @@ bool CTFRocketPack::PreLaunch( void )
|
|||
pOwner->ApplyAbsVelocityImpulse( vForward );
|
||||
pOwner->m_Shared.AddCond( TF_COND_PARACHUTE_ACTIVE );
|
||||
|
||||
#ifdef GAME_DLL
|
||||
const Vector &vecOrigin = pOwner->GetAbsOrigin();
|
||||
CPVSFilter filter( vecOrigin );
|
||||
TE_TFParticleEffect( filter, 0.f, "heavy_ring_of_fire", vecOrigin, vec3_angle );
|
||||
DispatchParticleEffect( "rocketjump_smoke", PATTACH_POINT_FOLLOW, pOwner, "foot_L" );
|
||||
DispatchParticleEffect( "rocketjump_smoke", PATTACH_POINT_FOLLOW, pOwner, "foot_R" );
|
||||
#endif // GAME_DLL
|
||||
|
||||
m_flLaunchTime = gpGlobals->curtime + tf_rocketpack_launch_delay.GetFloat();
|
||||
#endif // GAME_DLL
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -519,16 +526,20 @@ bool CTFRocketPack::Launch( void )
|
|||
|
||||
pOwner->StopSound( "Weapon_LooseCannon.Charge" );
|
||||
|
||||
#ifdef GAME_DLL
|
||||
m_flLaunchTime = 0.f;
|
||||
pOwner->m_Shared.RemoveCond( TF_COND_PARACHUTE_ACTIVE );
|
||||
|
||||
#ifdef CLIENT_DLL
|
||||
Vector m_vecLaunchDir;
|
||||
#endif
|
||||
// Launch
|
||||
m_vecLaunchDir = CalcRocketForceFromPlayer( pOwner );
|
||||
RocketLaunchPlayer( pOwner, m_vecLaunchDir, false );
|
||||
|
||||
|
||||
|
||||
#ifdef GAME_DLL
|
||||
SetContextThink( &CTFRocketPack::PassengerDelayLaunchThink, gpGlobals->curtime + TF_ROCKETPACK_PASSENGER_DELAY_LAUNCH, "PassengerDelayLaunchThink" );
|
||||
#endif
|
||||
|
||||
m_flRefireTime = gpGlobals->curtime + 0.5f;
|
||||
|
||||
|
@ -536,6 +547,7 @@ bool CTFRocketPack::Launch( void )
|
|||
pOwner->m_Shared.SetRocketPackCharge( pOwner->m_Shared.GetRocketPackCharge() - tf_rocketpack_cost.GetFloat() );
|
||||
}
|
||||
|
||||
#ifdef GAME_DLL
|
||||
// Knock-back nearby enemies
|
||||
float flRadius = 150.f;
|
||||
CUtlVector< CTFPlayer* > vecPushedPlayers;
|
||||
|
@ -594,6 +606,7 @@ bool CTFRocketPack::Launch( void )
|
|||
}
|
||||
|
||||
CPASAttenuationFilter filter( pOwner );
|
||||
filter.UsePredictionRules();
|
||||
pOwner->EmitSound( filter, pOwner->entindex(), "Weapon_RocketPack.BoostersFire" );
|
||||
|
||||
IGameEvent *pEvent = gameeventmanager->CreateEvent( "rocketpack_launch" );
|
||||
|
@ -610,7 +623,12 @@ bool CTFRocketPack::Launch( void )
|
|||
DispatchParticleEffect( ROCKET_PACK_LAUNCH_EFFECT, PATTACH_POINT_FOLLOW, pWearable, "charge_LA" );
|
||||
DispatchParticleEffect( ROCKET_PACK_LAUNCH_EFFECT, PATTACH_POINT_FOLLOW, pWearable, "charge_RA" );
|
||||
}
|
||||
#endif // GAME_DLL
|
||||
#else
|
||||
if ( prediction->IsFirstTimePredicted() )
|
||||
{
|
||||
pOwner->EmitSound( "Weapon_RocketPack.BoostersFire" );
|
||||
}
|
||||
#endif // CLIENT_DLL
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -748,7 +766,7 @@ void CTFRocketPack::ItemPostFrame( void )
|
|||
{
|
||||
ResetTransition();
|
||||
#ifdef CLIENT_DLL
|
||||
if ( pOwner == C_TFPlayer::GetLocalTFPlayer() )
|
||||
if ( pOwner == C_TFPlayer::GetLocalTFPlayer() && prediction->IsFirstTimePredicted() )
|
||||
{
|
||||
pOwner->EmitSound( "Weapon_RocketPack.BoostersReady" );
|
||||
}
|
||||
|
@ -757,7 +775,7 @@ void CTFRocketPack::ItemPostFrame( void )
|
|||
else if ( pOwner->m_afButtonPressed & IN_ATTACK2 )
|
||||
{
|
||||
#ifdef CLIENT_DLL
|
||||
if ( pOwner == C_TFPlayer::GetLocalTFPlayer() )
|
||||
if ( pOwner == C_TFPlayer::GetLocalTFPlayer() && prediction->IsFirstTimePredicted() )
|
||||
{
|
||||
pOwner->EmitSound( "Player.DenyWeaponSelection" );
|
||||
}
|
||||
|
@ -841,14 +859,21 @@ const CEconItemView *CTFRocketPack::GetTauntItem() const
|
|||
//-----------------------------------------------------------------------------
|
||||
bool CTFRocketPack::Deploy( void )
|
||||
{
|
||||
#ifdef GAME_DLL
|
||||
CTFPlayer *pOwner = GetTFPlayerOwner();
|
||||
if ( pOwner )
|
||||
{
|
||||
EmitSound( "Weapon_RocketPack.BoostersExtend" );
|
||||
#ifdef CLIENT_DLL
|
||||
if ( prediction->IsFirstTimePredicted() )
|
||||
#endif
|
||||
{
|
||||
CPASAttenuationFilter filter( pOwner );
|
||||
filter.UsePredictionRules();
|
||||
EmitSound( filter, entindex(), "Weapon_RocketPack.BoostersExtend" );
|
||||
}
|
||||
#ifdef GAME_DLL
|
||||
SetEnabled( true );
|
||||
#endif
|
||||
}
|
||||
#endif // GAME_DLL
|
||||
|
||||
return BaseClass::Deploy();
|
||||
}
|
||||
|
@ -861,14 +886,21 @@ void CTFRocketPack::StartHolsterAnim( void )
|
|||
{
|
||||
BaseClass::StartHolsterAnim();
|
||||
|
||||
#ifdef GAME_DLL
|
||||
CTFPlayer *pOwner = GetTFPlayerOwner();
|
||||
if ( pOwner )
|
||||
{
|
||||
EmitSound( "Weapon_RocketPack.BoostersRetract" );
|
||||
#ifdef CLIENT_DLL
|
||||
if ( prediction->IsFirstTimePredicted() )
|
||||
#endif
|
||||
{
|
||||
CPASAttenuationFilter filter( pOwner );
|
||||
filter.UsePredictionRules();
|
||||
EmitSound( filter, entindex(), "Weapon_RocketPack.BoostersRetract" );
|
||||
}
|
||||
#ifdef GAME_DLL
|
||||
SetEnabled( false );
|
||||
#endif
|
||||
}
|
||||
#endif // GAME_DLL
|
||||
}
|
||||
|
||||
|
||||
|
@ -890,7 +922,7 @@ void CTFRocketPack::OnResourceMeterFilled()
|
|||
{
|
||||
#ifdef CLIENT_DLL
|
||||
CBasePlayer *pPlayer = GetPlayerOwner();
|
||||
if ( pPlayer->IsLocalPlayer() )
|
||||
if ( pPlayer->IsLocalPlayer() && prediction->IsFirstTimePredicted() )
|
||||
{
|
||||
pPlayer->EmitSound( "TFPlayer.ReCharged" );
|
||||
}
|
||||
|
|
|
@ -71,14 +71,14 @@ private:
|
|||
bool IsTransitionCompleted( void ) const;
|
||||
void WaitToLaunch( void );
|
||||
|
||||
void RocketLaunchPlayer( CTFPlayer *pPlayer, const Vector& vecForce, bool bIsPassenger );
|
||||
Vector CalcRocketForceFromPlayer( CTFPlayer *pPlayer );
|
||||
#ifdef GAME_DLL
|
||||
void SetEnabled( bool bEnabled );
|
||||
void PassengerDelayLaunchThink( void );
|
||||
void RocketLaunchPlayer( CTFPlayer *pPlayer, const Vector& vecForce, bool bIsPassenger );
|
||||
Vector CalcRocketForceFromPlayer( CTFPlayer *pPlayer );
|
||||
#else
|
||||
void CleanupParticles( void );
|
||||
#endif // GAME_DLL
|
||||
#endif // CLIENT_DLL
|
||||
|
||||
CNetworkVar( float, m_flInitLaunchTime );
|
||||
CNetworkVar( float, m_flLaunchTime );
|
||||
|
|
|
@ -316,7 +316,6 @@ extern float AirBurstDamageForce( const Vector &size, float damage, float scale
|
|||
//-----------------------------------------------------------------------------
|
||||
void CTFScatterGun::FireBullet( CTFPlayer *pPlayer )
|
||||
{
|
||||
#ifndef CLIENT_DLL
|
||||
if ( HasKnockback() )
|
||||
{
|
||||
// Perform some knock back.
|
||||
|
@ -329,9 +328,9 @@ void CTFScatterGun::FireBullet( CTFPlayer *pPlayer )
|
|||
return;
|
||||
|
||||
// Knock the firer back!
|
||||
if ( !(pOwner->GetFlags() & FL_ONGROUND) && !pPlayer->m_bScattergunJump )
|
||||
if ( !(pOwner->GetFlags() & FL_ONGROUND) && !pPlayer->m_Shared.m_bScattergunJump )
|
||||
{
|
||||
pPlayer->m_bScattergunJump = true;
|
||||
pPlayer->m_Shared.m_bScattergunJump = true;
|
||||
|
||||
pOwner->m_Shared.StunPlayer( 0.3f, 1.f, TF_STUN_MOVEMENT | TF_STUN_MOVEMENT_FORWARD_ONLY );
|
||||
|
||||
|
@ -341,15 +340,15 @@ void CTFScatterGun::FireBullet( CTFPlayer *pPlayer )
|
|||
AngleVectors( pOwner->EyeAngles(), &vecForward );
|
||||
Vector vecForce = vecForward * -flForce;
|
||||
|
||||
EntityMatrix mtxPlayer;
|
||||
mtxPlayer.InitFromEntity( pOwner );
|
||||
VMatrix mtxPlayer;
|
||||
mtxPlayer.SetupMatrixOrgAngles( pOwner->GetAbsOrigin(), pOwner->EyeAngles() );
|
||||
Vector vecAbsVelocity = pOwner->GetAbsVelocity();
|
||||
Vector vecAbsVelocityAsPoint = vecAbsVelocity + pOwner->GetAbsOrigin();
|
||||
Vector vecLocalVelocity = mtxPlayer.WorldToLocal( vecAbsVelocityAsPoint );
|
||||
Vector vecLocalVelocity = mtxPlayer.VMul4x3Transpose( vecAbsVelocityAsPoint );
|
||||
|
||||
vecLocalVelocity.x = -300;
|
||||
|
||||
vecAbsVelocityAsPoint = mtxPlayer.LocalToWorld( vecLocalVelocity );
|
||||
vecAbsVelocityAsPoint = mtxPlayer.VMul4x3( vecLocalVelocity );
|
||||
vecAbsVelocity = vecAbsVelocityAsPoint - pOwner->GetAbsOrigin();
|
||||
pOwner->SetAbsVelocity( vecAbsVelocity );
|
||||
|
||||
|
@ -360,7 +359,6 @@ void CTFScatterGun::FireBullet( CTFPlayer *pPlayer )
|
|||
pOwner->RemoveFlag( FL_ONGROUND );
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
BaseClass::FireBullet( pPlayer );
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
//
|
||||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
#include "afxres.h"
|
||||
#include "winres.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
@ -43,7 +43,7 @@ END
|
|||
|
||||
2 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"#include ""afxres.h""\r\n"
|
||||
"#include ""winres.h""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
//
|
||||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
#include "afxres.h"
|
||||
#include "winres.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
@ -43,7 +43,7 @@ END
|
|||
|
||||
2 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"#include ""afxres.h""\r\n"
|
||||
"#include ""winres.h""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
|
|
|
@ -155,7 +155,7 @@ float4 main( PS_INPUT i ) : COLOR
|
|||
if( bFlashlight )
|
||||
{
|
||||
float3 worldSpaceNormal;
|
||||
// Make the unbumped version not so fucking stupid and not need tangentSpaceTranspose you knob.
|
||||
// Make the unbumped version not need tangentSpaceTranspose
|
||||
worldSpaceNormal = mul( normal, i.tangentSpaceTranspose );
|
||||
|
||||
int nShadowSampleLevel = 0;
|
||||
|
|
|
@ -41,7 +41,11 @@ protected:
|
|||
virtual void PerformLayout();
|
||||
virtual void Paint();
|
||||
MESSAGE_FUNC( OnMenuClose, "MenuClose" );
|
||||
MESSAGE_FUNC_INT( OnCursorEnteredMenuButton, "CursorEnteredMenuButton", VPanel);
|
||||
#ifdef PLATFORM_64BITS
|
||||
MESSAGE_FUNC_PTR( OnCursorEnteredMenuButton, "CursorEnteredMenuButton", VPanel );
|
||||
#else
|
||||
MESSAGE_FUNC_INT( OnCursorEnteredMenuButton, "CursorEnteredMenuButton", VPanel );
|
||||
#endif
|
||||
|
||||
private:
|
||||
CUtlVector<MenuButton *> m_pMenuButtons;
|
||||
|
|
|
@ -221,7 +221,11 @@ void MenuBar::OnMenuClose()
|
|||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Message map
|
||||
//-----------------------------------------------------------------------------
|
||||
#ifdef PLATFORM_64BITS
|
||||
void MenuBar::OnCursorEnteredMenuButton(vgui::Panel* VPanel)
|
||||
#else
|
||||
void MenuBar::OnCursorEnteredMenuButton(int VPanel)
|
||||
#endif
|
||||
{
|
||||
VPANEL menuButton = (VPANEL)VPanel;
|
||||
// see if we had a menu open
|
||||
|
|
|
@ -238,7 +238,11 @@ void MenuButton::OnCursorEntered()
|
|||
// forward the message on to the parent of this menu.
|
||||
KeyValues *msg = new KeyValues ("CursorEnteredMenuButton");
|
||||
// tell the parent this menuitem is the one that was entered so it can open the menu if it wants
|
||||
#ifdef PLATFORM_64BITS
|
||||
msg->SetPtr("VPanel", (void*)GetVPanel());
|
||||
#else
|
||||
msg->SetInt("VPanel", GetVPanel());
|
||||
#endif
|
||||
ivgui()->PostMessage(GetVParent(), msg, NULL);
|
||||
}
|
||||
|
||||
|
|
|
@ -1022,11 +1022,11 @@ void PropertySheet::PerformLayout()
|
|||
|
||||
if(_showTabs)
|
||||
{
|
||||
_activePage->SetBounds(0, tabHeight, wide, tall - tabHeight);
|
||||
_activePage->SetBounds(0, tabHeight + m_iPageYOffset, wide, tall - tabHeight);
|
||||
}
|
||||
else
|
||||
{
|
||||
_activePage->SetBounds(0, 0, wide, tall );
|
||||
_activePage->SetBounds(0, m_iPageYOffset, wide, tall );
|
||||
}
|
||||
_activePage->InvalidateLayout();
|
||||
}
|
||||
|
@ -1060,11 +1060,11 @@ void PropertySheet::PerformLayout()
|
|||
if (m_PageTabs[i] == _activeTab)
|
||||
{
|
||||
// active tab is taller
|
||||
_activeTab->SetBounds(xtab, 2, width, tabHeight);
|
||||
_activeTab->SetBounds(xtab, 2 + m_iPageYOffset, width, tabHeight);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_PageTabs[i]->SetBounds(xtab, 4, width, tabHeight - 2);
|
||||
m_PageTabs[i]->SetBounds(xtab, 4 + m_iPageYOffset, width, tabHeight - 2);
|
||||
}
|
||||
m_PageTabs[i]->SetVisible(true);
|
||||
xtab += (width + 1) + m_iTabXDelta;
|
||||
|
|
Loading…
Reference in a new issue