Subversion Repositories AndroidProjects

Rev

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

}