ef2gamesource/dlls/game/nature.cpp

147 lines
3.1 KiB
C++

//-----------------------------------------------------------------------------
//
// $Logfile:: /EF2/Code/DLLs/game/nature.cpp $
// $Revision:: 9 $
// $Author:: Singlis $
// $Date:: 9/26/03 2:36p $
//
// Copyright (C) 2001 by Ritual Entertainment, Inc.
// All rights reserved.
//
// This source may not be distributed and/or modified without
// expressly written permission by Ritual Entertainment, Inc.
//
//
// DESCRIPTION:
#include "_pch_cpp.h"
#include "nature.h"
/*****************************************************************************/
/*QUAKED func_emitter (0 0.25 0.5) ?
"emitter" - Name of emitter to use.
******************************************************************************/
Event EV_Emitter_EmitterName
(
"emitter",
EV_DEFAULT,
"s",
"name",
"Emitter to use"
);
CLASS_DECLARATION( Entity, Emitter, "func_emitter" )
{
{ &EV_Emitter_EmitterName, &Emitter::EmitterName },
{ NULL, NULL }
};
Emitter::Emitter()
{
edict->s.eType = ET_EMITTER;
}
void Emitter::setEmitter( const str &name )
{
emitterName = name;
edict->s.tag_num = gi.imageindex( emitterName );
}
void Emitter::EmitterName( Event *ev )
{
setEmitter( ev->GetString( 1 ) );
}
/*****************************************************************************/
/*QUAKED func_rain (0 0.25 0.5) ?
This creates a raining effect in the brush
"emitter" - Name of emitter to use for the rain.
******************************************************************************/
CLASS_DECLARATION( Entity, Rain, "func_rain" )
{
{ NULL, NULL }
};
Rain::Rain()
{
if ( LoadingSavegame )
{
// Archive function will setup all necessary data
return;
}
setSolidType( SOLID_NOT );
edict->s.eType = ET_RAIN;
setRainName( "defaultrain" );
}
void Rain::setRainName( const str &name )
{
rainName = name;
edict->s.tag_num = gi.imageindex( rainName );
}
/*****************************************************************************/
/* Plant Puffdaddy */
/*****************************************************************************/
Event EV_PuffDaddy_Idle
(
"idle",
EV_DEFAULT,
NULL,
NULL,
"Animates the puff daddy."
);
CLASS_DECLARATION( Entity, PuffDaddy, "plant_puffdaddy" )
{
{ &EV_Touch, &PuffDaddy::Touch },
{ &EV_PuffDaddy_Idle, &PuffDaddy::Idle },
{ NULL, NULL }
};
void PuffDaddy::Idle( Event *ev )
{
animate->RandomAnimate( "idle" );
}
void PuffDaddy::Touch( Event *ev )
{
Entity *other;
other = ev->GetEntity( 1 );
if ( !other->inheritsFrom( "Sentient" ) )
return;
animate->RandomAnimate( "touch", EV_PuffDaddy_Idle );
//SetFrame( 0 );
SurfaceCommand( "puffdaddy", "+nodraw" );
setSolidType( SOLID_NOT );
}
PuffDaddy::PuffDaddy()
{
animate = new Animate( this );
if ( LoadingSavegame )
{
// Archive function will setup all necessary data
return;
}
setSolidType( SOLID_TRIGGER );
edict->s.eType = ET_MODELANIM;
setModel( "plant_puffdaddy.tik" );
PostEvent( EV_Show, 0.0f );
//showModel();
}