Rev 78 |
Go to most recent revision |
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 mHelpButton
;
private Sprite2D mTitle =
null;
private Random mRandomizer =
new Random();
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
;
mHelpButton =
new TextButton
(mFont,
"Help");
}
@
Override
public void exit
()
{
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");
}
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
);
}
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;
}
}