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