int ui_object_destroy_list_item (ui_object *list, ui_object *item) { ui_object *current_list_item; if ((!list) || (!item)) { return FALSE; } current_list_item = get_ui_object_child (list); while (current_list_item) { if ((current_list_item == item) && (get_ui_object_type (current_list_item) != UI_TYPE_VSLIDER)) { destroy_ui_object (current_list_item); return TRUE; } current_list_item = get_ui_object_next (current_list_item); } return FALSE; }
void ui_object_destroy_list_items (ui_object *list) { ui_object *destroy_item, *current_list_item; if (!list) { return; } current_list_item = get_ui_object_child (list); while (current_list_item) { destroy_item = current_list_item; current_list_item = get_ui_object_next (current_list_item); if (get_ui_object_type (destroy_item) != UI_TYPE_VSLIDER) { destroy_ui_object (destroy_item); } } set_ui_object_child (list, NULL); }
int combat_zone_read_text (void) { ui_object *ui_line, *destroy_ui_line; int long_text_flag, value, line_count; FILE *file_ptr; char variable [64], operator_ [64], line [1024], filename [1024]; file_tags tag; ui_line = get_ui_object_child (combat_zone_text_area); while (ui_line) { destroy_ui_line = ui_line; ui_line = get_ui_object_next (ui_line); destroy_ui_object (destroy_ui_line); } // // // line_count = 0; sprintf (filename, "%s\\%s\\%s", current_game_session->data_path, current_game_session->campaign_directory, current_game_session->campaign_filename); file_ptr = safe_fopen (filename, "r"); long_text_flag = FALSE; while (TRUE) { tag = (file_tags) get_next_file_tag (file_ptr, application_tag_strings, FILE_TAG_APPLICATION_LAST_TAG); switch (tag) { case FILE_TAG_LANGUAGE_TEXT_START: { get_next_file_word (file_ptr, operator_, sizeof (operator_)); // skip script till correct language while (tag = (file_tags) get_next_file_tag (file_ptr, application_tag_strings, FILE_TAG_APPLICATION_LAST_TAG)) { #if (LANGUAGE == LANGUAGE_FRENCH) if (tag == FILE_TAG_LANGUAGE_FRENCH) { break; } #elif (LANGUAGE == LANGUAGE_GERMAN) if (tag == FILE_TAG_LANGUAGE_GERMAN) { break; } #elif (LANGUAGE == LANGUAGE_ITALIAN) if (tag == FILE_TAG_LANGUAGE_ITALIAN) { break; } #elif (LANGUAGE == LANGUAGE_SPANISH) if (tag == FILE_TAG_LANGUAGE_SPANISH) { break; } #else //LANGUAGE_ENGLISH if (tag == FILE_TAG_LANGUAGE_ENGLISH) { break; } #endif if (tag == FILE_TAG_LANGUAGE_TEXT_STOP) { break; } } break; } case FILE_TAG_LANGUAGE_TEXT_END: { get_next_file_word (file_ptr, operator_, sizeof (operator_)); // skip script till end of languages while (tag = (file_tags) get_next_file_tag (file_ptr, application_tag_strings, FILE_TAG_APPLICATION_LAST_TAG)) { if (tag == FILE_TAG_LANGUAGE_TEXT_STOP) { break; } } break; } case FILE_TAG_LONG_TEXT_START: { long_text_flag = TRUE; while (TRUE) { get_next_file_string (file_ptr, line, sizeof (line)); if (strcmp ((line + 1), application_tag_strings [FILE_TAG_TEXT_END]) == 0) { break; } create_ui_object ( UI_TYPE_TEXT, UI_ATTR_PARENT (combat_zone_text_area), UI_ATTR_POSITION (10, (line_count + 1) * 12), UI_ATTR_TEXT (line), UI_ATTR_FONT_TYPE (UI_FONT_ARIAL_10), UI_ATTR_END ); line_count ++; } break; } case FILE_TAG_IF: { ASSERT (get_current_player_log ()); get_next_file_word (file_ptr, variable, sizeof (variable)); get_next_file_word (file_ptr, operator_, sizeof (operator_)); value = get_next_file_int (file_ptr); if (!if_file_tag_variable (variable, operator_, value)) { // skip script till endif while (tag = (file_tags) get_next_file_tag (file_ptr, application_tag_strings, FILE_TAG_APPLICATION_LAST_TAG)) { if ((tag == FILE_TAG_ENDIF) || (tag == FILE_TAG_END)) { break; } } } break; } case FILE_TAG_ENDIF: { break; } case FILE_TAG_END: { fclose (file_ptr); return long_text_flag; } } } return FALSE; }
static void destroy_area_ui_object (ui_object *obj) { ui_object *parent, *next, *prev, *succ, *pred, *stack_next, *stack_prev; area_ui_object *parent_area, *area; //////////////////////////////////////// // // REMOVE FROM SYSTEM // //////////////////////////////////////// //////////////////////////////////////// // // FREE UI_OBJECT DATA // //////////////////////////////////////// area = (area_ui_object*) obj->data; // sort out parent parent = area->parent; if (parent) { parent_area = (area_ui_object *) parent->data; if (parent_area->child == obj) { if (area->next) { parent_area->child = area->next; } else { parent_area->child = NULL; } } } // do entity header stack_next = obj->stack_next; stack_prev = obj->stack_prev; succ = obj->succ; pred = obj->pred; if (succ) { if (pred) { succ->pred = pred; pred->succ = succ; } else { succ->pred = NULL; } } else { if (pred) { pred->succ = NULL; } } if (stack_next) { if (stack_prev) { stack_next->stack_prev = stack_prev; stack_prev->stack_next = stack_next; } else { stack_next->stack_prev = NULL; } } else { if (stack_prev) { pred->stack_next = NULL; } } // do area pointers next = area->next; prev = area->prev; if (next) { if (prev) { set_ui_object_prev (next, prev); set_ui_object_next (prev, next); } else { set_ui_object_prev (next, NULL); } } else { if (prev) { set_ui_object_next (prev, NULL); } } if (area->child) { destroy_ui_object (area->child); } // free text if (area->text) { safe_free (area->text); } if (area->tool_tips) { safe_free (area->tool_tips); } // free memory graphic if (get_ui_object_graphic_type (obj) == UI_OBJECT_MEMORY_GRAPHIC) { destroy_screen (area->memory_graphic); } // free ui_object safe_free (obj->data); decrease_ui_object_counter (); }