void add_fire_at_tile (int kind, Uint16 x_tile, Uint16 y_tile) { float x = 0.5f * x_tile + 0.25f; float y = 0.5f * y_tile + 0.25f; float z = 0.0; #ifdef NEW_SOUND int snd; #endif // NEW_SOUND switch (kind) { case 2: ec_create_campfire(x, y, z, 0.0, 1.0, (poor_man ? 6 : 10), 3.1); #ifdef NEW_SOUND snd = get_sound_index_for_particle_file_name("./particles/fire_big.part"); #endif // NEW_SOUND break; case 1: default: ec_create_campfire(x, y, z, 0.0, 1.0, (poor_man ? 6 : 10), 2.4); #ifdef NEW_SOUND snd = get_sound_index_for_particle_file_name("./particles/fire_small.part"); #endif // NEW_SOUND break; } #ifdef NEW_SOUND if (sound_on && snd >= 0) { add_particle_sound(snd, x_tile, y_tile); } #endif // NEW_SOUND }
// Wrapper for regular (event triggered) particle systems (no location check) int add_particle_sys (const char *file_name, float x_pos, float y_pos, float z_pos, unsigned int dynamic) { int snd; if (!no_sound) { snd = get_sound_index_for_particle_file_name(file_name); if (snd >= 0) { add_particle_sound(snd, (x_pos - 0.25f) * 2, (y_pos - 0.25f) * 2); } } return real_add_particle_sys(file_name, x_pos, y_pos, z_pos, dynamic); }
void remove_bag(int bag_id) { #ifdef NEW_SOUND int snd; #endif // NEW_SOUND if (bag_id >= NUM_BAGS) return; if (bag_list[bag_id].obj_3d_id == -1) { // oops, no bag in that slot! LOG_ERROR("Oops, double-removal of bag!\n"); return; } if (use_eye_candy) { ec_create_bag_pickup(objects_list[bag_list[bag_id].obj_3d_id]->x_pos, objects_list[bag_list[bag_id].obj_3d_id]->y_pos, objects_list[bag_list[bag_id].obj_3d_id]->z_pos, (poor_man ? 6 : 10)); #ifdef ONGOING_BAG_EFFECT if (bag_list[bag_id].ongoing_bag_effect_reference != NULL) { ec_recall_effect(bag_list[bag_id].ongoing_bag_effect_reference); bag_list[bag_id].ongoing_bag_effect_reference = NULL; } #endif // ONGOING_BAG_EFFECT } #ifdef NEW_SOUND if (your_actor && bag_list[bag_id].x == your_actor->x_pos * 2 && bag_list[bag_id].y == your_actor->y_pos * 2) { snd = get_sound_index_for_particle_file_name("./particles/bag_out.part"); if (snd >= 0) { add_sound_object (snd, bag_list[bag_id].x, bag_list[bag_id].y, 0); } } #endif // NEW_SOUND destroy_3d_object(bag_list[bag_id].obj_3d_id); bag_list[bag_id].obj_3d_id=-1; }
void put_bag_on_ground(int bag_x,int bag_y,int bag_id) { float x,y,z; int obj_3d_id; #ifdef NEW_SOUND int snd; #endif // NEW_SOUND //now, get the Z position if (!get_tile_valid(bag_x, bag_y)) { //Warn about this error: LOG_WARNING("A bag was placed OUTSIDE the map!\n"); return; } z = get_tile_height(bag_x, bag_y); //convert from height values to meters x=(float)bag_x/2; y=(float)bag_y/2; //center the object (slightly randomized) x = x + 0.25f; // + get_bag_offset_x(bag_x, bag_y, bag_id, tile_map_size_x, tile_map_size_y); y = y + 0.25f; // + get_bag_offset_y(bag_x, bag_y, bag_id, tile_map_size_x, tile_map_size_y); // DEBUG // printf("bag <%i> (%f,%f) rot %f tilt %f\n", bag_id, x, y, // get_bag_rotation(bag_x, bag_y, bag_id, tile_map_size_x, tile_map_size_y), // get_bag_tilt(bag_x, bag_y, bag_id, tile_map_size_x, tile_map_size_y)); //Launch the animation if (use_eye_candy) { ec_create_bag_drop(x, y, z, (poor_man ? 6 : 10)); #ifdef ONGOING_BAG_EFFECT // start an ongoing effect until the ongoing bag effect is coded bag_list[bag_id].ongoing_bag_effect_reference = ec_create_lamp(x, y, z, 0.0, 1.0, 0.75, (poor_man ? 6 : 10)); #endif // ONGOING_BAG_EFFECT } #ifdef NEW_SOUND if (your_actor && bag_x == your_actor->x_pos * 2 && bag_y == your_actor->y_pos * 2) { snd = get_sound_index_for_particle_file_name("./particles/bag_in.part"); if (snd >= 0) { add_sound_object (snd, bag_x, bag_y, 0); } } #endif // NEW_SOUND #ifdef OLD_MISC_OBJ_DIR obj_3d_id=add_e3d("./3dobjects/misc_objects/bag1.e3d", x, y, z, #else obj_3d_id=add_e3d("./3dobjects/bag1.e3d", x, y, z, #endif get_bag_tilt(bag_x, bag_y, bag_id, tile_map_size_x, tile_map_size_y), 0, get_bag_rotation(bag_x, bag_y, bag_id, tile_map_size_x, tile_map_size_y), 1 ,0 ,1.0f ,1.0f, 1.0f, 1); //now, find a place into the bags list, so we can destroy the bag properly bag_list[bag_id].x=bag_x; bag_list[bag_id].y=bag_y; bag_list[bag_id].obj_3d_id=obj_3d_id; }