public void add(TickListener listener) { mGameLoop.add(listener); }
public boolean isThreadChangeNeeded() { return mGameLoop.isThreadChangeNeeded(); }
public void registerErrorListener(ErrorListener listener) { mGameLoop.registerErrorListener(listener); }
executeCycle(); notifyErrorListeners(loopCount, e); throw new RuntimeException("Error in game loop!", e);
public void remove(TickListener listener) { mGameLoop.remove(listener); }
public void setTicksPerLoop(int ticksPerLoop) { mGameLoop.setTicksPerLoop(ticksPerLoop); }
public void clear() { mMessageQueue.clear(); mEntityStore.clear(); mRenderer.clear(); mGameLoop.clear(); }
private void executeCycle() { mRenderer.lock(); for (int i = 0; i < mGameTicksPerLoop; i++) { executeTick(); mMessageQueue.processMessages(); } mRenderer.unlock(); mFrameRateLogger.incrementLoopCount(); mFrameRateLogger.outputFrameRate(); }
private void initializeEngine(Context context) { mViewport = new Viewport(); mEntityStore = new EntityStore(); mMessageQueue = new MessageQueue(); mGamePersister = new GamePersister(); mFrameRateLogger = new FrameRateLogger(); mRenderer = new Renderer(mViewport, mFrameRateLogger); mGameLoop = new GameLoop(mRenderer, mFrameRateLogger, mMessageQueue, mEntityStore); mThemeManager = new ThemeManager(context, mRenderer); mSoundManager = new SoundManager(context); mSpriteFactory = new SpriteFactory(context, mThemeManager); mSoundFactory = new SoundFactory(context, mSoundManager); mGameEngine = new GameEngine(mSpriteFactory, mThemeManager, mSoundFactory, mEntityStore, mMessageQueue, mRenderer, mGameLoop); mEntityRegistry = new EntityRegistry(mGameEngine); }