Пример #1
0
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;
}
Пример #2
0
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);
}
Пример #3
0
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;
}
Пример #4
0
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 ();
}