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);
}
};
}