Rev 43 |
Rev 45 |
Go to most recent revision |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
package com.gebauz.pingK.game;
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;
public class Paddle
{
public static final int PLAYER_1 = 0;
public static final int PLAYER_2 = 1;
private GameLogic mGameLogic = null;
private int mPlayerIndex = -1;
private Sprite2D mPaddleSprite;
private float mTargetPositionY = GameConsts.VIRTUAL_SCREEN_HEIGHT / 2.0f;
public Paddle(GameLogic gameLogic, int playerIndex)
{
mGameLogic = gameLogic;
mPlayerIndex = playerIndex;
}
public void init()
{
float x = 0;
float y = 0;
float angle = 0;
if (mPlayerIndex == PLAYER_1)
{
x = GameConsts.PADDLE_DISTANCE_FROM_EDGE_X;
angle = 180.0f;
}
else
{
x = GameConsts.VIRTUAL_SCREEN_WIDTH - GameConsts.PADDLE_DISTANCE_FROM_EDGE_X;
}
y = GameConsts.VIRTUAL_SCREEN_HEIGHT / 2.0f;
mPaddleSprite = new Sprite2D();
mPaddleSprite.init(R.drawable.paddle, x, y, GameConsts.PADDLE_WIDTH, GameConsts.PADDLE_HEIGHT);
mPaddleSprite.angle = angle;
}
public void exit()
{
mPaddleSprite = null;
}
public void update(long deltaTimeMs)
{
// update positions
if (mPlayerIndex == PLAYER_1)
{
Finger finger = MultitouchInput.getInstance().getTouchPointInside(0, 0, GameConsts.VIRTUAL_SCREEN_WIDTH / 2.0f, GameConsts.VIRTUAL_SCREEN_HEIGHT);
if (finger != null)
{
mTargetPositionY = finger.y;
Log.v(GameConsts.LOG_TAG, "Y: " + mTargetPositionY);
}
}
else
{
Finger finger = MultitouchInput.getInstance().getTouchPointInside(GameConsts.VIRTUAL_SCREEN_WIDTH / 2.0f, 0, GameConsts.VIRTUAL_SCREEN_WIDTH, GameConsts.VIRTUAL_SCREEN_HEIGHT);
if (finger != null)
{
mTargetPositionY = finger.y;
Log.v(GameConsts.LOG_TAG, "Y: " + mTargetPositionY);
}
}
if (mTargetPositionY < GameConsts.PADDLE_DISTANCE_FROM_EDGE_Y)
mTargetPositionY = GameConsts.PADDLE_DISTANCE_FROM_EDGE_Y;
else if (mTargetPositionY > (GameConsts.VIRTUAL_SCREEN_HEIGHT - GameConsts.PADDLE_DISTANCE_FROM_EDGE_Y))
mTargetPositionY = (GameConsts.VIRTUAL_SCREEN_HEIGHT - GameConsts.PADDLE_DISTANCE_FROM_EDGE_Y);
float deltaTime = (float)deltaTimeMs / 1000.0f;
if (mTargetPositionY > mPaddleSprite.y)
{
float diff = mTargetPositionY - mPaddleSprite.y;
mPaddleSprite.y += (diff * deltaTime * GameConsts.PADDLE_INPUT_ACCEL);
if (mPaddleSprite.y > mTargetPositionY)
mPaddleSprite.y = mTargetPositionY;
}
else if (mTargetPositionY < mPaddleSprite.y)
{
float diff = mPaddleSprite.y - mTargetPositionY;
mPaddleSprite.y -= (diff * deltaTime * GameConsts.PADDLE_INPUT_ACCEL);
if (mPaddleSprite.y < mTargetPositionY)
mPaddleSprite.y = mTargetPositionY;
}
mPaddleSprite.update(deltaTimeMs);
}
public void render()
{
mPaddleSprite.render();
}
}