Advertisement
Jong

Main menu scene - AndEngine

Nov 18th, 2012
606
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.63 KB | None | 0 0
  1. package com.jong.angryballs;
  2.  
  3. import org.anddev.andengine.entity.scene.Scene;
  4. import org.anddev.andengine.entity.scene.background.ColorBackground;
  5. import org.anddev.andengine.entity.scene.Scene.IOnAreaTouchListener;
  6. import org.anddev.andengine.entity.text.Text;
  7. import org.anddev.andengine.input.touch.TouchEvent;
  8. import org.anddev.andengine.opengl.font.Font;
  9. import org.anddev.andengine.util.Callback;
  10.  
  11. public class MainMenuScene extends Scene implements IOnAreaTouchListener {
  12.     // ===========================================================
  13.     // Constants          
  14.     // ===========================================================
  15.     public static final int MENU_START = 1;
  16.     public static final int MENU_HISCORES = 2;
  17.     public static final int MENU_CREDITS = 3;
  18.     public static final int MENU_SETTINGS = 4;
  19.     public static final int MENU_LEADERBOARDS = 5;
  20.    
  21.     public final static int CAMERA_WIDTH =  GameActivity.CAMERA_WIDTH;
  22.     public final static int CAMERA_HEIGHT = GameActivity.CAMERA_HEIGHT;
  23.     // ===========================================================          
  24.     // Fields        
  25.     // ===========================================================
  26.     final Callback<Integer> mCallOnMenuClick;
  27.     // ===========================================================          
  28.     // Constructors          
  29.     // ===========================================================
  30.     /**
  31.      * Creates a new main menu scene
  32.      * @param pFont The font to use.
  33.      * @param callOnMenuClick Called when a menu item is clicked.
  34.      */
  35.     public MainMenuScene(final Font pFont, Callback<Integer> callOnMenuClick) {
  36.         super();
  37.         this.mCallOnMenuClick = callOnMenuClick;
  38.        
  39.         final Text startText = new Text(0, 0, pFont, "Start");
  40.         final Text hiscoresText = new Text(0, 0, pFont, "Hiscores");
  41.         final Text leaderboardsText = new Text(0, 0, pFont, "Leaderboards");
  42.         final Text settingsText = new Text(0, 0, pFont, "Settings");
  43.         final Text creditsText = new Text(0, 0, pFont, "Credits");
  44.        
  45.         startText.setUserData(MENU_START);
  46.         hiscoresText.setUserData(MENU_HISCORES);
  47.         leaderboardsText.setUserData(MENU_LEADERBOARDS);
  48.         settingsText.setUserData(MENU_SETTINGS);
  49.         creditsText.setUserData(MENU_CREDITS);
  50.        
  51.         final float totalHeight = startText.getHeight() + 20 +  hiscoresText.getHeight() + 20 + leaderboardsText.getHeight() + 20 + settingsText.getHeight() + 20 + creditsText.getHeight();
  52.         float maxWidth = Math.max(startText.getWidth(), hiscoresText.getWidth());
  53.         maxWidth = Math.max(maxWidth, leaderboardsText.getWidth());
  54.         maxWidth = Math.max(maxWidth, settingsText.getWidth());
  55.         maxWidth = Math.max(maxWidth, creditsText.getWidth());
  56.        
  57.         final float x = CAMERA_WIDTH/2 - maxWidth/2;
  58.         final float y = CAMERA_HEIGHT/2 - totalHeight/2;
  59.        
  60.         startText.setPosition(x, y);
  61.         hiscoresText.setPosition(x, startText.getY() + startText.getHeight() + 20);
  62.         leaderboardsText.setPosition(x, hiscoresText.getY() + hiscoresText.getHeight() + 20);
  63.         settingsText.setPosition(x, leaderboardsText.getY() + leaderboardsText.getHeight() + 20);
  64.         creditsText.setPosition(x, settingsText.getY() + settingsText.getHeight() + 20);
  65.        
  66.         this.attachChild(startText);
  67.         this.attachChild(hiscoresText);
  68.         this.attachChild(leaderboardsText);
  69.         this.attachChild(settingsText);
  70.         this.attachChild(creditsText);
  71.        
  72.         this.registerTouchArea(startText);
  73.         this.registerTouchArea(hiscoresText);
  74.         this.registerTouchArea(leaderboardsText);
  75.         this.registerTouchArea(settingsText);
  76.         this.registerTouchArea(creditsText);
  77.         this.setOnAreaTouchListener(this);
  78.        
  79.         this.setBackgroundEnabled(true);
  80.         this.setBackground(new ColorBackground(0.09804f, 0.6274f, 0.8784f));
  81.     }
  82.     // ===========================================================          
  83.     // Getter & Setter          
  84.     // ===========================================================
  85.  
  86.     // ===========================================================          
  87.     // Methods for/from SuperClass/Interfaces          
  88.     // ===========================================================  
  89.     @Override
  90.     public boolean onAreaTouched(TouchEvent pSceneTouchEvent,
  91.             ITouchArea pTouchArea, float pTouchAreaLocalX,
  92.             float pTouchAreaLocalY) {
  93.         if(pSceneTouchEvent.isActionDown()) {
  94.             if(pTouchArea instanceof Text)
  95.                 this.mCallOnMenuClick.onCallback((Integer)((Text)pTouchArea).getUserData());
  96.         }
  97.         return false;
  98.     }
  99.     // ===========================================================          
  100.     // Methods          
  101.     // ===========================================================  
  102.     // ===========================================================          
  103.     // Inner and Anonymous Classes          
  104.     // ===========================================================  
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement