Android Open Source - DivisionByZero Bullet 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 a v  a 2  s . c  om
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;

import android.opengl.GLES20;

import com.ggstudios.utils.BufferUtils;
import com.ggstudios.utils.DebugLog;

public class BulletManager extends DrawableCollection<Bullet> {
  private static final String TAG = "BulletManager";
  
  private VBO bulletVbo;
  private int capacity;
  
  public BulletManager() {
    bulletVbo = new VBO();
  }
  
  public void loadGlData() {
    final float w = Core.MAP_SDP * 0.1f;
    final float[] vertices = {
      -w, -w,
      w, -w,
      -w, w,
      w, w
    };
    
    bulletVbo.setVBO(w * 2.0f, w * 2.0f, 
        BufferUtils.copyToBuffer(vertices), VBO.Alignment.CENTER);
  }
  
  public void growPool(int size) {
    capacity = capacity + size;
    
    for(int i = len; i < capacity; i++) {
      Bullet b = new Bullet(0, 0);
      drawables.add(b);
    }
  }
  
  /**
   * Attempts to grab a unused instance of a bullet and entire it into
   * the drawing pool. The PictureBox returned will be initially invisible.
   * The caller should set the properties of the object first, then
   * reinstate the object by making it visible.
   * 
   * If there are non left, the bullet pool size will be increased.
   * @return A bullet drawable object.
   */
  public Bullet obtain() {
    Bullet b = drawables.get(len++);
    b.isVisible = false;
    b.setVBO(bulletVbo);
    
    return b;
  }
  
  @Override
  public void addDrawable(Bullet d) {
    DebugLog.e(TAG, "Error. Do not call add drawable on this object." +
        " Call obtain() instead.");
  }

  public void setBulletBounds(float l, float t, float r, float b) {
    Bullet.setBounds(l, t, r, b);
  }
  
  @Override
  public void draw(float offX, float offY) {
    GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE);
    super.draw(offX, offY);
    Core.gr.resetBlendFunc();
  }
  
  @Override
  public void refresh(){
    loadGlData();
    super.refresh();
  }
  
  public void writeToStream(DataOutputStream stream) throws IOException {
    final int len = size();
    stream.writeInt(len);
    for(int i = 0; i < len; i++) {
      Bullet b = get(i);
      b.writeToStream(stream);
    }
  }
  
  public void readFromStream(DataInputStream stream) throws IOException {
    final int len = stream.readInt();
    for(int i = 0; i < len; i++) {
      Bullet b = obtain();
      b.loadFromStream(stream);
      b.isVisible = true;
      
      Core.gu.addGameUpdatable(b);
    }
  }
}




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