RuneI
Class Geyser

source: c:\runehov\RuneI\Classes\Geyser.uc
Core.Object
   |
   +--Engine.Actor
      |
      +--Engine.Effects
         |
         +--RuneI.Geyser
Direct Known Subclasses:None

class Geyser
extends Engine.Effects

//============================================================================= // Geyser. //=============================================================================
Variables
 float GStateTime
 ParticleSystem PSSteam
 class SpawnSystem

States
EndEmission, ContinuousEmission, BeginEmission, GeyserDelay

Function Summary
 void PostBeginPlay()
     
// FUNCTIONS ------------------------------------------------------------------


State EndEmission Function Summary


State ContinuousEmission Function Summary


State BeginEmission Function Summary


State GeyserDelay Function Summary



Source Code


00001	//=============================================================================
00002	// Geyser.
00003	//=============================================================================
00004	class Geyser expands Effects;
00005	
00006	//
00007	// To do:
00008	//
00009	// - Add sounds
00010	//
00011	
00012	// EDITABLE INSTANCE VARIABLES ------------------------------------------------
00013	
00014	// INSTANCE VARIABLES ---------------------------------------------------------
00015	
00016	var ParticleSystem PSSteam;
00017	var float GStateTime;
00018	var() class<ParticleSystem>	SpawnSystem;
00019	
00020	// FUNCTIONS ------------------------------------------------------------------
00021	
00022	function PostBeginPlay()
00023	{
00024		Super.PostBeginPlay();
00025	
00026	//	PSSteam = Spawn(class'SteamGeyser');
00027		PSSteam = Spawn(SpawnSystem);
00028		if(PSSteam == None)
00029			return;
00030	//	PSSteam.ParticleCount = 1;
00031		PSSteam.bHidden = true;
00032		PSSteam.AlphaStart = 0;
00033		SoundVolume = 0;
00034	}
00035	
00036	// STATES ---------------------------------------------------------------------
00037	
00038	auto state GeyserDelay
00039	{
00040		event BeginState()
00041		{
00042			if(PSSteam == None)
00043				GotoState('');
00044			PSSteam.bHidden = true;
00045		}
00046	
00047	begin:
00048		Sleep(4+FRand()*4);
00049		GotoState('BeginEmission');
00050	}
00051	
00052	state BeginEmission
00053	{
00054		event BeginState()
00055		{
00056			//slog("BeginEmission");
00057			GStateTime = 0.0;
00058			PSSteam.bHidden = false;
00059		}
00060	
00061		event Tick(float deltaTime)
00062		{
00063			GStateTime += deltaTime;
00064	
00065			PSSteam.ParticleCount = 1+GStateTime*100;
00066			PSSteam.AlphaStart = GStateTime*125;
00067			SoundVolume = Clamp(GStateTime*425, 0, 255);
00068			if(PSSteam.ParticleCount > 59)
00069				GotoState('ContinuousEmission');
00070		}
00071	}
00072	
00073	state ContinuousEmission
00074	{
00075		//event BeginState()
00076		//{
00077		//	slog("ContinuousEmission");
00078		//}
00079	
00080	begin:
00081		Sleep(5+FRand()*6);
00082		GotoState('EndEmission');
00083	}
00084	
00085	state EndEmission
00086	{
00087		event BeginState()
00088		{
00089			//slog("EndEmission");
00090			GStateTime = 0.0;
00091		}
00092	
00093		event Tick(float deltaTime)
00094		{
00095			GStateTime += deltaTime;
00096	
00097			PSSteam.ParticleCount = 60-(GStateTime*20);
00098			PSSteam.AlphaStart = 75-(GStateTime*25);
00099			SoundVolume = Clamp(254 - (GStateTime*85), 0, 255);
00100			if(PSSteam.ParticleCount < 2)
00101			{
00102				PSSteam.AlphaStart = 0;
00103				GotoState('GeyserDelay');
00104			}
00105		}
00106	}
00107	
00108	defaultproperties
00109	{
00110	     bHidden=True
00111	     DrawType=DT_Sprite
00112	     SoundRadius=48
00113	}

End Source Code