jint EXPORT_ME
Java_com_beloko_opengames_prboom_NativeLib_init( JNIEnv* env,
		jobject thiz,jstring graphics_dir,jint mem_mb,jobjectArray argsArray,jint renderer,jstring doom_path_,jint snd_buffer_size )
{
	env_ = env;
	curRenderer = renderer;

	argv[0] = "quake";
	int argCount = (env)->GetArrayLength( argsArray);
	LOGI("argCount = %d",argCount);
	for (int i=0; i<argCount; i++) {
		jstring string = (jstring) (env)->GetObjectArrayElement( argsArray, i);
		argv[argc] = (char *)(env)->GetStringUTFChars( string, 0);
		LOGI("arg = %s",argv[argc]);
		argc++;
	}

	Android_SetGameResolution(320,240);

	ANDROID_SAMPLECOUNT = snd_buffer_size;

	doom_path = (char *)(env)->GetStringUTFChars( doom_path_, 0);

	LOGI("doom_path = %s",getDoomPath());

	chdir(getDoomPath());
	putenv("TIMIDITY_CFG=../timidity.cfg");

	PortableInit(argc,argv);

	const char * p = env->GetStringUTFChars(graphics_dir,NULL);
	graphicpath =  std::string(p);



	initControls(android_screen_width,-android_screen_height,graphicpath.c_str(),(graphicpath + "/prdoom.xml").c_str());

#ifdef ANTI_HACK
	getGlobalClasses(env_);
#endif

	if (renderer != REND_SOFT)
		SDL_SetSwapBufferCallBack(frameControls);

	if (renderer == REND_SOFT)// In soft mode SDL calls swap buffer, disable so it does not flicker
		SDL_SwapBufferPerformsSwap(false);

	return 0;
}
jint EXPORT_ME
Java_com_beloko_opengames_prboom_NativeLib_startserver( JNIEnv* env,
		jobject thiz,jobjectArray argsArray,jstring doom_path_ )
{

	argv[0] = "quake";
	int argCount = (env)->GetArrayLength( argsArray);
	LOGI("argCount = %d",argCount);
	for (int i=0; i<argCount; i++) {
		jstring string = (jstring) (env)->GetObjectArrayElement( argsArray, i);
		argv[argc] = (char *)(env)->GetStringUTFChars( string, 0);
		LOGI("arg = %s",argv[argc]);
		argc++;
	}

	doom_path = (char *)(env)->GetStringUTFChars( doom_path_, 0);

	LOGI("doom_path = %s",getDoomPath());

	chdir(getDoomPath());
	putenv("TIMIDITY_CFG=../timidity.cfg");

	server_main(argc,argv);
}
Beispiel #3
0
const char *I_DoomExeDir(void)
{
  static char *base;
  if (!base)        // cache multiple requests
    {
#ifdef ANDROID
	  char *home = getDoomPath();
#else
      char *home = getenv("HOME");
#endif
      size_t len = strlen(home);

      base = malloc(len + strlen(prboom_dir) + 1);
      strcpy(base, home);
      // I've had trouble with trailing slashes before...
      if (base[len-1] == '/') base[len-1] = 0;
      strcat(base, prboom_dir);
      mkdir(base, S_IRUSR | S_IWUSR | S_IXUSR); // Make sure it exists
    }
  return base;
}