Subversion Repositories AndroidProjects

Rev

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

package com.gebauz.pingk.entities;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Texture;
import com.gebauz.Bauzoid.graphics.Font;
import com.gebauz.Bauzoid.graphics.sprite.Sprite;
import com.gebauz.Bauzoid.math.MathUtil;
import com.gebauz.pingk.PingkCustomServices;
import com.gebauz.pingk.game.GameConsts;
import com.gebauz.pingk.game.GameLogic;
import com.gebauz.pingk.game.TextConsts;
import com.gebauz.pingk.ui.BaseButton;
import com.gebauz.pingk.ui.TextButton;

public class PauseScreen extends Entity
{
        private Font mFont = null;
        private Sprite mBackground = null;
        private Sprite mBlack = null;
        private float mPopupTimer = GameConsts.PAUSE_MENU_POPUP_TIME + 1.0f;
       
        private TextButton mRestart;
        private TextButton mMusicOnOff;
        private TextButton mQuit;      
       
        public PauseScreen(GameLogic gameLogic)
        {
                super(gameLogic);
        }

        @Override
        public void init()
        {
                mFont = PingkCustomServices.getInstance().getFont();
               
                mBackground = new Sprite(getGameLogic().getGraphics(), new Texture(Gdx.files.internal("data/textures/pause_bg.png")));
                mBackground.x = 0;
                mBackground.y = getGameLogic().getPlayField().getVirtualHeight() / 2.0f;
                mBackground.w = GameConsts.VIRTUAL_SCREEN_WIDTH;
                mBackground.h = GameConsts.PAUSE_BG_HEIGHT;
                mBackground.pivotX = 0;
                mBackground.pivotY = GameConsts.PAUSE_BG_HEIGHT / 2.0f;
                mBackground.color = GameConsts.PINGK_COLOR;
               
                mBlack = new Sprite(getGameLogic().getGraphics(), new Texture(Gdx.files.internal("data/textures/black50.png")));
                mBlack.x = 0;
                mBlack.y = 0;
                mBlack.w = GameConsts.VIRTUAL_SCREEN_WIDTH;
                mBlack.h = getGameLogic().getPlayField().getVirtualHeight();
                mBlack.pivotX = 0;
                mBlack.pivotY = 0;
               
                mRestart = new TextButton(getGameLogic().getGame(), TextConsts.PAUSE_RESTART);
                mRestart.x = GameConsts.VIRTUAL_SCREEN_WIDTH / 2.0f;
                mRestart.y = GameConsts.PAUSE_MENU_RESTART_POSITION_Y;
                mRestart.scale = GameConsts.PAUSE_MENU_TEXT_SCALE;
                mRestart.setAlignment(TextButton.HorizontalAlignment.CENTER, TextButton.VerticalAlignment.TOP);
                mRestart.setTouchListener(mRestartListener);
               
/*              mHelp = new TextButton(getGameLogic().getGame(), TextConsts.HELP);
                mHelp.x = GameConsts.VIRTUAL_SCREEN_WIDTH / 2.0f;
                mHelp.y = GameConsts.PAUSE_MENU_HELP_POSITION_Y;
                mHelp.scale = GameConsts.PAUSE_MENU_TEXT_SCALE;
                mHelp.setAlignment(TextButton.HorizontalAlignment.CENTER, TextButton.VerticalAlignment.TOP);
                mHelp.setTouchListener(mHelpListener);
                */

                String musicOnOff = TextConsts.MUSIC_ON;
                if (!getAudio().isMusicEnabled())
                        musicOnOff = TextConsts.MUSIC_OFF;
                mMusicOnOff = new TextButton(getGameLogic().getGame(), musicOnOff);
                mMusicOnOff.x = GameConsts.VIRTUAL_SCREEN_WIDTH / 2.0f;
                mMusicOnOff.y = GameConsts.PAUSE_MENU_MUSIC_ONOFF_POSITION_Y;
                mMusicOnOff.scale = GameConsts.PAUSE_MENU_TEXT_SCALE;
                mMusicOnOff.setAlignment(TextButton.HorizontalAlignment.CENTER, TextButton.VerticalAlignment.TOP);
                mMusicOnOff.setTouchListener(mMusicOnOffListener);
               
                mQuit = new TextButton(getGameLogic().getGame(), TextConsts.PAUSE_QUIT);
                mQuit.x = GameConsts.VIRTUAL_SCREEN_WIDTH / 2.0f;
                mQuit.y = GameConsts.PAUSE_MENU_QUIT_POSITION_Y;
                mQuit.scale = GameConsts.PAUSE_MENU_TEXT_SCALE;
                mQuit.setAlignment(TextButton.HorizontalAlignment.CENTER, TextButton.VerticalAlignment.TOP);
                mQuit.setTouchListener(mQuitListener);
               
                //mHelpScreen = new HelpScreen(mGameLogic.getVirtualPlayFieldHeight());
        }

