package org.andengine.ui.activity;
import org.andengine.entity.scene.Scene;
import org.andengine.util.ActivityUtils;
import org.andengine.util.call.Callback;
import org.andengine.util.progress.IProgressListener;
import org.andengine.util.progress.ProgressCallable;
/**
* (c) Zynga 2011
*
* @author Nicolas Gramlich <ngramlich@zynga.com>
* @since 01:24:18 - 03.12.2011
*/
public abstract class SimpleAsyncGameActivity extends BaseGameActivity {
// ===========================================================
// Constants
// ===========================================================
// ===========================================================
// Fields
// ===========================================================
// ===========================================================
// Constructors
// ===========================================================
// ===========================================================
// Getter & Setter
// ===========================================================
// ===========================================================
// Methods for/from SuperClass/Interfaces
// ===========================================================
public abstract void onCreateResourcesAsync(final IProgressListener pProgressListener) throws Exception; // TODO Rename
public abstract Scene onCreateSceneAsync(final IProgressListener pProgressListener) throws Exception; // TODO Rename
public abstract void onPopulateSceneAsync(final Scene pScene, IProgressListener pProgressListener) throws Exception; // TODO Rename
@Override
public void onCreateResources(final OnCreateResourcesCallback pOnCreateResourcesCallback) {
this.runOnUiThread(new Runnable() {
@Override
public void run() {
ActivityUtils.doProgressAsync(SimpleAsyncGameActivity.this, "Loading Resources...", android.R.drawable.ic_menu_rotate, new ProgressCallable<Void>() {
@Override
public Void call(final IProgressListener pProgressListener) throws Exception {
SimpleAsyncGameActivity.this.onCreateResourcesAsync(pProgressListener);
pProgressListener.onProgressChanged(100);
pOnCreateResourcesCallback.onCreateResourcesFinished();
return null;
}
}, new Callback<Void>() {
@Override
public void onCallback(final Void pCallbackValue) {
/* Nothing. */
}
});
}
});
}
@Override
public void onCreateScene(final OnCreateSceneCallback pOnCreateSceneCallback) {
this.runOnUiThread(new Runnable() {
@Override
public void run() {
ActivityUtils.doProgressAsync(SimpleAsyncGameActivity.this, "Loading Scene...", android.R.drawable.ic_menu_rotate, new ProgressCallable<Void>() {
@Override
public Void call(final IProgressListener pProgressListener) throws Exception {
final Scene scene = SimpleAsyncGameActivity.this.onCreateSceneAsync(pProgressListener);
pProgressListener.onProgressChanged(100);
pOnCreateSceneCallback.onCreateSceneFinished(scene);
return null;
}
}, new Callback<Void>() {
@Override
public void onCallback(final Void pCallbackValue) {
/* Nothing. */
}
});
}
});
}
@Override
public void onPopulateScene(final Scene pScene, final OnPopulateSceneCallback pOnPopulateSceneCallback) {
this.runOnUiThread(new Runnable() {
@Override
public void run() {
ActivityUtils.doProgressAsync(SimpleAsyncGameActivity.this, "Populating Scene...", android.R.drawable.ic_menu_rotate, new ProgressCallable<Void>() {
@Override
public Void call(final IProgressListener pProgressListener) throws Exception {
SimpleAsyncGameActivity.this.onPopulateSceneAsync(pScene, pProgressListener);
pProgressListener.onProgressChanged(100);
pOnPopulateSceneCallback.onPopulateSceneFinished();
return null;
}
}, new Callback<Void>() {
@Override
public void onCallback(final Void pCallbackValue) {
/* Nothing. */
}
});
}
});
}
// ===========================================================
// Methods
// ===========================================================
// ===========================================================
// Inner and Anonymous Classes
// ===========================================================
}