FlxQuake.java :  » Game » pacmandroid » org » flixel » data » Android Open Source

Android Open Source » Game » pacmandroid 
pacmandroid » org » flixel » data » FlxQuake.java
package org.flixel.data;

  import org.flixel.FlxG;
  
  //@desc    This is a special effects utility class to help FlxGame do the 'quake' or screenshake effect
  public class FlxQuake
  {
    protected int _zoom;
    protected float _intensity;
    protected float _length;
    protected float _timer;
    
    public int x;
    public int y;
    
    public FlxQuake(int Zoom)
    {
      _zoom = Zoom;
      reset(0);
    }
    
    //@desc    Reset and trigger this special effect
    //@param  Intensity  Percentage of screen size representing the maximum distance that the screen can move during the 'quake'
    //@param  Duration  The length in seconds that the "quake" should last
    public void reset(float Intensity, float Duration)
    {
      x = 0;
      y = 0;
      _intensity = Intensity;
      if(_intensity == 0)
      {
        _length = 0;
        _timer = 0;
        return;
      }
      _length = Duration;
      _timer = 0.01f;
    }
    
    public void reset(float Intensity)
    {
      reset(Intensity, 0.5f);
    }
    
    //@desc    Updates and/or animates this special effect
    public void update()
    {
      if(_timer > 0)
      {
        _timer += FlxG.elapsed;
        if(_timer > _length)
        {
          _timer = 0;
          x = 0;
          y = 0;
        }
        else
        {
          x = (int) ((Math.random()*_intensity*FlxG.width*2-_intensity*FlxG.width)*_zoom);
          y = (int) ((Math.random()*_intensity*FlxG.height*2-_intensity*FlxG.height)*_zoom);
        }
      }
    }
  }

java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.