Android Open Source - crabox Stage Generator






From Project

Back to project page crabox.

License

The source code is released under:

Apache License

If you think the Android project crabox 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.costular.crabox.util;
/*from   w  w  w . java2s  .co m*/
import java.util.List;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Camera;
import com.badlogic.gdx.math.MathUtils;
import com.badlogic.gdx.physics.box2d.World;
import com.badlogic.gdx.utils.Disposable;
import com.costular.crabox.actors.Box;
import com.costular.crabox.actors.Player;

public class StageGenerator implements Disposable{
  
  final List<Box> boxes;
  final World world;
  final Player player;
  final Camera camera;
    
  // CONSTANTS :)
  public float minDistance;  // Players' Width * 2.5
  public float maxDistance; // Players' Width * 5
  public float minWidth; // Player's Width * 2.5 - Lo que mide de ancho el jugador
  public float maxWidth; // Player's Width * 7 - Lo que mide de ancho el jugador
  public float maxY;
  public final float height; // Ni puta
  
  public float distance;
  public float width;

  private float lastX;
    
  public StageGenerator(final List<Box> boxes, final Camera camera, final World world, Player player) {
    this.boxes = boxes;
    this.world = world;
    this.camera = camera;
    this.player = player;
    
    //CONSTANTS 
    minDistance = player.getWidth() * 5.80f;
    maxDistance = player.getWidth() * 6f; // 
    minWidth = player.getWidth() * 4.5f;
    maxWidth = player.getWidth() * 6f;
    maxY = 0; 
    height = 2.5f;
    
    firstGenerate();
  }
  
  public void incrementAll() {
    minDistance += 4.3f;
    maxDistance += 5.3f;
    minWidth += 2.2f;
    maxWidth += 2.9f;
    maxY += 0.5f;
  }
  //peneeeeeeee
  public void incrementMinDistance(float ff) {
    minDistance += ff;
  }
  
  public void incrementMaxDistance(float ff) {
    maxDistance += ff;
  }

  private Box getLastBox() {
    return boxes.get(boxes.size()-1);
  }
  
  public boolean isBoxOnLeftSide(Box b) {
    return b.getX() < camera.position.x - camera.viewportWidth;
  }
  
  public boolean isBoxOnRightSide(Box b) {
    return b.getX() >= camera.position.x + camera.viewportWidth / 2;
  }
  
  private boolean isNotOnLeftSide(Box b) {
    if(!isBoxOnLeftSide(b)) return true;
    
    return false;
  }
  
  public void generateBoxes() {    
    
    if(boxes.isEmpty()) {
      return;
    }
    
    if(isBoxOnRightSide(getLastBox())) {
      return;
    }
    
    generate();
  }
  
  private void generate() {
    generate(MathUtils.random(minDistance, maxDistance), MathUtils.random(minWidth, maxWidth));
  }
  
  private void generate(float distance, float width) {    
    Box box = new Box((float) (lastX+distance), MathUtils.random(0, maxY), width, height, false, 0, 0, world);
    boxes.add(box);
      
    lastX = box.getX()+box.getWidth();
  }
  
  public void firstGenerate() {
    Box box = new Box(0, 0, 150, height, false, 0, 0, world);
    boxes.add(box);
      
    lastX = box.getX()+box.getWidth()/1.8f;
  }
  
  public void restart() {
    boxes.clear();
    
    // Los valores por defecto
    minDistance = player.getWidth() * 7f;
    maxDistance = player.getWidth() * 7.5f; // 11 es quiz?s la ideal
    minWidth = player.getWidth() * 4.5f;
    maxWidth = player.getWidth() * 6f;
    maxY = 0.5f;
  }
  
  @Override
  public void dispose() {
    boxes.clear();
    // Player too
    player.dispose();
  }

}




Java Source Code List

com.costular.crabox.AddInterface.java
com.costular.crabox.Cbx.java
com.costular.crabox.Controller.java
com.costular.crabox.GameController.java
com.costular.crabox.GameState.java
com.costular.crabox.MainClass.java
com.costular.crabox.actors.Box.java
com.costular.crabox.actors.ContactBodies.java
com.costular.crabox.actors.DefaultBox.java
com.costular.crabox.actors.DefaultTriangle.java
com.costular.crabox.actors.Player.java
com.costular.crabox.actors.Score.java
com.costular.crabox.actors.ToggleButton.java
com.costular.crabox.android.AndroidLauncher.java
com.costular.crabox.android.Facebook.java
com.costular.crabox.android.Notification.java
com.costular.crabox.android.RequestAd.java
com.costular.crabox.screens.GameScreen.java
com.costular.crabox.screens.HUD.java
com.costular.crabox.screens.MenuScreen.java
com.costular.crabox.util.AssetManager.java
com.costular.crabox.util.AudioManager.java
com.costular.crabox.util.Box2DUtils.java
com.costular.crabox.util.FacebookRequest.java
com.costular.crabox.util.GeometryUtils.java
com.costular.crabox.util.NotificationRequest.java
com.costular.crabox.util.Preferences.java
com.costular.crabox.util.StageGenerator.java
com.costular.crabox.util.Utils.java