void notify_combat_zone_screen (ui_object *obj, void *arg) { ASSERT ( get_valid_current_game_session () ); combat_zone_read_text (); if ( briefing_red_forces ) { set_ui_object_graphic ( combat_zone_screen, ( unsigned short int * ) get_graphics_file_data ( GRAPHICS_UI_HAVOC_CZONE_SCREEN ) ); } else { set_ui_object_graphic ( combat_zone_screen, ( unsigned short int * ) get_graphics_file_data ( GRAPHICS_UI_APACHE_CZONE_SCREEN ) ); } }
static int load_local_pylon_entities (char *name) { entity *last_entity, *last_last_entity, *new_entity; entity_sub_types sub_type; int type, node_count, *node_link_count, path_count, node_loop, path_loop, start, end, link_count, link_loop; vec3d *node_positions, pos; FILE *pylon_node_file_ptr, *pylon_link_file_ptr; char filename [1024]; session_list_data_type *current_session; // // Create "Node" Pylons // ASSERT (get_valid_current_game_session ()); ASSERT (name); current_session = get_current_game_session (); sprintf (filename, "%s//route//%s.nde", current_session->data_path, name); if (file_exist (filename)) { pylon_node_file_ptr = safe_fopen (filename, "rb"); fread (&node_count, sizeof (int), 1, pylon_node_file_ptr); node_positions = malloc_heap_mem (sizeof (vec3d) * node_count); node_link_count = malloc_heap_mem (sizeof (int) * node_count); for (node_loop = 0 ; node_loop < node_count ; node_loop ++) { fread (&pos, sizeof (vec3d), 1, pylon_node_file_ptr); node_positions [node_loop].x = pos.x; node_positions [node_loop].y = pos.y; node_positions [node_loop].z = pos.z; node_link_count [node_loop] = 0; } fclose (pylon_node_file_ptr); // // Create "Link" Pylons // sprintf (filename, "%s//route//%s.wp", current_session->data_path, name); pylon_link_file_ptr = safe_fopen (filename, "rb"); fread (&path_count, sizeof (int), 1, pylon_link_file_ptr); new_entity = NULL; for (path_loop = 0 ; path_loop < path_count ; path_loop ++) { fread (&start, sizeof (int), 1, pylon_link_file_ptr); fread (&end, sizeof (int), 1, pylon_link_file_ptr); fread (&type, sizeof (int), 1, pylon_link_file_ptr); fread (&link_count, sizeof (int), 1, pylon_link_file_ptr); node_link_count [start] += 1; node_link_count [end] += 1; if (link_count > 0) { last_entity = NULL; last_last_entity = NULL; for (link_loop = 0 ; link_loop < link_count ; link_loop ++) { fread (&pos, sizeof (vec3d), 1, pylon_link_file_ptr); if (link_loop == 0) { sub_type = ENTITY_SUB_TYPE_FIXED_ELECTRICITY_PYLON_START_TERMINATOR; } else if (link_loop == link_count - 1) { sub_type = ENTITY_SUB_TYPE_FIXED_ELECTRICITY_PYLON_END_TERMINATOR; } else { sub_type = ENTITY_SUB_TYPE_FIXED_ELECTRICITY_PYLON_STANDARD; } new_entity = create_local_entity ( ENTITY_TYPE_PYLON, ENTITY_INDEX_DONT_CARE, ENTITY_ATTR_INT_VALUE (INT_TYPE_ENTITY_SUB_TYPE, sub_type), ENTITY_ATTR_VEC3D (VEC3D_TYPE_POSITION, pos.x, pos.y, pos.z), ENTITY_ATTR_FLOAT_VALUE (FLOAT_TYPE_HEADING, 0), ENTITY_ATTR_PTR_VALUE (PTR_TYPE_SUCC, last_entity), ENTITY_ATTR_END ); calculate_pylon_heading (last_last_entity, last_entity, new_entity, &node_positions [start], &node_positions [end]); last_last_entity = last_entity; last_entity = new_entity; } // last pylon in the link calculate_pylon_heading (last_last_entity, last_entity, NULL, &node_positions [start], &node_positions [end]); } } for (node_loop = 0 ; node_loop < node_count ; node_loop ++) { // // create node entities here // } fclose (pylon_link_file_ptr); free_mem (node_positions); free_mem (node_link_count); return TRUE; } return FALSE; }