        @Override
        public void exit()
        {
                mFont = null;
               
                if (mBackground != null)
                {
                        mBackground.dispose();
                        mBackground = null;
                }
               
                if (mBlack != null)
                {
                        mBlack.dispose();
                        mBlack = null;
                }              
               
                if (mRestart != null)
                {
                        mRestart.exit();
                        mRestart = null;
                }              
                if (mMusicOnOff != null)
                {
                        mMusicOnOff.exit();
                        mMusicOnOff = null;
                }              
                if (mQuit != null)
                {
                        mQuit.exit();
                        mQuit = null;
                }                      
        }

        @Override
        public void update(float deltaTime)
        {
                mPopupTimer += deltaTime;
                float bgsize = 0.0f;
                if (getGameLogic().isPaused())
                {
                        bgsize = MathUtil.clamp(mPopupTimer / GameConsts.PAUSE_MENU_POPUP_TIME, 0.0f, 1.0f) * GameConsts.PAUSE_BG_HEIGHT;
                }
                else
                {
                        bgsize = (1.0f-MathUtil.clamp(mPopupTimer / GameConsts.PAUSE_MENU_POPUP_TIME, 0.0f, 1.0f)) * GameConsts.PAUSE_BG_HEIGHT;                       
                }
               
                mBackground.h = bgsize;
                mBackground.pivotY = mBackground.h/2.0f;
               
                if (!getGameLogic().isPaused())
                        return;
               
//              if (!mHelpScreen.isActive())
                {              
                        mRestart.update(deltaTime);
                        mMusicOnOff.update(deltaTime);
                        mQuit.update(deltaTime);
                }
               
                //mHelpScreen.update(deltaTime);

        }

        @Override
        public void render()
        {
                if (getGameLogic().isPaused())
                {
                        mBlack.render();
                }
               
                if (!getGameLogic().isPaused() && (mPopupTimer > GameConsts.PAUSE_MENU_POPUP_TIME))
                        return;
               
                mBackground.render();
               
                if (getGameLogic().isPaused() && (mPopupTimer > GameConsts.PAUSE_MENU_POPUP_TIME))                             
                {
                        String text = TextConsts.PAUSED;
                        float w =  mFont.getTextWidth(text, GameConsts.PAUSE_TITLE_TEXT_SCALE);
                                       
                        mFont.drawText(text, (GameConsts.VIRTUAL_SCREEN_WIDTH - w) / 2.0f, GameConsts.PAUSE_TITLE_TEXT_POSITION_Y,
                                        GameConsts.PINGK_COLOR, GameConsts.PAUSE_TITLE_TEXT_SCALE);

                        mRestart.render();
                        mMusicOnOff.render();
                        mQuit.render();
                }
               
                //mHelpScreen.render();
               
        }
       
        public void startShowing()
        {
/*              if (!mGameLogic.isPaused() && mHelpScreen.isActive())
                {
                        mHelpScreen.hideImmediately();
                }*/

                mPopupTimer = 0.0f;
        }
       
        BaseButton.TouchListener mRestartListener = new BaseButton.TouchListener()
        {
                @Override
                public void onTouched(BaseButton sender, int tag)
                {
                        getGameLogic().getGame().getGameStateManager().switchTo(com.gebauz.pingk.gamestates.MainGameState.class);
                }
        };
       
        BaseButton.TouchListener mHelpListener = new BaseButton.TouchListener()
        {
                @Override
                public void onTouched(BaseButton sender, int tag)
                {
                        //mHelpScreen.show();
                }
        };
       
       
        BaseButton.TouchListener mMusicOnOffListener = new BaseButton.TouchListener()
        {
                @Override
                public void onTouched(BaseButton sender, int tag)
                {
                        TextButton tb = (TextButton)sender;
                        if (getAudio().isMusicEnabled())
                        {
                                getAudio().setMusicEnabled(false);
                                tb.setText(TextConsts.MUSIC_OFF);
                        }
                        else
                        {
                                getAudio().setMusicEnabled(true);
                                tb.setText(TextConsts.MUSIC_ON);                               
                        }
                }
        };
       
        BaseButton.TouchListener mQuitListener = new BaseButton.TouchListener()
        {
                @Override
                public void onTouched(BaseButton sender, int tag)
                {
                        getGameLogic().getGame().getGameStateManager().switchTo(com.gebauz.pingk.gamestates.TitleState.class);
                }
        };
}