123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- #include "../idlib/precompiled.h"
- #pragma hdrstop
- #include "Game_local.h"
- const idEventDef EV_ButtonSwitcher_activate( "buttonswitcheractivate", "f" );
- CLASS_DECLARATION( idAnimated, idButtonSwitcher )
- EVENT( EV_ButtonSwitcher_activate, idButtonSwitcher::Event_buttonswitcheractivate)
- END_CLASS
- void idButtonSwitcher::Save( idSaveGame *savefile ) const
- {
- savefile->WriteInt(state);
- savefile->WriteBool(active);
- }
- void idButtonSwitcher::Restore( idRestoreGame *savefile )
- {
- savefile->ReadInt(state);
- savefile->ReadBool(active);
- }
- void idButtonSwitcher::Spawn( void )
- {
- GetPhysics()->SetContents( 0 );
-
- this->noGrab = true;
- this->isFrobbable = false;
- state = 0;
- active = false;
- }
- void idButtonSwitcher::Event_buttonswitcheractivate( int value )
- {
- Event_PlayAnim( "turn", 4);
- GetPhysics()->SetContents( CONTENTS_RENDERMODEL );
- GetPhysics()->SetClipMask( MASK_SOLID | CONTENTS_MOVEABLECLIP );
- this->isFrobbable = true;
- active = true;
- }
- void idButtonSwitcher::OnFrob( idEntity* activator )
- {
- if (!active)
- return;
- StartSound( "snd_press", SND_CHANNEL_BODY, 0, false, NULL );
- if (state == 0)
- {
- state = 1;
- Event_PlayAnim( "_0_to_1", 4);
- CallScript("script1");
- SetSkin(declManager->FindSkin( "skins/button_switcher/skin_1" ));
- }
- else if (state == 1)
- {
- state = 2;
- Event_PlayAnim( "_1_to_2", 4);
- CallScript("script2");
- SetSkin(declManager->FindSkin( "skins/button_switcher/skin_2" ));
- }
- else
- {
- state = 0;
- Event_PlayAnim( "_2_to_0", 4);
- CallScript("script0");
- SetSkin(declManager->FindSkin( "skins/button_switcher/skin" ));
- }
- }
- void idButtonSwitcher::CallScript(const char* name)
- {
- idStr scriptName = spawnArgs.GetString( name );
- if (scriptName.Length() <= 0)
- return;
- const function_t *scriptFunction;
- scriptFunction = gameLocal.program.FindFunction( scriptName );
- if ( !scriptFunction )
- return;
- idThread *thread;
- thread = new idThread( scriptFunction );
- thread->DelayedStart( 0 );
- }
- /*
- void idLever::Think( void )
- {
- UpdateStates();
-
- idAnimatedEntity::Think();
- idAnimatedEntity::Present();
- }*/
|