Android Open Source - DiceInDark Dice Screen






From Project

Back to project page DiceInDark.

License

The source code is released under:

GNU General Public License

If you think the Android project DiceInDark 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

/*    Dice in the dark. D & D app for the blind and seeing impaired,
 *    Copyright (C) <2013r>  <Lovisa Irpa Helgadottir>
 *//from   w ww .  j a v a  2s . c o  m
 *    This program is free software: you can redistribute it and/or modify
 *    it under the terms of the GNU General Public License as published by
 *    the Free Software Foundation, either version 3 of the License, or
 *    (at your option) any later version.
 *
 *    This program is distributed in the hope that it will be useful,
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *    GNU General Public License for more details.
 *
 *    You should have received a copy of the GNU General Public License
 *    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package com.plovergames.diceindark;

import java.util.ArrayList;
import java.util.List;

import javax.microedition.khronos.opengles.GL10;

import com.plovergames.framework.Game;
import com.plovergames.framework.Input.GestureEvent;
import com.plovergames.framework.gl.Camera2D;
import com.plovergames.framework.gl.SpriteBatcher;
import com.plovergames.framework.impl.GLScreen;


public class DiceScreen extends GLScreen {

  static final int DICE_READY =0;
  static final int DICE_SHAKING=1;
  static final int DICE_THROW =2;

  Camera2D guiCam;
  SpriteBatcher batcher;
  DiceRender renderer;
  List<Die> dice;
  int state;
  int currentDie =0;
  boolean speakSum = false;
  float stateTime=0;
  private boolean initializing = true;
  public DiceScreen( Game game) {
    super(game);
    guiCam = new Camera2D(glGraphics, 320, 480);
    batcher = new SpriteBatcher(glGraphics, 100);
    this.state= DICE_READY;
    dice = new ArrayList<Die>();
    dice.add(new Die(4));
    dice.add(new Die(6));
    dice.add(new Die(8));
    dice.add(new Die(10));
    dice.add(new Die(12)); 
    dice.add(new Die(20));
    dice.add(new Die(100));
    // TODO Auto-generated constructor stub
    renderer = new DiceRender(glGraphics, batcher, this);
  }

  @Override
  public void update(float deltaTime) {

    if(initializing){
      initializing = false;
      game.getAudio().speakOut(""+dice.get(currentDie).name);
    }

    stateTime+=deltaTime;
    float accelX = game.getInput().getAccelX();
    float accelY = game.getInput().getAccelY();


    switch(state){
    case DICE_READY:
      if(Math.abs(accelX)>10 ||Math.abs(accelY)>30){
        dice.get(currentDie).shake();
        state=DICE_SHAKING;
        Assets.playSound(Assets.shakeDie);
        return;
      }
      List<GestureEvent> gestureEvents = game.getInput().getGestureEvents();
      int len = gestureEvents.size();
      for(int i = 0; i<len; i++){
        GestureEvent event = gestureEvents.get(i);  
        if(event.type == GestureEvent.FLING_RIGHT){
          dice.get(currentDie).numberOfDice=1;
          currentDie--;
          if(currentDie<0)
            currentDie=dice.size()-1;
          game.getAudio().speakOut(dice.get(currentDie).name);
        }
        if(event.type == GestureEvent.FLING_LEFT){
          dice.get(currentDie).numberOfDice=1;
          currentDie++;
          if(currentDie>dice.size()-1)
            currentDie=0;

          game.getAudio().speakOut(dice.get(currentDie).name);

        }
        if(event.type == GestureEvent.DOUBLE_TAP){
          game.setScreen(new MainMenuScreen(game));
          return;
        }
        if(event.type == GestureEvent.SINGLE_TAP){
          game.getAudio().speakOut(dice.get(currentDie).name);
          if(dice.get(currentDie).numberOfDice>1)
            game.getAudio().speakOut(dice.get(currentDie).name+"Number of Dice, "+dice.get(currentDie).numberOfDice);
          if(dice.get(currentDie).hasResult)
            speakResult(speakSum);
            speakSum = !speakSum;
        
        }
        if(event.type == GestureEvent.SCROLL_UP){
          if(dice.get(currentDie).sides!=100){
            dice.get(currentDie).hasResult= false;
            dice.get(currentDie).numberOfDice++;
            if(dice.get(currentDie).numberOfDice>50)
              dice.get(currentDie).numberOfDice=1;
            game.getAudio().speakOut(""+dice.get(currentDie).numberOfDice+", "+dice.get(currentDie).name);
          }
        }
        if(event.type == GestureEvent.SCROLL_DOWN){
          if(dice.get(currentDie).sides!=100){
            dice.get(currentDie).hasResult= false;
            dice.get(currentDie).numberOfDice=(dice.get(currentDie).numberOfDice==1)?1:dice.get(currentDie).numberOfDice-1;
            game.getAudio().speakOut(""+dice.get(currentDie).numberOfDice+", "+dice.get(currentDie).name);
          }
        }
      }
      return;

    case DICE_SHAKING:
      game.getInput().getGestureEvents();
      if(Math.abs(accelX)>10 ||Math.abs(accelY)>10){
        dice.get(currentDie).shake();
        stateTime=0;

      }

      if(stateTime>.5f){
        Assets.playSound(Assets.rollDie);
        state = DICE_THROW;
      }      
      return;

    case DICE_THROW:
      game.getInput().getGestureEvents();
      if (stateTime >2f){
        dice.get(currentDie).thrown();
        speakResult(speakSum);
        speakSum = !speakSum;
        //game.getAudio().speakOut("Result, "+dice.get(currentDie).result);
        state = DICE_READY;
      }
      return;
    }

  }

