Android Open Source - DivisionByZero Tower Manager From Project Back to project page DivisionByZero .
License The source code is released under:
Apache License
If you think the Android project DivisionByZero listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
Java Source Code package com.ggstudios.divisionbyzero;
/ / f r o m w w w . j a v a 2 s . c o m
import static fix.android.opengl.GLES20.glDrawElements;
import static fix.android.opengl.GLES20.glVertexAttribPointer;
import com.ggstudios.utils.BufferUtils;
import com.ggstudios.utils.DebugLog;
import android.opengl.GLES20;
public class TowerManager extends DrawableCollection<Tower> {
private static final String TAG = "TowerManager" ;
private int bufferHandle;
private int textureHandle;
private static final int TEXTURE_DATA_SIZE = 4 * 4;
private static final int MAX_TEXTURES = 300;
private float [] vertexBuffer = new float [MAX_TEXTURES * TEXTURE_DATA_SIZE];
private boolean dirty = false;
public void loadGlData() {
DebugLog.d(TAG, "loadGlData()" );
refresh();
}
@Override
public void addDrawable(final Tower t) {
super.addDrawable(t);
dirty = true;
}
@Override
public void removeDrawable(int index) {
super.removeDrawable(index);
dirty = true;
}
@Override
public void draw(float offX, float offY) {
if (dirty) {
cleanBuffer();
}
Utils.resetMatrix();
Utils.translateAndCommit(offX, offY);
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureHandle);
GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, bufferHandle);
GLES20.glBindBuffer(GLES20.GL_ELEMENT_ARRAY_BUFFER, Core.indiceHandle);
glVertexAttribPointer(Core.A_POSITION_HANDLE, 2, GLES20.GL_FLOAT, false, TEXTURE_DATA_SIZE, 0);
glVertexAttribPointer(Core.A_TEX_COORD_HANDLE, 2, GLES20.GL_FLOAT, false, TEXTURE_DATA_SIZE, 2 * 4);
glDrawElements(GLES20.GL_TRIANGLES, len * 6, GLES20.GL_UNSIGNED_SHORT, 0);
Core.gr.restoreTextureHandle();
for (int i = len - 1; i >= 0; i--) {
drawables.get(i).drawSpecial(offX, offY);
}
}
private void cleanBuffer() {
dirty = false;
int offset = 0;
final float mapH = Core.MAP_SDP / 2f;
for (int i = len - 1; i >= 0; i--) {
drawables.get(i).drawSprite(vertexBuffer, offset, -mapH, -mapH);
offset += TEXTURE_DATA_SIZE;
}
bufferHandle = BufferUtils.copyToBuffer(vertexBuffer, offset);
}
@Override
public void refresh() {
textureHandle= Core.tm.get(R.drawable.tower_atlas);
if (textureHandle == -1) return ;
bufferHandle = Core.GeneralBuffers.map_tile.handle;
super.refresh();
if (this.len != 0) {
int offset = 0;
final float mapH = Core.MAP_SDP / 2f;
for (int i = this.len - 1; i >= 0; i--) {
drawables.get(i).drawSprite(vertexBuffer, offset, -mapH, -mapH);
offset += TEXTURE_DATA_SIZE;
}
bufferHandle = BufferUtils.copyToBuffer(vertexBuffer, offset);
}
}
public void invalidate() {
dirty = true;
}
}
Java Source Code List com.ggstudios.divisionbyzero.ActivityAbout.java com.ggstudios.divisionbyzero.ActivityLevelSelection.java com.ggstudios.divisionbyzero.ActivityMainMenu.java com.ggstudios.divisionbyzero.ActivitySettings.java com.ggstudios.divisionbyzero.ActivitySplashScreen.java com.ggstudios.divisionbyzero.ApplicationMain.java com.ggstudios.divisionbyzero.BaseActivity.java com.ggstudios.divisionbyzero.BaseDialog.java com.ggstudios.divisionbyzero.BulletManager.java com.ggstudios.divisionbyzero.Bullet.java com.ggstudios.divisionbyzero.Button.java com.ggstudios.divisionbyzero.Circle.java com.ggstudios.divisionbyzero.ClickableCollection.java com.ggstudios.divisionbyzero.Clickable.java com.ggstudios.divisionbyzero.ConfirmDialog.java com.ggstudios.divisionbyzero.Core.java com.ggstudios.divisionbyzero.CustomGLSurfaceView.java com.ggstudios.divisionbyzero.DialogManager.java com.ggstudios.divisionbyzero.DrawableCollection.java com.ggstudios.divisionbyzero.DrawableString.java com.ggstudios.divisionbyzero.Drawable.java com.ggstudios.divisionbyzero.EndDialog.java com.ggstudios.divisionbyzero.Event.java com.ggstudios.divisionbyzero.ExplosionGenerator.java com.ggstudios.divisionbyzero.ExtrasManager.java com.ggstudios.divisionbyzero.FontManager.java com.ggstudios.divisionbyzero.GameRenderer.java com.ggstudios.divisionbyzero.GameUpdater.java com.ggstudios.divisionbyzero.Game.java com.ggstudios.divisionbyzero.Grid.java com.ggstudios.divisionbyzero.Hud.java com.ggstudios.divisionbyzero.InGameMenu.java com.ggstudios.divisionbyzero.InfoDialog.java com.ggstudios.divisionbyzero.Label.java com.ggstudios.divisionbyzero.LevelManager.java com.ggstudios.divisionbyzero.LevelMap.java com.ggstudios.divisionbyzero.LineGuide.java com.ggstudios.divisionbyzero.MainActivity.java com.ggstudios.divisionbyzero.Map.java com.ggstudios.divisionbyzero.MessageDialog.java com.ggstudios.divisionbyzero.ParticleEngine.java com.ggstudios.divisionbyzero.PathFinder.java com.ggstudios.divisionbyzero.PauseMenu.java com.ggstudios.divisionbyzero.PictureBox.java com.ggstudios.divisionbyzero.Player.java com.ggstudios.divisionbyzero.PopupMenu.java com.ggstudios.divisionbyzero.Rectangle.java com.ggstudios.divisionbyzero.Shader.java com.ggstudios.divisionbyzero.SpawnManager.java com.ggstudios.divisionbyzero.SpriteAnimation.java com.ggstudios.divisionbyzero.SpriteManager.java com.ggstudios.divisionbyzero.Sprite.java com.ggstudios.divisionbyzero.Statbar.java com.ggstudios.divisionbyzero.StateManager.java com.ggstudios.divisionbyzero.TargetRectangle.java com.ggstudios.divisionbyzero.TextureManager.java com.ggstudios.divisionbyzero.TowerInfoDialog.java com.ggstudios.divisionbyzero.TowerLibrary.java com.ggstudios.divisionbyzero.TowerManager.java com.ggstudios.divisionbyzero.TowerMenu.java com.ggstudios.divisionbyzero.Tower.java com.ggstudios.divisionbyzero.UpdatableCollection.java com.ggstudios.divisionbyzero.Updatable.java com.ggstudios.divisionbyzero.UpgradeDialog.java com.ggstudios.divisionbyzero.Utils.java com.ggstudios.divisionbyzero.VBO.java com.ggstudios.divisionbyzero.WaveControlDialog.java com.ggstudios.divisionbyzero.WaveControlHud.java com.ggstudios.divisionbyzero.ZoomControl.java com.ggstudios.utils.BitmapUtils.java com.ggstudios.utils.BufferUtils.java com.ggstudios.utils.DebugLog.java com.ggstudios.utils.ShaderUtils.java com.ggstudios.widget.LevelMapBackground.java fix.android.opengl.GLES20.java