package stu.tnt.gdx.core.loader; import stu.tnt.gdx.core.ResourcePack; import stu.tnt.gdx.core.Screen; import stu.tnt.gdx.core.eAdmin; import stu.tnt.gdx.utils.E; public abstract class SafeLoader extends Screen { public static final String name = SafeLoader.class.getName(); private Screen mDstScreen; protected ResourcePack resources; protected float progress; private boolean isAutoChangeScreen = true; private Runnable mNewScreen; @Override public void show() { onCreate(); } @Override public void resize(int width, int height) { super.resize(width, height); onResize(width, height); } @Override public void update(float delta) { super.update(delta); eAdmin.econtext.update(); eAdmin.eaudio.update(); if (resources.isTotallyLoaded() && isAutoChangeScreen) { if (mNewScreen != null) mNewScreen.run(); setScreen(mDstScreen, E.screen.RELEASE); } progress = (eAdmin.econtext.getProgress() + eAdmin.eaudio.getProgress()) / 2; } @Override public void destroy(int destroyMode) { super.destroy(E.screen.RELEASE); onDestroy(); } /***************************************************** * Screen method *****************************************************/ public abstract void onCreate(); public abstract void onResize(int width, int height); public abstract void onDestroy(); public void setLoaderInfo(Screen screen, ResourcePack pack) { mDstScreen = screen; resources = pack; } public void setAutoChangeScreen(boolean isAuto) { this.isAutoChangeScreen = isAuto; } public void setLoadCompleteListener(Runnable run) { this.mNewScreen = run; } }