Back to project page DiceInDark.
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.
/* 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 } }