/** * Sets a creatue's mental state. * * @param env Java environment * @param self class calling this function * @param target id of creature to access * @param mentalState mental state we are interested in * @param value value to set the mental state to * * @return true on success, false on fail */ jboolean JNICALL ScriptMethodsMentalStatesNamespace::setMentalState(JNIEnv *env, jobject self, jlong mob, jint mentalState, jfloat value) { UNREF(self); if (mentalState < 0 || mentalState >= MentalStates::NumberOfMentalStates) return JNI_FALSE; CreatureObject * creature = 0; if (!JavaLibrary::getObject(mob, creature)) return JNI_FALSE; creature->setMentalState(static_cast<MentalStates::Enumerator>(mentalState), static_cast<MentalStates::Value>(value)); return JNI_TRUE; } // JavaLibrary::setAttrib
/** * Sets the mental states for a creature. * * @param env Java environment * @param self class calling this function * @param mob id of creature to access * @param values mental state/value pairs to set * * @return true on success, false on fail */ jboolean JNICALL ScriptMethodsMentalStatesNamespace::setMentalStates(JNIEnv *env, jobject self, jlong mob, jobjectArray values) { UNREF(self); CreatureObject * creature = 0; if (!JavaLibrary::getObject(mob, creature)) return JNI_FALSE; int count = env->GetArrayLength(values); for (int i = 0; i < count; ++i) { LocalRefPtr mentalState = getObjectArrayElement(LocalObjectArrayRefParam(values), i); if (mentalState == LocalRef::cms_nullPtr) return JNI_FALSE; int type = getIntField(*mentalState, JavaLibrary::getFidMentalStateType()); if (type < 0 || type >= MentalStates::NumberOfMentalStates) return JNI_FALSE; creature->setMentalState(static_cast<MentalStates::Enumerator>(type), static_cast<MentalStates::Value>(getFloatField(*mentalState, JavaLibrary::getFidMentalStateValue()))); } return JNI_TRUE; } // JavaLibrary::setMentalStates