Back to project page ssniper-andengine.
The source code is released under:
Apache License
If you think the Android project ssniper-andengine listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package com.cladophora.ssniper.andengine; //from w ww . j a va 2 s . co m import org.andengine.engine.handler.IUpdateHandler; import java.util.Random; public class RandomTimerHandler implements IUpdateHandler { // =========================================================== // Constants // =========================================================== // =========================================================== // Fields // =========================================================== private float mTimerSeconds; private float mTimerSecondsElapsed; private boolean mTimerCallbackTriggered; protected final IRandomTimerCallBack mRandomTimerCallback; private boolean mAutoReset; private float mTimerSecondsMin; private float mTimerSecondsMax; private final Random r = new Random(); // =========================================================== // Constructors // =========================================================== public RandomTimerHandler(final float pTimerSecondsMin, final float pTimerSecondsMax, final boolean pAutoReset, final IRandomTimerCallBack pRandomTimerCallback) { if(pTimerSecondsMin <= 0){ throw new IllegalStateException("pTimerSecondsMin must be > 0!"); } if(pTimerSecondsMax <= 0){ throw new IllegalStateException("pTimerSecondsMax must be > 0!"); } mTimerSecondsMin = pTimerSecondsMin; mTimerSecondsMax = pTimerSecondsMax; mTimerSeconds = pTimerSecondsMin + ((pTimerSecondsMax - pTimerSecondsMin) * r.nextFloat()); //Log.v("com.cladophora.ssniper.andengine.RandomTimerHandler", "generated new mTimerSeconds " + String.valueOf(this.hashCode()) + " " + String.valueOf(this.mTimerSeconds)); mAutoReset = pAutoReset; mRandomTimerCallback = pRandomTimerCallback; } // =========================================================== // Getter & Setter // =========================================================== public boolean isAutoReset() { return this.mAutoReset; } public void setAutoReset(final boolean pAutoReset) { this.mAutoReset = pAutoReset; } public void setTimerSeconds(final float pTimerSeconds) { if(pTimerSeconds <= 0){ throw new IllegalStateException("pTimerSeconds must be > 0!"); } this.mTimerSeconds = pTimerSeconds; } public float getTimerSeconds() { return this.mTimerSeconds; } public float getTimerSecondsElapsed() { return this.mTimerSecondsElapsed; } public boolean isTimerCallbackTriggered() { return this.mTimerCallbackTriggered; } public void setTimerCallbackTriggered(boolean pTimerCallbackTriggered) { this.mTimerCallbackTriggered = pTimerCallbackTriggered; } // =========================================================== // Methods for/from SuperClass/Interfaces // =========================================================== @Override public void onUpdate(final float pSecondsElapsed) { if(this.mAutoReset) { this.mTimerSecondsElapsed += pSecondsElapsed; while(this.mTimerSecondsElapsed >= this.mTimerSeconds) { this.mTimerSecondsElapsed = 0; this.mRandomTimerCallback.onTimePassed(this); //Log.v("com.cladophora.ssniper.RandomTimerHandler.onUpdate()","TimerSeconds reached"); } } else { if(!this.mTimerCallbackTriggered) { this.mTimerSecondsElapsed += pSecondsElapsed; if(this.mTimerSecondsElapsed >= this.mTimerSeconds) { this.mTimerCallbackTriggered = true; this.mRandomTimerCallback.onTimePassed(this); } } } } @Override public void reset() { this.mTimerCallbackTriggered = false; this.mTimerSecondsElapsed = 0; // generate a random Timer value generateRandomTime(); } // =========================================================== // Methods // =========================================================== public float generateRandomTime() { // Sets the RandomTimer seconds to a random number of seconds and returns the value that is set mTimerSeconds = mTimerSecondsMin + ((mTimerSecondsMax - mTimerSecondsMin) * r.nextFloat()); return mTimerSeconds; } public void addTime(final float seconds) { mTimerSeconds = mTimerSeconds + seconds; } // =========================================================== // Inner and Anonymous Classes // =========================================================== }