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;
//from   ww w.j  ava 2  s .  co 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