Subversion Repositories AndroidProjects

Rev

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

Rev Author Line No. Line
867 chris 1
package com.gebauz.burutaru.game.entities;
2
 
3
import com.badlogic.gdx.graphics.Texture;
868 chris 4
import com.badlogic.gdx.graphics.Texture.TextureFilter;
867 chris 5
import com.gebauz.bauzoid.graphics.model.SimpleGeometry;
6
import com.gebauz.bauzoid.graphics.model.Geometry.PrimitiveType;
7
import com.gebauz.bauzoid.graphics.sprite.Sprite;
8
import com.gebauz.bauzoid.math.MathUtil;
9
import com.gebauz.burutaru.game.GameLogic;
10
 
11
public class VirtualPad extends Entity
12
{
13
        // Constants========================================================================================
14
 
879 chris 15
        public static final float PAD_SIZE_START = 64.0f;
16
        public static final float PAD_SIZE_CURRENT = 80.0f;
17
        public static final float ARROW_WIDTH = 64.0f;
18
        public static final float ARROW_HEIGHT = 16.0f;
867 chris 19
 
20
        // Embedded Types===================================================================================
21
 
22
        // Fields===========================================================================================
23
 
24
        private boolean mVisible = false;
25
 
26
        private float mStartX = 0.0f;
27
        private float mStartY = 0.0f;
28
 
29
        private float mCurrentX = 0.0f;
30
        private float mCurrentY = 0.0f;
31
 
32
        private Sprite mPadSprite = null;
33
        private Sprite mArrowSprite = null;
34
 
35
        //private SimpleGeometry mArrow = null;
36
        //private Texture mArrowTexture = null;
37
 
38
        // Methods==========================================================================================
39
 
40
        public VirtualPad(GameLogic gameLogic)
41
        {
42
                super(gameLogic);
43
 
44
                mPadSprite = new Sprite(getGraphics(), "data/textures/vstick.png");
45
                mArrowSprite = new Sprite(getGraphics(), "data/textures/vstick_arrow.png");
46
        }
47
 
48
        @Override
49
        public void initAsync()
50
        {
51
                mPadSprite.initAsync();
52
                mArrowSprite.initAsync();
53
 
54
                //getAssetManager().load("data/textures/vstick_arrow.png", Texture.class);
55
        }
56
 
57
        @Override
58
        public void init()
59
        {
60
                mPadSprite.init();
868 chris 61
                mPadSprite.getTexture().setFilter(TextureFilter.Linear, TextureFilter.Linear);
867 chris 62
                mArrowSprite.init();
868 chris 63
                mArrowSprite.getTexture().setFilter(TextureFilter.Linear, TextureFilter.Linear);
867 chris 64
 
65
                /*mArrowTexture = getAssetManager().get("data/textures/vstick_arrow.png");
66
 
67
                float[] vertices = {
68
                        0.0f, 0.0f, 0.0f,
69
                        1.0f, 0.0f, 0.0f,
70
                        1.0f, 1.0f, 0.0f,
71
                        0.0f, 1.0f, 0.0f
72
                };
73
 
74
                float[] texCoords = {
75
                        0.0f, 0.0f,
76
                        1.0f, 0.0f,
77
                        1.0f, 1.0f,
78
                        0.0f, 1.0f
79
                };
80
 
81
                short[] indices = {
82
                        0, 1, 2,
83
                        0, 2, 3
84
                };
85
 
86
                mArrow = new SimpleGeometry(getGraphics(), PrimitiveType.TRIANGLES);
87
                mArrow.setPositions(vertices);
88
                mArrow.setTexCoords(texCoords, false);
89
                mArrow.setIndices(indices);     */
90
        }
91
 
92
        @Override
93
        public void exit()
94
        {
95
                if (mPadSprite != null)
96
                {
97
                        mPadSprite.dispose();
98
                        mPadSprite = null;
99
                }
100
 
101
                /*if (mArrowTexture != null)
102
                {
103
                        mArrowTexture.dispose();
104
                        mArrowTexture = null;
105
                }*/
106
 
107
                if (mArrowSprite != null)
108
                {
109
                        mArrowSprite.dispose();
110
                        mArrowSprite = null;
111
                }
112
        }
113
 
114
        @Override
115
        public void update(float deltaTime)
116
        {
117
        }
118
 
119
        @Override
120
        public void render()
121
        {
122
                if (mVisible)
123
                {
900 chris 124
                        mPadSprite.param.x = mStartX;
125
                        mPadSprite.param.y = mStartY;
126
                        mPadSprite.param.w = PAD_SIZE_START;
127
                        mPadSprite.param.h = PAD_SIZE_START;
867 chris 128
                        mPadSprite.centerPivot();
129
                        mPadSprite.render();
130
 
131
                        float diffX = mCurrentX - mStartX;
132
                        float diffY = mCurrentY - mStartY;
133
 
134
                        float len = (float)Math.sqrt(diffX*diffX + diffY*diffY);
135
 
900 chris 136
                        mArrowSprite.param.x = mStartX + diffX/2;
137
                        mArrowSprite.param.y = mStartY + diffY/2;
138
                        mArrowSprite.param.w = len * 2;
139
                        mArrowSprite.param.h = ARROW_HEIGHT;
867 chris 140
                        mArrowSprite.centerPivot();
900 chris 141
                        mArrowSprite.param.angle = MathUtil.radToDeg((float)Math.atan2(diffY, - diffX));
867 chris 142
                        mArrowSprite.render();                 
143
 
900 chris 144
                        mPadSprite.param.x = mCurrentX;
145
                        mPadSprite.param.y = mCurrentY;
146
                        mPadSprite.param.w = PAD_SIZE_CURRENT;
147
                        mPadSprite.param.h = PAD_SIZE_CURRENT;
867 chris 148
                        mPadSprite.centerPivot();
149
                        mPadSprite.render();
150
                }
151
        }      
152
 
153
        // Getters/Setters==================================================================================
154
 
155
        public void setVisible(boolean visible) { mVisible = visible; }
156
 
157
        public void setPositions(float startX, float startY, float x, float y)
158
        {
159
                mStartX = startX; mStartY = startY;
160
                mCurrentX = x; mCurrentY = y;
161
        }
162
 
163
}
164
 
165
 
166