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 |