  private void speakResult(boolean speakSum){
    String speak;
    if (!speakSum){
      speak = "Result, ";
      for(int i =0; i<dice.get(currentDie).sides;i++){
        if(dice.get(currentDie).result[i]!=0)
          if(dice.get(currentDie).numberOfDice>1) speak+=dice.get(currentDie).result[i]+" of "+(i+1)+", ";
          else speak +=(i+1);

      }
      
    }else{
      speak = "Sum, ";
      int sum =0;
      for(int i = 0;i<dice.get(currentDie).sides;i++ ){
        if(dice.get(currentDie).result[i]!=0)
          if(dice.get(currentDie).numberOfDice>1) sum+=dice.get(currentDie).result[i]*(i+1);
          else sum+=(i+1);
      }
      speak+=""+sum;
    }
    
    game.getAudio().speakOut(speak);
  }

  @Override
  public void present(float deltaTime) {
    GL10 gl = glGraphics.getGL();
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
    gl.glEnable(GL10.GL_TEXTURE_2D);
    renderer.render();

  }

  @Override
  public void pause() {
    // TODO Auto-generated method stub

  }

  @Override
  public void resume() {
    // TODO Auto-generated method stub

  }

  @Override
  public void dispose() {
    // TODO Auto-generated method stub

  }


}




Java Source Code List

com.example.diceindark.Assets.java
com.example.diceindark.DiceInDark.java
com.example.diceindark.DiceRender.java
com.example.diceindark.DiceScreen.java
com.example.diceindark.Die.java
com.example.diceindark.MainMenuScreen.java
com.example.framework.AndroidFileIO.java
com.example.framework.Audio.java
com.example.framework.FileIO.java
com.example.framework.GameObject.java
com.example.framework.Game.java
com.example.framework.Graphics.java
com.example.framework.Input.java
com.example.framework.Pixmap.java
com.example.framework.Pool.java
com.example.framework.Screen.java
com.example.framework.Sound.java
com.example.framework.gl.Animation.java
com.example.framework.gl.BindableVertices.java
com.example.framework.gl.Camera2D.java
com.example.framework.gl.Font.java
com.example.framework.gl.SpriteBatcher.java
com.example.framework.gl.TextureRegion.java
com.example.framework.gl.Texture.java
com.example.framework.gl.Vertices.java
com.example.framework.impl.AccelerometerHandler.java
com.example.framework.impl.AndroidAudio.java
com.example.framework.impl.AndroidGraphics.java
com.example.framework.impl.AndroidInput.java
com.example.framework.impl.AndroidPixmap.java
com.example.framework.impl.AndroidSound.java
com.example.framework.impl.GLGame.java
com.example.framework.impl.GLGraphics.java
com.example.framework.impl.GLScreen.java
com.example.framework.impl.GestureHandler.java
com.example.framework.impl.KeyboardHandler.java
com.example.framework.impl.TouchHandler.java
com.example.framework.math.Circle.java
com.example.framework.math.OverlapTester.java
com.example.framework.math.Rectangle.java
com.example.framework.math.Vector2.java
com.plovergames.diceindark.Assets.java
com.plovergames.diceindark.DiceInDark.java
com.plovergames.diceindark.DiceRender.java
com.plovergames.diceindark.DiceScreen.java
com.plovergames.diceindark.Die.java
com.plovergames.diceindark.MainMenuScreen.java
com.plovergames.framework.AndroidFileIO.java
com.plovergames.framework.Audio.java
com.plovergames.framework.FileIO.java
com.plovergames.framework.GameObject.java
com.plovergames.framework.Game.java
com.plovergames.framework.Graphics.java
com.plovergames.framework.Input.java
com.plovergames.framework.Pixmap.java
com.plovergames.framework.Pool.java
com.plovergames.framework.Screen.java
com.plovergames.framework.Sound.java
com.plovergames.framework.gl.Animation.java
com.plovergames.framework.gl.BindableVertices.java
com.plovergames.framework.gl.Camera2D.java
com.plovergames.framework.gl.Font.java
com.plovergames.framework.gl.SpriteBatcher.java
com.plovergames.framework.gl.TextureRegion.java
com.plovergames.framework.gl.Texture.java
com.plovergames.framework.gl.Vertices.java
com.plovergames.framework.impl.AccelerometerHandler.java
com.plovergames.framework.impl.AndroidAudio.java
com.plovergames.framework.impl.AndroidGraphics.java
com.plovergames.framework.impl.AndroidInput.java
com.plovergames.framework.impl.AndroidPixmap.java
com.plovergames.framework.impl.AndroidSound.java
com.plovergames.framework.impl.GLGame.java
com.plovergames.framework.impl.GLGraphics.java
com.plovergames.framework.impl.GLScreen.java
com.plovergames.framework.impl.GestureHandler.java
com.plovergames.framework.impl.TouchHandler.java
com.plovergames.framework.math.Rectangle.java
com.plovergames.framework.math.Vector2.java