Exemplo n.º 1
0
static jobject java_createAICallback(JNIEnv* env, const struct SSkirmishAICallback* aiCallback, int skirmishAIId) {

	jobject o_clb = NULL;

	// initialize the AI Callback class, if not yet done
	if (g_cls_aiCallback == NULL) {
		// get the AI Callback class
		g_cls_aiCallback = jniUtil_findClass(env, CLS_AI_CALLBACK);
		if (g_cls_aiCallback == NULL) { return NULL; }
		g_cls_aiCallback = jniUtil_makeGlobalRef(env, g_cls_aiCallback,
				CLS_AI_CALLBACK);
		if (g_cls_aiCallback == NULL) { return NULL; }

		// get (int skirmishAIId) constructor
		g_m_aiCallback_ctor_I = jniUtil_getMethodID(env, g_cls_aiCallback, "<init>", "(I)V");
		if (g_m_aiCallback_ctor_I == NULL) { return NULL; }
	}

	o_clb = (*env)->NewObject(env, g_cls_aiCallback, g_m_aiCallback_ctor_I, skirmishAIId);
	if (jniUtil_checkException(env, "Failed creating Java AI Callback instance")) {
		o_clb = NULL;
	}/* else {
		o_clb = jniUtil_makeGlobalRef(env, o_clb, "AI callback instance");
	}*/

	return o_clb;
}
Exemplo n.º 2
0
int eventsJniBridge_initStatic(JNIEnv* env, size_t _skirmishAIId_size) {

	skirmishAIId_size = _skirmishAIId_size;
	skirmishAIId_callback = (jobject*) calloc(skirmishAIId_size, sizeof(jobject));
	size_t t;
	for (t=0; t < skirmishAIId_size; ++t) {
		skirmishAIId_callback[t] = NULL;
	}

	jobject c_aiInt = (*env)->FindClass(env, "com/springrts/ai/AI");
	if (jniUtil_checkException(env, "Failed fetching AI interface class com.springrts.ai.AI")) { return -2; }

	m_ai_init = jniUtil_getMethodID(env, c_aiInt, "init", "(ILcom/springrts/ai/AICallback;)I");
	if (jniUtil_checkException(env, "Failed fetching Java AI method ID for: init")) { return -3; }

	m_ai_release = jniUtil_getMethodID(env, c_aiInt, "release", "(I)I");
	if (jniUtil_checkException(env, "Failed fetching Java AI method ID for: release")) { return -3; }

	m_ai_update = jniUtil_getMethodID(env, c_aiInt, "update", "(I)I");
	if (jniUtil_checkException(env, "Failed fetching Java AI method ID for: update")) { return -3; }

	m_ai_message = jniUtil_getMethodID(env, c_aiInt, "message", "(ILjava/lang/String;)I");
	if (jniUtil_checkException(env, "Failed fetching Java AI method ID for: message")) { return -3; }

	m_ai_luaMessage = jniUtil_getMethodID(env, c_aiInt, "luaMessage", "(Ljava/lang/String;)I");
	if (jniUtil_checkException(env, "Failed fetching Java AI method ID for: luaMessage")) { return -3; }

	m_ai_unitCreated = jniUtil_getMethodID(env, c_aiInt, "unitCreated", "(II)I");
	if (jniUtil_checkException(env, "Failed fetching Java AI method ID for: unitCreated")) { return -3; }

	m_ai_unitFinished = jniUtil_getMethodID(env, c_aiInt, "unitFinished", "(I)I");
	if (jniUtil_checkException(env, "Failed fetching Java AI method ID for: unitFinished")) { return -3; }

	m_ai_unitIdle = jniUtil_getMethodID(env, c_aiInt, "unitIdle", "(I)I");
	if (jniUtil_checkException(env, "Failed fetching Java AI method ID for: unitIdle")) { return -3; }

	m_ai_unitMoveFailed = jniUtil_getMethodID(env, c_aiInt, "unitMoveFailed", "(I)I");
	if (jniUtil_checkException(env, "Failed fetching Java AI method ID for: unitMoveFailed")) { return -3; }

	m_ai_unitDamaged = jniUtil_getMethodID(env, c_aiInt, "unitDamaged", "(IIF[FIZ)I");
	if (jniUtil_checkException(env, "Failed fetching Java AI method ID for: unitDamaged")) { return -3; }

	m_ai_unitDestroyed = jniUtil_getMethodID(env, c_aiInt, "unitDestroyed", "(II)I");
	if (jniUtil_checkException(env, "Failed fetching Java AI method ID for: unitDestroyed")) { return -3; }

	m_ai_unitGiven = jniUtil_getMethodID(env, c_aiInt, "unitGiven", "(III)I");
	if (jniUtil_checkException(env, "Failed fetching Java AI method ID for: unitGiven")) { return -3; }

	m_ai_unitCaptured = jniUtil_getMethodID(env, c_aiInt, "unitCaptured", "(III)I");
	if (jniUtil_checkException(env, "Failed fetching Java AI method ID for: unitCaptured")) { return -3; }

	m_ai_enemyEnterLOS = jniUtil_getMethodID(env, c_aiInt, "enemyEnterLOS", "(I)I");
	if (jniUtil_checkException(env, "Failed fetching Java AI method ID for: enemyEnterLOS")) { return -3; }

	m_ai_enemyLeaveLOS = jniUtil_getMethodID(env, c_aiInt, "enemyLeaveLOS", "(I)I");
	if (jniUtil_checkException(env, "Failed fetching Java AI method ID for: enemyLeaveLOS")) { return -3; }

	m_ai_enemyEnterRadar = jniUtil_getMethodID(env, c_aiInt, "enemyEnterRadar", "(I)I");
	if (jniUtil_checkException(env, "Failed fetching Java AI method ID for: enemyEnterRadar")) { return -3; }

	m_ai_enemyLeaveRadar = jniUtil_getMethodID(env, c_aiInt, "enemyLeaveRadar", "(I)I");
	if (jniUtil_checkException(env, "Failed fetching Java AI method ID for: enemyLeaveRadar")) { return -3; }

	m_ai_enemyDamaged = jniUtil_getMethodID(env, c_aiInt, "enemyDamaged", "(IIF[FIZ)I");
	if (jniUtil_checkException(env, "Failed fetching Java AI method ID for: enemyDamaged")) { return -3; }

	m_ai_enemyDestroyed = jniUtil_getMethodID(env, c_aiInt, "enemyDestroyed", "(II)I");
	if (jniUtil_checkException(env, "Failed fetching Java AI method ID for: enemyDestroyed")) { return -3; }

	m_ai_weaponFired = jniUtil_getMethodID(env, c_aiInt, "weaponFired", "(II)I");
	if (jniUtil_checkException(env, "Failed fetching Java AI method ID for: weaponFired")) { return -3; }

	m_ai_playerCommand = jniUtil_getMethodID(env, c_aiInt, "playerCommand", "([IIII)I");
	if (jniUtil_checkException(env, "Failed fetching Java AI method ID for: playerCommand")) { return -3; }

	m_ai_commandFinished = jniUtil_getMethodID(env, c_aiInt, "commandFinished", "(III)I");
	if (jniUtil_checkException(env, "Failed fetching Java AI method ID for: commandFinished")) { return -3; }

	m_ai_seismicPing = jniUtil_getMethodID(env, c_aiInt, "seismicPing", "([FF)I");
	if (jniUtil_checkException(env, "Failed fetching Java AI method ID for: seismicPing")) { return -3; }

	m_ai_load = jniUtil_getMethodID(env, c_aiInt, "load", "(Ljava/lang/String;)I");
	if (jniUtil_checkException(env, "Failed fetching Java AI method ID for: load")) { return -3; }

	m_ai_save = jniUtil_getMethodID(env, c_aiInt, "save", "(Ljava/lang/String;)I");
	if (jniUtil_checkException(env, "Failed fetching Java AI method ID for: save")) { return -3; }

	m_ai_enemyCreated = jniUtil_getMethodID(env, c_aiInt, "enemyCreated", "(I)I");
	if (jniUtil_checkException(env, "Failed fetching Java AI method ID for: enemyCreated")) { return -3; }

	m_ai_enemyFinished = jniUtil_getMethodID(env, c_aiInt, "enemyFinished", "(I)I");
	if (jniUtil_checkException(env, "Failed fetching Java AI method ID for: enemyFinished")) { return -3; }


	return 0; // -> no error
}