Subversion Repositories AndroidProjects

Rev

Blame | Last modification | View Log | RSS feed

package com.gebauz.pingk.entities;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Texture;
import com.gebauz.Bauzoid.graphics.sprite.Sprite;
import com.gebauz.pingk.game.GameConsts;
import com.gebauz.pingk.game.GameLogic;

public class BallWarp extends Entity
{
        private Sprite mSprite = null;
       
        private float mSizes[] =
        {
                GameConsts.BALL_WARP_SIZE_0,
                GameConsts.BALL_WARP_SIZE_1,
                GameConsts.BALL_WARP_SIZE_2,
                GameConsts.BALL_WARP_SIZE_3,
        };
       
        private float mAlphas[] =
        {
                GameConsts.BALL_WARP_ALPHA_0,
                GameConsts.BALL_WARP_ALPHA_1,
                GameConsts.BALL_WARP_ALPHA_2,
                GameConsts.BALL_WARP_ALPHA_3,
        };
       
        public BallWarp(GameLogic gameLogic)
        {
                super(gameLogic);
        }

        @Override
        public void init()
        {
                mSprite = new Sprite(getGameLogic().getGraphics(), new Texture(Gdx.files.internal("data/textures/warp.png")));         
                mSprite.x = GameConsts.VIRTUAL_SCREEN_WIDTH/2.0f;
                mSprite.y = getGameLogic().getPlayField().getVirtualHeight()/2.0f;
                mSprite.centerPivot();

                mSprite.color = GameConsts.PINGK_COLOR.copy();
               
                reset();
        }

        @Override
        public void exit()
        {
                if (mSprite != null)
                {
                        mSprite.dispose();
                        mSprite = null;
                }
        }

        @Override
        public void update(float deltaTime)
        {
                for (int i = 0; i < 4; i++)
                {
                        if (mAlphas[i] < 0.0f)
                                continue;
                       
                        mSizes[i] += GameConsts.BALL_WARP_GROWTH * deltaTime;
                        mAlphas[i] -= GameConsts.BALL_WARP_FADE * deltaTime;
                }
        }

        @Override
        public void render()
        {
                for (int i = 0; i < 4; i++)
                {
                        if (mAlphas[i] < 0.0f)
                                continue;
                       
                        mSprite.w = mSizes[i];
                        mSprite.h = mSizes[i];
                       
                        mSprite.centerPivot();
                       
                        mSprite.color.w = mAlphas[i];
                       
                        mSprite.render();
                }
        }
       
        public void reset()
        {
                mSizes[0] = GameConsts.BALL_WARP_SIZE_0;
                mSizes[1] = GameConsts.BALL_WARP_SIZE_1;
                mSizes[2] = GameConsts.BALL_WARP_SIZE_2;
                mSizes[3] = GameConsts.BALL_WARP_SIZE_3;

                mAlphas[0] = GameConsts.BALL_WARP_ALPHA_0;
                mAlphas[1] = GameConsts.BALL_WARP_ALPHA_1;
                mAlphas[2] = GameConsts.BALL_WARP_ALPHA_2;
                mAlphas[3] = GameConsts.BALL_WARP_ALPHA_3;             
        }

}