JNIEXPORT jlong JNICALL Java_Sound_initCpp (JNIEnv *env, jobject obj, jstring filename) { const char *filename_char = env->GetStringUTFChars(filename, 0); void *return_obj = create_sound(filename_char); env->ReleaseStringUTFChars(filename, 0); return (jlong) return_obj; }
/* **level\_data** is created and populated with * level specific entities. Some entities require further * initialization, such as the timeline. * A timeline allows creating a sequence of events * on a, well.. time line. Each event has a start time, * duration and callback function the will get called * each time the timeline is updated and if the event * is active. * We use a timeline to animate the title, creating 3 * events: (1) slide the title into the screen (2) * make the title "bling" and (3) slide the title out * of the screen. * Using the SECOND and SECONDS constant is for * the sake of readability only. */ static struct level_data* create_level_data(void) { struct level_data* ldata = calloc(1, sizeof(*ldata)); if (ldata == NULL) goto error; ldata->wizard = create_wizard(); if (ldata->wizard == NULL) goto cleanup_level_data; if (prepare_title(&ldata->title) != 0) goto cleanup_level_data; if (prepare_tree(&ldata->tree) != 0) goto cleanup_level_data; ldata->grass_tile = create_image("res/grass_tile.png"); if (ldata->grass_tile == NULL) goto cleanup_level_data; ldata->earth_tile = create_image("res/earth_tile.png"); if (ldata->earth_tile == NULL) goto cleanup_level_data; play_animation(ldata->tree.sprite, ldata->tree.windblow); ldata->timeline = create_timeline(); if (ldata->timeline == NULL) goto cleanup_level_data; append_event(ldata->timeline, 0, 1 * SECOND, before_title_in); append_event(ldata->timeline, 0, 1 * SECOND, slide_title_in); append_event(ldata->timeline, 0, 4 * SECONDS, bling_title); append_event(ldata->timeline, 0, 1 * SECOND, slide_title_out); ldata->font = create_font("res/font.png", 32, 4); if (ldata->font == NULL) goto cleanup_level_data; ldata->music = create_sound("res/wizard.ogg"); play_sound(ldata->music, -1); return ldata; cleanup_level_data: destroy_level_data(ldata); error: ERROR("Unable to create level data"); return NULL; }
//////////////////////////////////////////////////////////////////////// /// /// @fn void SoundFMOD::init() /// /// Initialisation de la librairie. /// /// @return : Aucune. /// //////////////////////////////////////////////////////////////////////// void SoundFMOD::init() { // Create a System object and initialize. result = FMOD::System_Create(&systemFmod); ERRCHECK(result,); unsigned int version; result = systemFmod->getVersion(&version); ERRCHECK(result,); result = systemFmod->createSoundGroup("songs",&songs_group); ERRCHECK(result,); result = systemFmod->createSoundGroup("effects",&effects_group); ERRCHECK(result,); result = systemFmod->createSoundGroup("voices",&voices_group); ERRCHECK(result,); if (version < FMOD_VERSION) { printf("Error! You are using an old version of FMOD %08x. This program requires %08x\n", version, FMOD_VERSION); return; } result = systemFmod->init(32, FMOD_INIT_NORMAL, 0); ERRCHECK(result,); // Sons par défaut de l'application /*STARTUP_SONG,*/create_sound("hockey.mp3", FMOD_SOFTWARE, 0, songs_group); /*EDITION_MODE_SONG,*/create_sound("EditionMode.mp3", FMOD_LOOP_NORMAL, 0, songs_group); /*MENU_MODE_SONG,*/create_sound("Diamond_Mine.xm", FMOD_LOOP_NORMAL, 0, songs_group); /*LINDSEY_CAGE_SONG,*/create_sound("SongoftheCagedBird.mp3", FMOD_LOOP_NORMAL, 0, songs_group); // Volume des musiques songs_group->setVolume((float)0.25); // Effets sonores /*GOAL_EFFECT,*/ create_sound("goal.wav", FMOD_SOFTWARE, 0, effects_group); /*COLLISION_MURET_EFFECT, */ create_sound("collision_muret.wav", FMOD_SOFTWARE, 0, effects_group); /*COLLISION_MAILLET_EFFECT1,*/ create_sound("collision_maillet1.wav", FMOD_SOFTWARE, 0, effects_group); /*COLLISION_MAILLET_EFFECT2,*/ create_sound("collision_maillet2.wav", FMOD_SOFTWARE, 0, effects_group); /*COLLISION_MAILLET_EFFECT3,*/ create_sound("collision_maillet3.wav", FMOD_SOFTWARE, 0, effects_group); /*COLLISION_MAILLET_EFFECT4,*/ create_sound("collision_maillet4.wav", FMOD_SOFTWARE, 0, effects_group); /*COLLISION_MAILLET_EFFECT5,*/ create_sound("collision_maillet5.wav", FMOD_SOFTWARE, 0, effects_group); /*CLICK_EFFECT, */ create_sound("click.wav", FMOD_SOFTWARE, 0, effects_group); /*BEEP_EFFECT,*/ create_sound("beep-3.wav", FMOD_SOFTWARE, 0, effects_group); /*PORTAL_EFFECT,*/ create_sound("portalenter.wav", FMOD_SOFTWARE, 0, effects_group); /*PAUSE_EFFECT,*/ create_sound("pause.wav", FMOD_SOFTWARE, 0, effects_group); /*ACCELERATOR_EFFECT,*/ create_sound("accelerator.mp3", FMOD_SOFTWARE, 0, effects_group); /*BONUS_FAN_IN_EFFECT,*/ create_sound("fan.mp3", FMOD_SOFTWARE, 0, effects_group); /*BONUS_BLOCK_GOAL_IN_EFFECT,*/ create_sound("goalClose.mp3", FMOD_SOFTWARE, 0, effects_group); /*BONUS_BLOCK_GOAL_OUT_EFFECT,*/ create_sound("goalOpen.mp3", FMOD_SOFTWARE, 0, effects_group); /*BONUS_CHANGE_SIDE_IN_EFFECT,*/ create_sound("changeSide.mp3", FMOD_SOFTWARE, 0, effects_group); /*BONUS_CHANGE_SIDE_OUT_EFFECT,*/ create_sound("returnToSide.mp3", FMOD_SOFTWARE, 0, effects_group); /*BONUS_PASS_WALL_IN_EFFECT,*/ create_sound("wallBreak.mp3", FMOD_SOFTWARE, 0, effects_group); /*BONUS_PASS_WALL_OUT_EFFECT,*/ create_sound("wallHit.mp3", FMOD_SOFTWARE, 0, effects_group); effects_group->setMaxAudible(100); effects_group->setMaxAudibleBehavior(FMOD_SOUNDGROUP_BEHAVIOR_MUTE); // L'initialisation est complète initialised_ = true; }