Click here to Skip to main content
15,892,517 members
Articles / Mobile Apps / Android

Terminal Velocity Android

Rate me:
Please Sign up or sign in to vote.
4.47/5 (9 votes)
23 May 2013Apache9 min read 42.7K   976   30  
An android game using NDK JNI and Java.
/*
 * jni.h
 *
 *  Created on: 01-Nov-2012
 *      Author: Praveen Ojha
 */

#ifndef JNIfun_H_
#define JNIfun_H_
#include<jni.h>

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 ////////////////////////////////Jni glue code below/////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 extern "C"
{

JNIEXPORT int JNICALL Java_inductionlabs_jni_bridge_Bridge_object(JNIEnv * env, jclass clas,jobject obj,jsize i)
{
switch(i)
{case 0:k=0;engine::Glgame=env->NewGlobalRef(obj);break;
 case 1:k=1;engine::Batcher=env->NewGlobalRef(obj);break;
 case 2:k=2;engine::GuiCam=env->NewGlobalRef(obj);break;
 case 3:k=3;engine::GameScreen=env->NewGlobalRef(obj);break;
 case 4:k=4;engine::Set=env->NewGlobalRef(obj);break;
 case 6:k=6;engine::Asset=env->NewGlobalRef(obj);break;
 default:k=12;break;
}
//Gaining class handles so can call their methods.
if(i==0)
{engine::assets=env->FindClass("inductionlabs/tervel/Assets");
engine::javaBatcher=env->FindClass("inductionlabs/jni/bridge/BatcherBridge");
engine::setting=env->FindClass("inductionlabs/jni/bridge/tools_seting_bridge");
//Above they are only local references so converting them to global one
engine::assets= (jclass)(env->NewGlobalRef(engine::assets));
engine::javaBatcher=(jclass)(env->NewGlobalRef(engine::javaBatcher));
engine::setting=(jclass)(env->NewGlobalRef(engine::setting));

}
return i;
}

//////////////////////////////////Frame Draw Update/////////////////////////////////////////////
JNIEXPORT void JNICALL Java_inductionlabs_tervel_NativeFun_draw(JNIEnv * env,jclass clas,float dt)
{ Game::Draw(env,dt);
}
///////////////////////////////////////Init the game////////////////////////////////////////////
JNIEXPORT void JNICALL Java_inductionlabs_tervel_NativeFun_createEngine(JNIEnv * env,jclass clas)
{Game::gd.Gamestate=4;
 Game::vm.screenstate=0;

}
//////////////////////////////////////Input update///////////////////////////////////////////////
JNIEXPORT void JNICALL Java_inductionlabs_tervel_NativeFun_update(JNIEnv * env,jclass clas)
{Game::Update(env);
}
/////////////////////////////////Input accelerometer//////////////////////////////////////////////////
JNIEXPORT int JNICALL Java_inductionlabs_tervel_NativeFun_updateacc(JNIEnv * env,jclass clas,float accelX, float accelY,float accelZ)
{Game::Update(env,accelX,accelY,accelZ);
return 1;
}
////////////////////////////////////Input touch///////////////////////////////////////////////////////
JNIEXPORT bool JNICALL Java_inductionlabs_tervel_NativeFun_updatekey(JNIEnv * env,jclass clas,int keyCode, int type)
{return Game::Update(env,keyCode, type);
}
/////////////////////////////////////Input key///////////////////////////////////////////////////////
JNIEXPORT void JNICALL Java_inductionlabs_tervel_NativeFun_updatetou(JNIEnv * env,jclass clas,float x, float y, int type, int pointer)
{Game::Update(env, x, y, type, pointer);
}
//////////////////////////////////////////State Poster//////////////////////////////////////////////////
JNIEXPORT void JNICALL Java_inductionlabs_tervel_NativeFun_poststate(JNIEnv * env,jclass clas,int state)
{Game::State(env, state);
}


///////////////////////////////////////Init the musci and sound////////////////////////////////////////////
JNIEXPORT void JNICALL Java_inductionlabs_tervel_NativeFun_postaudiostate(JNIEnv * env,jclass clas,bool music,bool sound)
{
	Game::postaudiodata(music,sound);

}
};
/////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////End of Jni call  code///////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////




#endif



//Draw Call Functions End



By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Apache License, Version 2.0


Written By
Chief Technology Officer InductionLabs
India India
Currently I am an independent developer usually develops under brand name Induction games sometimes under Induction labs ,Can say that I am professionally developing apps for more than 4 years .

Some links to my apps in different apps stores are ..


Windows Phone
http://www.windowsphone.com/en-US/store/publishers?publisherId=InductionGames

Android
1. https://play.google.com/store/apps/developer?id=Induction+Labs&hl=en
2.https://play.google.com/store/apps/developer?id=Induction%20Games

Blackberry Store
http://appworld.blackberry.com/webstore/vendor/39848/?lang=en

Flash Games :
http://www.mochigames.com/developer/praveenojha/
*my flash portal is no longer active so the quiz game cant be played .

Perceptual computing phase 1 first prize Winner app (air piano)
http://software.intel.com/sites/campaigns/perceptualshowcase/air-piano.htm

My Blog
http://praveenojha.com

Comments and Discussions