Subversion Repositories AndroidProjects

Rev

Rev 879 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package com.gebauz.burutaru.game.entities;

import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.Texture.TextureFilter;
import com.gebauz.bauzoid.graphics.model.SimpleGeometry;
import com.gebauz.bauzoid.graphics.model.Geometry.PrimitiveType;
import com.gebauz.bauzoid.graphics.sprite.Sprite;
import com.gebauz.bauzoid.math.MathUtil;
import com.gebauz.burutaru.game.GameLogic;

public class VirtualPad extends Entity
{
        // Constants========================================================================================
       
        public static final float PAD_SIZE_START = 64.0f;
        public static final float PAD_SIZE_CURRENT = 80.0f;
        public static final float ARROW_WIDTH = 64.0f;
        public static final float ARROW_HEIGHT = 16.0f;

        // Embedded Types===================================================================================

        // Fields===========================================================================================
       
        private boolean mVisible = false;
       
        private float mStartX = 0.0f;
        private float mStartY = 0.0f;
       
        private float mCurrentX = 0.0f;
        private float mCurrentY = 0.0f;
       
        private Sprite mPadSprite = null;
        private Sprite mArrowSprite = null;

        //private SimpleGeometry mArrow = null;
        //private Texture mArrowTexture = null;
       
        // Methods==========================================================================================
       
        public VirtualPad(GameLogic gameLogic)
        {
                super(gameLogic);
               
                mPadSprite = new Sprite(getGraphics(), "data/textures/vstick.png");
                mArrowSprite = new Sprite(getGraphics(), "data/textures/vstick_arrow.png");
        }

        @Override
        public void initAsync()
        {
                mPadSprite.initAsync();
                mArrowSprite.initAsync();
               
                //getAssetManager().load("data/textures/vstick_arrow.png", Texture.class);
        }
       
        @Override
        public void init()
        {
                mPadSprite.init();
                mPadSprite.getTexture().setFilter(TextureFilter.Linear, TextureFilter.Linear);
                mArrowSprite.init();
                mArrowSprite.getTexture().setFilter(TextureFilter.Linear, TextureFilter.Linear);
               
                /*mArrowTexture = getAssetManager().get("data/textures/vstick_arrow.png");
               
                float[] vertices = {
                        0.0f, 0.0f, 0.0f,
                        1.0f, 0.0f, 0.0f,
                        1.0f, 1.0f, 0.0f,
                        0.0f, 1.0f, 0.0f
                };

                float[] texCoords = {
                        0.0f, 0.0f,
                        1.0f, 0.0f,
                        1.0f, 1.0f,
                        0.0f, 1.0f
                };
               
                short[] indices = {
                        0, 1, 2,
                        0, 2, 3
                };
               
                mArrow = new SimpleGeometry(getGraphics(), PrimitiveType.TRIANGLES);
                mArrow.setPositions(vertices);
                mArrow.setTexCoords(texCoords, false);
                mArrow.setIndices(indices);     */

        }

        @Override
        public void exit()
        {
                if (mPadSprite != null)
                {
                        mPadSprite.dispose();
                        mPadSprite = null;
                }
               
                /*if (mArrowTexture != null)
                {
                        mArrowTexture.dispose();
                        mArrowTexture = null;
                }*/

               
                if (mArrowSprite != null)
                {
                        mArrowSprite.dispose();
                        mArrowSprite = null;
                }
        }

        @Override
        public void update(float deltaTime)
        {
        }

        @Override
        public void render()
        {
                if (mVisible)
                {
                        mPadSprite.param.x = mStartX;
                        mPadSprite.param.y = mStartY;
                        mPadSprite.param.w = PAD_SIZE_START;
                        mPadSprite.param.h = PAD_SIZE_START;
                        mPadSprite.centerPivot();
                        mPadSprite.render();
                       
                        float diffX = mCurrentX - mStartX;
                        float diffY = mCurrentY - mStartY;
                       
                        float len = (float)Math.sqrt(diffX*diffX + diffY*diffY);
                       
                        mArrowSprite.param.x = mStartX + diffX/2;
                        mArrowSprite.param.y = mStartY + diffY/2;
                        mArrowSprite.param.w = len * 2;
                        mArrowSprite.param.h = ARROW_HEIGHT;
                        mArrowSprite.centerPivot();
                        mArrowSprite.param.angle = MathUtil.radToDeg((float)Math.atan2(diffY, - diffX));
                        mArrowSprite.render();                 
                       
                        mPadSprite.param.x = mCurrentX;
                        mPadSprite.param.y = mCurrentY;
                        mPadSprite.param.w = PAD_SIZE_CURRENT;
                        mPadSprite.param.h = PAD_SIZE_CURRENT;
                        mPadSprite.centerPivot();
                        mPadSprite.render();
                }
        }      
       
        // Getters/Setters==================================================================================
       
        public void setVisible(boolean visible) { mVisible = visible; }
       
        public void setPositions(float startX, float startY, float x, float y)
        {
                mStartX = startX; mStartY = startY;
                mCurrentX = x; mCurrentY = y;
        }

}