Rev 723 |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
package com.gebauz.PonPonChun.game;
import java.util.Vector;
import com.badlogic.gdx.Gdx;
import com.gebauz.Bauzoid.game.Game;
import com.gebauz.Bauzoid.game.GameObject;
import com.gebauz.Bauzoid.game.StateMachine;
import com.gebauz.Bauzoid.menu.EventProcessor;
import com.gebauz.Bauzoid.menu.Menu;
import com.gebauz.Bauzoid.menu.MenuEventListener;
import com.gebauz.Bauzoid.menu.MenuItem;
import com.gebauz.Bauzoid.menu.MenuUtil;
import com.gebauz.Bauzoid.menu.SegmentButton;
public class OptionsScreen
extends GameObject
implements StateMachine.
EventListener<OptionsScreen.
State>, MenuEventListener
{
// Constants========================================================================================
// Embedded Types===================================================================================
enum State
{
INACTIVE,
FADE_IN,
ACTIVE,
FADE_OUT
}
// Fields===========================================================================================
private StateMachine
<State> mStateMachine
;
private Menu mOptionsMenu =
null;
private SegmentButton mSoundsButton =
null;
private SegmentButton mMusicButton =
null;
// Methods==========================================================================================
public OptionsScreen
(Game game
)
{
super(game
);
mStateMachine =
new StateMachine
<State>(State.
INACTIVE,
this);
}
public void init
()
{
mOptionsMenu = MenuUtil.
createMenuFromFile(getGame
(), Gdx.
files.
internal("data/menus/optionsmenu.txt"));
mOptionsMenu.
init();
mOptionsMenu.
setEventListener(this);
mSoundsButton =
(SegmentButton
)mOptionsMenu.
findMenuItem("sounds");
mMusicButton =
(SegmentButton
)mOptionsMenu.
findMenuItem("music");
mOptionsMenu.
setEnabled(false);
mOptionsMenu.
setVisible(false);
updateSoundsMusicButton
();
}
public void exit
()
{
mSoundsButton =
null;
mMusicButton =
null;
if (mOptionsMenu
!=
null)
{
mOptionsMenu.
exit();
mOptionsMenu =
null;
}
}
public void update
(float deltaTime
)
{
mOptionsMenu.
update(deltaTime
);
mStateMachine.
update(deltaTime
);
}
public void render
()
{
if (isActive
())
{
mOptionsMenu.
render();
}
}
public void show
()
{
if (mStateMachine.
getState() ==
State.
INACTIVE)
{
mStateMachine.
switchState(State.
FADE_IN);
}
}
public void hide
()
{
if (mStateMachine.
getState() ==
State.
ACTIVE)
{
mStateMachine.
switchState(State.
FADE_OUT);
}
}
public boolean isActive
()
{
return (mStateMachine.
getState() !=
State.
INACTIVE);
}
@
Override
public boolean onSwitchState
(State newState
)
{
switch(newState
)
{
case FADE_IN:
mOptionsMenu.
setVisible(true);
mOptionsMenu.
setEnabled(true);
mOptionsMenu.
startFadeIn();
break;
case FADE_OUT:
mOptionsMenu.
startFadeOut();
break;
default:
break;
}
return true;
}
@
Override
public void onUpdate
(float deltaTime,
State currentState,
float stateTime
)
{
switch(currentState
)
{
case FADE_IN:
case FADE_OUT:
if (mOptionsMenu.
isFadingDone())
onEndState
(currentState
);
break;
default:
break;
}
}
@
Override
public void onEndState
(State currentState
)
{
switch(currentState
)
{
case FADE_IN:
mStateMachine.
switchState(State.
ACTIVE);
break;
case FADE_OUT:
mStateMachine.
switchState(State.
INACTIVE);
break;
default:
break;
}
}
@
Override
public void onMessage
(Menu menu,
MenuItem sender,
String msgType,
Vector<String> paramList
)
{
for (String param : paramList
)
{
if (param.
equalsIgnoreCase("back"))
{
hide
();
}
else if (param.
equalsIgnoreCase("sounds"))
{
getAudio
().
setSoundEnabled(!getAudio
().
isSoundEnabled());
updateSoundsMusicButton
();
}
else if (param.
equalsIgnoreCase("music"))
{
getAudio
().
setMusicEnabled(!getAudio
().
isMusicEnabled());
updateSoundsMusicButton
();
}
else
{
EventProcessor.
processEvent(menu, sender, msgType, param
);
}
}
}
public void updateSoundsMusicButton
()
{
if (mSoundsButton
!=
null)
{
if (getAudio
().
isSoundEnabled())
mSoundsButton.
getTextElement().
setCaption("SOUNDS: ON");
else
mSoundsButton.
getTextElement().
setCaption("SOUNDS: OFF");
}
if (mMusicButton
!=
null)
{
if (getAudio
().
isMusicEnabled())
mMusicButton.
getTextElement().
setCaption("MUSIC: ON");
else
mMusicButton.
getTextElement().
setCaption("MUSIC: OFF");
}
}
// Getters/Setters==================================================================================
}