public override void Update(float Time)
{
switch (state)
{
case State.Ground:
switch (aiState)
{
case AiState.Panic:
GroundAnimation.Update(Time);
Move(Time);
break;
case AiState.Running:
GroundAnimation.Update(Time);
Move(Time);
break;
case AiState.Idle:
if (megatile.level.Tornado != null)
{
float distanceFromEdgeOfTornado = (megatile.level.Tornado.Position - this.bounds.Center).Length();
if (distanceFromEdgeOfTornado < this.megatile.level.Tornado.Radius + 32*Math.Sqrt(this.megatile.level.Tornado.Radius)) //Distance we can see the tornado
{
aiState = AiState.Running;
}
}
break;
}
break;
case State.Flying:
TornadoAnimation.Update(Time);
drawAngle += 0.05f + Time * timeScaleFactor * updateErrorAngle(0.1f, 0.3f);
if (drawAngle > 2 * Math.PI)
{
drawAngle = 0;
}
Move(Time); //Performs vector math to circle around tornado
break;
case State.Exploding:
ExplodeAnimation.Update(Time);
explodeWait += Time;
if (explodeWait > staytime)
{
requestRemoveTornado = true;
}
break;
case State.Stump:
StumpAnimation.Update(Time);
break;
}
}