Rev 105 |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
package com.gebauz.pingK.gamestates;
import java.util.Random;
import javax.microedition.khronos.opengles.GL10;
import android.util.Log;
import com.gebauz.framework.util.GLUtil;
import com.gebauz.framework.util.Sprite2D;
import com.gebauz.pingK.MultitouchInput;
import com.gebauz.pingK.R;
import com.gebauz.pingK.MultitouchInput.Finger;
import com.gebauz.pingK.game.Font;
import com.gebauz.pingK.game.GameConsts;
import com.gebauz.pingK.game.TextButton;
public class TitleState
extends BaseGameState
{
private Font mFont =
null;
private float mTimer = 0.0f
;
private TextButton mGameStartButton
;
private TextButton mOptionsButton
;
private TextButton mHelpButton
;
private Sprite2D mTitle =
null;
private Random mRandomizer =
new Random();
TextButton.
TouchListener mGameStartListener =
new TextButton.
TouchListener()
{
@
Override
public void onTouched
()
{
GameStateManager.
getInstance().
switchState("MainGameState");
}
};
TextButton.
TouchListener mOptionsListener =
new TextButton.
TouchListener()
{
@
Override
public void onTouched
()
{
}
};
TextButton.
TouchListener mHelpListener =
new TextButton.
TouchListener()
{
@
Override
public void onTouched
()
{
}
};
public TitleState
()
{
}
@
Override
public void init
()
{
mFont =
new Font();
mTitle =
new Sprite2D
();
mTitle.
init(R.
drawable.
logo, GameConsts.
VIRTUAL_SCREEN_WIDTH/2.0f, GameConsts.
TITLE_POSITION_Y, GameConsts.
TITLE_WIDTH, GameConsts.
TITLE_HEIGHT);
mTitle.
pivotX = GameConsts.
TITLE_WIDTH / 2.0f
;
mTitle.
pivotY = 0.0f
;
mGameStartButton =
new TextButton
(mFont, GameStateManager.
getInstance().
getContext().
getString(R.
string.
title_start_game));
mGameStartButton.
x = GameConsts.
VIRTUAL_SCREEN_WIDTH / 2.0f
;
mGameStartButton.
y = GameConsts.
TITLE_POSITION_Y + GameConsts.
TITLE_HEIGHT + 5.0f
;
mGameStartButton.
scale = 2.5f
;
mGameStartButton.
setAlignment(TextButton.
HorizontalAlignment.
CENTER, TextButton.
VerticalAlignment.
MIDDLE);
mGameStartButton.
setTouchListener(mGameStartListener
);
mOptionsButton =
new TextButton
(mFont, GameStateManager.
getInstance().
getContext().
getString(R.
string.
title_options));
mOptionsButton.
x = GameConsts.
VIRTUAL_SCREEN_WIDTH / 2.0f
;
mOptionsButton.
y = GameConsts.
TITLE_POSITION_Y + GameConsts.
TITLE_HEIGHT + 45.0f
;
mOptionsButton.
scale = 2.5f
;
mOptionsButton.
setAlignment(TextButton.
HorizontalAlignment.
CENTER, TextButton.
VerticalAlignment.
MIDDLE);
mOptionsButton.
setTouchListener(mOptionsListener
);
mHelpButton =
new TextButton
(mFont, GameStateManager.
getInstance().
getContext().
getString(R.
string.
title_help));
mHelpButton.
x = GameConsts.
VIRTUAL_SCREEN_WIDTH / 2.0f
;
mHelpButton.
y = GameConsts.
TITLE_POSITION_Y + GameConsts.
TITLE_HEIGHT + 85.0f
;
mHelpButton.
scale = 2.5f
;
mHelpButton.
setAlignment(TextButton.
HorizontalAlignment.
CENTER, TextButton.
VerticalAlignment.
MIDDLE);
mHelpButton.
setTouchListener(mHelpListener
);
}
@
Override
public void exit
()
{
mGameStartButton =
null;
mOptionsButton =
null;
mHelpButton =
null;
mFont =
null;
}
@
Override
public void onSurfaceChanged
(int width,
int height
)
{
GLUtil.
getGL().
glViewport(0,
0, width, height
);
}
@
Override
public void update
(float deltaTime
)
{
mTimer += deltaTime
;
mTitle.
update(deltaTime
);
/* Finger finger = MultitouchInput.getInstance().getTouchPointInside(0.0f, 0.0f, GameConsts.VIRTUAL_SCREEN_WIDTH, GameConsts.VIRTUAL_SCREEN_HEIGHT);
if (finger != null)
{
// switch state
GameStateManager.getInstance().switchState("MainGameState");
}*/
mGameStartButton.
update(deltaTime
);
mOptionsButton.
update(deltaTime
);
mHelpButton.
update(deltaTime
);
}
@
Override
public void render
()
{
GL10 gl = GLUtil.
getGL();
gl.
glClearColor(0.0f, 0.0f, 0.0f, 0.0f
);
gl.
glClear(GL10.
GL_COLOR_BUFFER_BIT | GL10.
GL_DEPTH_BUFFER_BIT);
gl.
glMatrixMode(GL10.
GL_PROJECTION);
gl.
glLoadIdentity();
gl.
glOrthof(0, GameConsts.
VIRTUAL_SCREEN_WIDTH-1.0f, GameConsts.
VIRTUAL_SCREEN_HEIGHT-1.0f,
0,
0,
1);
float alpha = 0.7f + 0.3f
* mRandomizer.
nextFloat();
mTitle.
setColor(GameConsts.
PINGK_COLOR.
x, GameConsts.
PINGK_COLOR.
y, GameConsts.
PINGK_COLOR.
z, alpha
);
mTitle.
render();
/* if (Math.cos(mTimer * GameConsts.TITLE_FLASH_INTERVAL) > 0.0f)
{
Log.v(GameConsts.LOG_TAG, "t=" + mTimer);
renderText(R.string.title_touch_to_start, 300.0f, 3.0f);
}*/
mGameStartButton.
render();
mOptionsButton.
render();
mHelpButton.
render();
}
/* public void renderText(int id, float posY, float scale)
{
String text = GameStateManager.getInstance().getContext().getString(id);
float w = text.length() * Font.CHARACTER_SIZE * scale;
mFont.drawText(text, (GameConsts.VIRTUAL_SCREEN_WIDTH - w) / 2.0f, posY, scale);
}
*/
@
Override
public boolean doFadeIn
()
{
return true;
}
@
Override
public boolean doFadeOut
()
{
return true;
}
}