Android Open Source - LucyTheMoocher Master Loop






From Project

Back to project page LucyTheMoocher.

License

The source code is released under:

MIT License

If you think the Android project LucyTheMoocher listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.lucythemoocher.loops;
/*from w ww .j  av a  2  s . c o m*/
import com.lucythemoocher.Globals.Globals;
import com.lucythemoocher.graphics.Camera;

/**
 * This class handles the main loop. It uses a state pattern
 * with the class Loop. For example, LoopGame inherits Loop and
 * handles the loop during the game. Update is used each frame, 
 * whatever the state of the game (menus, credits, game etc.)
 * MasterLoop is a singleton
 *
 */
public class MasterLoop {
  
  /**
   * Get the instance of the singleton
   * @return Instance
   */
  synchronized public final static MasterLoop getInstance() {
    if (MasterLoop.instance_ == null) {
      MasterLoop.instance_ = new MasterLoop();
    }
        return MasterLoop.instance_;
  }
  
  /**
   * Change the loop (state pattern)
   * @param loop The new state
   */
  public void setLoop(Loop loop) {
    loop_ = loop;
  }
  
  /**
   * Called each frame
   */
  public void update() {
    Globals.getInstance().update();
    loop_.update();
  }
  
  /**
   * Update rendering
   */
  public void render() {
    Camera cam = Globals.getInstance().getCamera();
    if (loop_.doRender() && cam.canDraw() && cam.lockScreen()) {
      cam.prepare();
      loop_.render();
      cam.unlockScreen();
    }
  }
  
  public void mainMenu() {
    setLoop(new InitMenuLoop());
  }
  
  public void gameOver() {
    loop_.unregisterKeys();
    setLoop(new GameOverLoop(3000));
  }
  
  public void credits() {
    loop_.unregisterKeys();
    setLoop(new CreditsLoop());
  }
  
  public void restartLevel() {
    loop_.unregisterKeys();
    setLoop(new LivesMenuLoop(1000, new LoopGame(Globals.getInstance().getLevel())));
  }
  
  /**
   * Private constructor for singleton pattern
   */
  private MasterLoop() {
    loop_ = new InitMenuLoop();
  }
  
  private static volatile MasterLoop instance_ = null;
  private Loop loop_;
}




Java Source Code List

com.lucythemoocher.LucyTheMoocherActivity.java
com.lucythemoocher.FX.FXManager.java
com.lucythemoocher.FX.FX.java
com.lucythemoocher.Globals.Globals.java
com.lucythemoocher.actors.Actor.java
com.lucythemoocher.actors.ActorsManager.java
com.lucythemoocher.actors.Monster.java
com.lucythemoocher.actors.MonstersManager.java
com.lucythemoocher.actors.PlayerCharacter.java
com.lucythemoocher.actors.Projectile.java
com.lucythemoocher.actors.ProjectilesManager.java
com.lucythemoocher.actors.Tank.java
com.lucythemoocher.actors.TargetCharacter.java
com.lucythemoocher.actors.maincharacter.state.StateAttack.java
com.lucythemoocher.actors.maincharacter.state.StateFalling.java
com.lucythemoocher.actors.maincharacter.state.StateJumping.java
com.lucythemoocher.actors.maincharacter.state.StateNone.java
com.lucythemoocher.actors.maincharacter.state.StateRunning.java
com.lucythemoocher.actors.maincharacter.state.StateWallSliding.java
com.lucythemoocher.actors.maincharacter.state.StateWallWalking.java
com.lucythemoocher.actors.maincharacter.state.State.java
com.lucythemoocher.controls.AIController.java
com.lucythemoocher.controls.ActionController.java
com.lucythemoocher.controls.ButtonListener.java
com.lucythemoocher.controls.Controllable.java
com.lucythemoocher.controls.Controller.java
com.lucythemoocher.controls.GlobalController.java
com.lucythemoocher.controls.KeysListener.java
com.lucythemoocher.controls.TouchListener.java
com.lucythemoocher.events.EventNormal.java
com.lucythemoocher.events.EventSlow.java
com.lucythemoocher.events.Event.java
com.lucythemoocher.game.GameThread.java
com.lucythemoocher.game.Game.java
com.lucythemoocher.game.LevelLoader.java
com.lucythemoocher.graphics.ActorDrawer.java
com.lucythemoocher.graphics.Animation.java
com.lucythemoocher.graphics.Background.java
com.lucythemoocher.graphics.Camera.java
com.lucythemoocher.graphics.Drawable.java
com.lucythemoocher.graphics.Grid.java
com.lucythemoocher.graphics.HUD.java
com.lucythemoocher.graphics.Image.java
com.lucythemoocher.graphics.PersistentEffect.java
com.lucythemoocher.graphics.PersistentPic.java
com.lucythemoocher.graphics.PictureContainer.java
com.lucythemoocher.gui.MenuButtonListener.java
com.lucythemoocher.gui.MenuButtonTouchListener.java
com.lucythemoocher.gui.MenuButton.java
com.lucythemoocher.loops.CreditsLoop.java
com.lucythemoocher.loops.GameOverLoop.java
com.lucythemoocher.loops.InitMenuLoop.java
com.lucythemoocher.loops.LivesMenuLoop.java
com.lucythemoocher.loops.LoopGame.java
com.lucythemoocher.loops.LoopPause.java
com.lucythemoocher.loops.Loop.java
com.lucythemoocher.loops.MasterLoop.java
com.lucythemoocher.physics.Box.java
com.lucythemoocher.physics.Cinematic.java
com.lucythemoocher.physics.Map.java
com.lucythemoocher.sounds.SoundManager.java
com.lucythemoocher.sounds.SoundsState.java
com.lucythemoocher.sounds.StateLevel1.java
com.lucythemoocher.sounds.StateLevel2.java
com.lucythemoocher.sounds.StateLevel3.java
com.lucythemoocher.sounds.StateNormal.java
com.lucythemoocher.util.Direction.java
com.lucythemoocher.util.MathUtil.java
com.lucythemoocher.util.Resources.java
com.lucythemoocher.util.Timer.java