Subversion Repositories AndroidProjects

Rev

Rev 78 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package com.gebauz.pingK.game;

import com.gebauz.framework.util.Sprite2D;
import com.gebauz.framework.util.Vector2;
import com.gebauz.pingK.MultitouchInput;
import com.gebauz.pingK.R;
import com.gebauz.pingK.MultitouchInput.Finger;

public class MenuBar
{
        private GameLogic mGameLogic = null;
       
        private Sprite2D mSoundOn = new Sprite2D();
        private Sprite2D mSoundOff = new Sprite2D();
        private Sprite2D mPause = new Sprite2D();
        private Sprite2D mResume = new Sprite2D();
       
        private boolean mLastSoundPressed = false;
        private boolean mLastPausePressed = false;
       
        public MenuBar(GameLogic gameLogic)
        {
                mGameLogic = gameLogic;
               
                float size = mGameLogic.getVirtualScoreBarHeight() - 10.0f;
                float adSize = mGameLogic.dipToVirtual(GameConsts.MENUBAR_AD_WIDTH_DIP);
                float leftOfAdX = (GameConsts.VIRTUAL_SCREEN_WIDTH - adSize) / 2.0f;
       
                mSoundOn.init(R.drawable.menu_soundon, leftOfAdX - GameConsts.MENUBAR_OFFSET_X, mGameLogic.getVirtualPlayFieldHeight() + GameConsts.SCOREBAR_MARGIN_Y, size, size);
                mSoundOff.init(R.drawable.menu_soundoff, leftOfAdX - GameConsts.MENUBAR_OFFSET_X, mGameLogic.getVirtualPlayFieldHeight() + GameConsts.SCOREBAR_MARGIN_Y, size, size);
               
                mSoundOn.pivotX = size;
                mSoundOn.pivotY = 0;
                mSoundOff.pivotX = size;
                mSoundOff.pivotY = 0;
               
                mPause.init(R.drawable.menu_pause, leftOfAdX + adSize + GameConsts.MENUBAR_OFFSET_X, mGameLogic.getVirtualPlayFieldHeight() + GameConsts.SCOREBAR_MARGIN_Y, size, size);
                mResume.init(R.drawable.menu_resume, leftOfAdX + adSize + GameConsts.MENUBAR_OFFSET_X, mGameLogic.getVirtualPlayFieldHeight() + GameConsts.SCOREBAR_MARGIN_Y, size, size);
               
                mPause.pivotX = 0;
                mPause.pivotY = 0;
                mResume.pivotX = 0;
                mResume.pivotY = 0;

        }
       
        public void update(float deltaTime)
        {
                mSoundOn.update(deltaTime);
                mSoundOff.update(deltaTime);
                mPause.update(deltaTime);
                mResume.update(deltaTime);
               
                boolean isSoundPressed = checkButtonPressed(mSoundOn, GameConsts.BUTTON_TOUCH_TOLERANCE);
                if ((!mLastSoundPressed) && (isSoundPressed))                  
                {
                        mGameLogic.enableSound(!mGameLogic.isSoundEnabled());  
                }
                mLastSoundPressed = isSoundPressed;
               
                boolean isPausePressed = checkButtonPressed(mPause, GameConsts.BUTTON_TOUCH_TOLERANCE);
                if ((!mLastPausePressed) && (isPausePressed))                  
                {
                        mGameLogic.pause(!mGameLogic.isPaused());                                                                      
                }
                mLastPausePressed = isPausePressed;
        }
       
        public boolean checkButtonPressed(Sprite2D sprite, float tolerance)
        {
                Vector2 topLeft = sprite.getTopLeft();
                Vector2 bottomRight = sprite.getBottomRight();
                Finger finger = MultitouchInput.getInstance().getTouchPointInside(topLeft.x - tolerance, topLeft.y - tolerance, bottomRight.x + tolerance, bottomRight.y + tolerance);
                if (finger != null)
                {
                        return true;
                }
                return false;
        }
       
        public void render()
        {
                if (mGameLogic.isSoundEnabled())
                {              
                        mSoundOn.render();
                }
                else
                {
                        mSoundOff.render();
                }

                if (!mGameLogic.isPaused())
                {
                        mPause.render();
                }
                else
                {
                        mResume.render();
                }
        }      

}