Rev 868 |
Go to most recent revision |
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.
x = mStartX
;
mPadSprite.
y = mStartY
;
mPadSprite.
w = PAD_SIZE_START
;
mPadSprite.
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.
x = mStartX + diffX/
2;
mArrowSprite.
y = mStartY + diffY/
2;
mArrowSprite.
w = len
* 2;
mArrowSprite.
h = ARROW_HEIGHT
;
mArrowSprite.
centerPivot();
mArrowSprite.
angle = MathUtil.
radToDeg((float)Math.
atan2(diffY, - diffX
));
mArrowSprite.
render();
mPadSprite.
x = mCurrentX
;
mPadSprite.
y = mCurrentY
;
mPadSprite.
w = PAD_SIZE_CURRENT
;
mPadSprite.
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
;
}
}