mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-09-01 06:59:20 +00:00
upload "kind" alien swarm
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
#include "cbase.h"
|
||||
#include "asw_pickup_money.h"
|
||||
#include "asw_marine.h"
|
||||
#include "Sprite.h"
|
||||
#include "SpriteTrail.h"
|
||||
#include "asw_game_resource.h"
|
||||
|
||||
// memdbgon must be the last include file in a .cpp file!!!
|
||||
#include "tier0/memdbgon.h"
|
||||
|
||||
#define ITEM_PICKUP_BOX_BLOAT 24
|
||||
|
||||
#define MONEY_MODEL "models/swarm/MortarBugProjectile/MortarBugProjectile.mdl"
|
||||
|
||||
IMPLEMENT_SERVERCLASS_ST(CASW_Pickup_Money, DT_ASW_Pickup_Money)
|
||||
END_SEND_TABLE()
|
||||
|
||||
LINK_ENTITY_TO_CLASS( asw_pickup_money, CASW_Pickup_Money );
|
||||
|
||||
PRECACHE_REGISTER( asw_pickup_money );
|
||||
|
||||
ConVar asw_money_friction("asw_money_friction", "-1.0f", FCVAR_CHEAT);
|
||||
ConVar asw_money_gravity("asw_money_gravity", "0.8f", FCVAR_CHEAT);
|
||||
ConVar asw_money_elasticity("asw_money_elasticity", "3.0f", FCVAR_CHEAT);
|
||||
|
||||
CASW_Pickup_Money::CASW_Pickup_Money()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
CASW_Pickup_Money::~CASW_Pickup_Money()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void CASW_Pickup_Money::Spawn( void )
|
||||
{
|
||||
BaseClass::Spawn();
|
||||
|
||||
SetModel( MONEY_MODEL );
|
||||
|
||||
SetMoveType( MOVETYPE_FLYGRAVITY, MOVECOLLIDE_FLY_BOUNCE );
|
||||
|
||||
// This will make them not collide with the player, but will collide
|
||||
// against other items + weapons
|
||||
SetCollisionGroup( COLLISION_GROUP_WEAPON );
|
||||
CollisionProp()->UseTriggerBounds( true, ITEM_PICKUP_BOX_BLOAT );
|
||||
SetTouch(&CASW_Pickup_Money::ItemTouch);
|
||||
|
||||
// Tumble in air
|
||||
QAngle vecAngVelocity( random->RandomFloat ( -100, -500 ), 0, 0 );
|
||||
SetLocalAngularVelocity( vecAngVelocity );
|
||||
|
||||
CreateEffects();
|
||||
|
||||
SetGravity( asw_money_gravity.GetFloat() );
|
||||
SetFriction( asw_money_friction.GetFloat() );
|
||||
SetElasticity( asw_money_elasticity.GetFloat() );
|
||||
}
|
||||
|
||||
void CASW_Pickup_Money::Precache( void )
|
||||
{
|
||||
BaseClass::Precache( );
|
||||
|
||||
PrecacheModel( MONEY_MODEL );
|
||||
PrecacheModel("sprites/redglow1.vmt");
|
||||
PrecacheModel("sprites/bluelaser1.vmt");
|
||||
//PrecacheScriptSound("ASW_Money.Pickup");
|
||||
}
|
||||
|
||||
void CASW_Pickup_Money::ItemTouch( CBaseEntity *pOther )
|
||||
{
|
||||
if ( !pOther || pOther->Classify() != CLASS_ASW_MARINE )
|
||||
return;
|
||||
|
||||
CASW_Marine *pMarine = CASW_Marine::AsMarine( pOther );
|
||||
if ( !pMarine )
|
||||
return;
|
||||
|
||||
// Disappear with a satisfying sound and increment the player's money
|
||||
//EmitSound("ASW_Money.Pickup");
|
||||
if ( ASWGameResource() )
|
||||
{
|
||||
ASWGameResource()->IncrementMoney( 10 );
|
||||
}
|
||||
|
||||
UTIL_Remove( this );
|
||||
}
|
||||
|
||||
void CASW_Pickup_Money::CreateEffects()
|
||||
{
|
||||
// Start up the eye glow
|
||||
m_pMainGlow = CSprite::SpriteCreate( "sprites/redglow1.vmt", GetLocalOrigin(), false );
|
||||
|
||||
int nAttachment = LookupAttachment( "fuse" );
|
||||
|
||||
if ( m_pMainGlow != NULL )
|
||||
{
|
||||
m_pMainGlow->FollowEntity( this );
|
||||
m_pMainGlow->SetAttachment( this, nAttachment );
|
||||
m_pMainGlow->SetTransparency( kRenderGlow, 255, 255, 255, 200, kRenderFxNoDissipation );
|
||||
m_pMainGlow->SetScale( 0.6f );
|
||||
m_pMainGlow->SetGlowProxySize( 4.0f );
|
||||
}
|
||||
|
||||
// Start up the eye trail
|
||||
m_pGlowTrail = CSpriteTrail::SpriteTrailCreate( "sprites/bluelaser1.vmt", GetLocalOrigin(), false );
|
||||
|
||||
if ( m_pGlowTrail != NULL )
|
||||
{
|
||||
m_pGlowTrail->FollowEntity( this );
|
||||
m_pGlowTrail->SetAttachment( this, nAttachment );
|
||||
m_pGlowTrail->SetTransparency( kRenderTransAdd, 255, 0, 0, 255, kRenderFxNone );
|
||||
m_pGlowTrail->SetStartWidth( 8.0f );
|
||||
m_pGlowTrail->SetEndWidth( 1.0f );
|
||||
m_pGlowTrail->SetLifeTime( 0.5f );
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user