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> */* ww w . j av a2 s . c om*/ * 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.framework.impl; import javax.microedition.khronos.egl.EGLConfig; import javax.microedition.khronos.opengles.GL10; import android.app.Activity; import android.content.Context; import android.opengl.GLSurfaceView; import android.opengl.GLSurfaceView.Renderer; import android.os.Bundle; import android.os.PowerManager; import android.os.PowerManager.WakeLock; import android.view.Window; import android.view.WindowManager; import com.plovergames.framework.AndroidFileIO; import com.plovergames.framework.Audio; import com.plovergames.framework.FileIO; import com.plovergames.framework.Game; import com.plovergames.framework.Graphics; import com.plovergames.framework.Input; import com.plovergames.framework.Screen; public abstract class GLGame extends Activity implements Game, Renderer { enum GLGameState { Initialized, Running, Paused, Finished, Idle } GLSurfaceView glView; GLGraphics glGraphics; Audio audio; Input input; FileIO fileIO; Screen screen; GLGameState state = GLGameState.Initialized; Object stateChanged = new Object(); long startTime = System.nanoTime(); WakeLock wakeLock; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); glView = new GLSurfaceView(this); glView.setRenderer(this); setContentView(glView); glGraphics = new GLGraphics(glView); fileIO = new AndroidFileIO(this); audio = new AndroidAudio(this); input = new AndroidInput(this, glView, 1, 1); PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "GLGame"); } @Override public void onResume() { super.onResume(); glView.onResume(); wakeLock.acquire(); } public void onSurfaceCreated(GL10 gl, EGLConfig config) { glGraphics.setGL(gl); synchronized(stateChanged) { if(state == GLGameState.Initialized) screen = getStartScreen(); state = GLGameState.Running; screen.resume(); startTime = System.nanoTime(); } } public void onSurfaceChanged(GL10 gl, int width, int height) { } public void onDrawFrame(GL10 gl) { GLGameState state = null; synchronized(stateChanged) { state = this.state; } if(state == GLGameState.Running) { float deltaTime = (System.nanoTime()-startTime) / 1000000000.0f; startTime = System.nanoTime(); screen.update(deltaTime); screen.present(deltaTime); } if(state == GLGameState.Paused) { screen.pause(); synchronized(stateChanged) { this.state = GLGameState.Idle; stateChanged.notifyAll(); } } if(state == GLGameState.Finished) { screen.pause(); screen.dispose(); synchronized(stateChanged) { this.state = GLGameState.Idle; stateChanged.notifyAll(); } } } @Override public void onPause() { synchronized(stateChanged) { if(isFinishing()) state = GLGameState.Finished; else state = GLGameState.Paused; while(true) { try { stateChanged.wait(); break; } catch(InterruptedException e) { } } } wakeLock.release(); glView.onPause(); super.onPause(); } public GLGraphics getGLGraphics() { return glGraphics; } public Input getInput() { return input; } public FileIO getFileIO() { return fileIO; } public Graphics getGraphics() { throw new IllegalStateException("We are using OpenGL!"); } public Audio getAudio() { return audio; } public void setScreen(Screen newScreen) { if (newScreen == null) throw new IllegalArgumentException("Screen must not be null"); this.screen.pause(); this.screen.dispose(); newScreen.resume(); newScreen.update(0); this.screen = newScreen; } public Screen getCurrentScreen() { return screen; } }