コード例 #1
0
ファイル: init.c プロジェクト: DexterWard/comanche
int check_apache_havoc_ffp_files (void)
{

	int
		flag;

	if (get_global_apache_havoc_installed ())
	{

		flag = TRUE;

		if (!file_exist ("..//common//maps//map1//terrain//terrain.ffp"))
		{

			flag = FALSE;
		}

		if (!file_exist ("..//common//maps//map2//terrain//terrain.ffp"))
		{

			flag = FALSE;
		}

		if (!file_exist ("..//common//maps//map3//terrain//terrain.ffp"))
		{

			flag = FALSE;
		}

		if (!flag)
		{

			set_global_apache_havoc_installed (FALSE);

			return FALSE;
		}
	}

	return TRUE;
}
コード例 #2
0
ファイル: uisession.c プロジェクト: Comanche93/eech
void recursive_check_campaign_files (const char *directory, session_list_data_type **list, const char *extension)
{

	session_list_types
		session_type;

	directory_file_list
		*warzone_file,
		*directory_listing;

	unsigned int
		i,
		upper;

	int
		value,
		valid_file,
		season;

	static char
		operator_ [64],
		variable [64],
		temp_warzone_name [128],
		*warzone_name,
		warzone_path [1024],
		directory_search_path [1024];

	//
	// First, go through any files in this directory.
	//

	sprintf (directory_search_path, "%s\\*.%s", directory, extension);

	// Jabberwock 0400201 Session filter revised

	//VJ 050123 small bug fix: check for lowercase AND uppercase
	if ((strstr(directory, "CAMP01") || strstr(directory, "camp01")) && command_line_session_filter)
	{
		sprintf(warzone_path, "%s\\*.chc", directory);

		warzone_file = get_first_directory_file(warzone_path);

		sprintf(temp_warzone_name, "%s", get_directory_file_filename (warzone_file));

	//  Vadim 051120, if chc filename has spaces, capitalize every word

		for (upper=1, i = 0; i < (strlen (temp_warzone_name) - 4); i++)
		{
			if (upper)
			{
				temp_warzone_name[i] = toupper (temp_warzone_name[i]);
				upper=0;
			}
			else if (isspace(temp_warzone_name[i])) {
					upper=1;
			}
			else
			{
				temp_warzone_name[i] = tolower (temp_warzone_name[i]);
			}
		}

		temp_warzone_name[i] = '\0';

		for (i = 0; i < (strlen (directory) - 7); i++)
		{
			warzone_path[i] = directory[i];
		}

		warzone_path[i] = '\0';


		add_session (temp_warzone_name, SESSION_LIST_TYPE_FILTER, 1, NULL, warzone_path, NULL, NULL, temp_warzone_name, list, NULL, SESSION_SEASON_INVALID);
	}


	directory_listing = get_first_directory_file (directory_search_path);

	// JB 030313 Enable running out of separate directories
	if (!directory_listing)
	{
		char fn[1024];
		fn[0] = 0;
		strcpy(fn, comanche_hokum_installation_path);
		strcat(fn, "\\common\\");
		strcat(fn, directory_search_path);

		directory_listing = get_first_directory_file ( fn );
	}

	if (directory_listing)
	{

		valid_file = TRUE;

		while (valid_file)
		{

			session_type = SESSION_LIST_TYPE_HOST;

			if (get_directory_file_type (directory_listing) == DIRECTORY_FILE_TYPE_FILE)
			{

				FILE
					*file_ptr;

				file_tags
					tag;

				int
					end_flag;

				static char
					*ptr,
					*last_ptr,
					path [1024],
					full_filename [1024],
					campaign_title [1024],
					campaign_directory [32],
					campaign_filename [1024];

				//
				// Add campaign file to list
				//

				sprintf (full_filename, "%s\\%s", directory, get_directory_file_filename (directory_listing));

				file_ptr = safe_fopen (full_filename, "r");

				end_flag = FALSE;

				warzone_name = NULL;

				season = SESSION_SEASON_INVALID;

				while (!end_flag)
				{

					tag = (file_tags) get_next_file_tag (file_ptr, application_tag_strings, FILE_TAG_APPLICATION_LAST_TAG);

					switch (tag)
					{

						case FILE_TAG_WARZONE_NAME:
						{

							get_next_file_string (file_ptr, temp_warzone_name, sizeof (temp_warzone_name));

							warzone_name = temp_warzone_name;

							break;
						}

						case FILE_TAG_TITLE:
						{

							get_next_file_string (file_ptr, campaign_title, sizeof (campaign_title));

							//
							// Create data path, ie strip off the last directory name
							// N.B. valid data directories are in any directory below 'MAPS'.
							//

							strcpy (path, directory);

							ptr = strstr (path, "\\maps\\");

							ptr += strlen ("\\maps\\");

							while (ptr = strstr (ptr, "\\"))
							{

								ptr += strlen ("\\");

								last_ptr = ptr;
							}

							sprintf (campaign_directory, "%s", last_ptr);

							sprintf (campaign_filename, "%s", get_directory_file_filename (directory_listing));

							last_ptr -= strlen ("\\");

							*last_ptr = '\0';

							break;
						}

						case FILE_TAG_LANGUAGE_TEXT_START:
						{

							// 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:
						{

							// 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_CAMPAIGN_DATA:
						{

							while (tag = (file_tags) get_next_file_tag (file_ptr, application_tag_strings, FILE_TAG_APPLICATION_LAST_TAG))
							{

								if (tag == FILE_TAG_END)
								{

									break;
								}
							}

							break;
						}

						case FILE_TAG_SAVED_CAMPAIGN:
						{

							session_type = SESSION_LIST_TYPE_RESTORE;

							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_SEASON:
						{
							// 15JUN09 Casm retrieving season earlier
							season = get_next_file_int (file_ptr);

							break;
						}

						case FILE_TAG_CAMPAIGN_REQUIRES_APACHE_HAVOC:
						{
							debug_log("session filter: campaign_title %s", campaign_title);
							// VJ 050123 aphavoc install hack, do not close map if it exists but EEAH is not offcially installed
							if (!global_aphavoc_maps)
							{
								if (!get_global_apache_havoc_installed ())
								{

									end_flag = TRUE;

									debug_log ("SESSION: Campaign %s required Apache-Havoc to be installed", campaign_title);

									break;
								}
							}
						}

						case FILE_TAG_END:
						case FILE_TAG_UNKNOWN:
						{

							end_flag = TRUE;

							if ((!command_line_session_filter) || (strcmp(session_filter_value, "root") != 0))
							{
								// 15JUN09 Casm retrieving season earlier
								const char
									*title;
								// if host get the Translated campaign name
								// not hosted game so just use the name
								title = session_type == SESSION_LIST_TYPE_HOST ? get_trans (campaign_title) :  campaign_title;
								if (session_type == SESSION_LIST_TYPE_HOST || (session_type == SESSION_LIST_TYPE_MASTER) || (session_type == SESSION_LIST_TYPE_RESTORE))
								{
									add_session (title, session_type, 1, NULL, path, campaign_directory, campaign_filename, warzone_name, list, NULL, season);
								}
							}
							// Jabberwock 0400201 ends

							break;
						}
					}
				}

				fclose (file_ptr);
			}

			valid_file = get_next_directory_file (directory_listing);
		}

		destroy_directory_file_list (directory_listing);
	}

	//
	// Next, go through any directories, recursing into them.
	//

	sprintf (directory_search_path, "%s\\*", directory);

	directory_listing = get_first_directory_file (directory_search_path);

	// JB 030313 Enable running out of separate directories
	if (!directory_listing)
	{
		char fn[1024];
		fn[0] = 0;
		strcpy(fn, comanche_hokum_installation_path);
		strcat(fn, "\\common\\");
		strcat(fn, directory_search_path);

		directory_listing = get_first_directory_file ( fn );
	}

	if (directory_listing)
	{

		valid_file = TRUE;

		while (valid_file)
		{

			if (get_directory_file_type (directory_listing) == DIRECTORY_FILE_TYPE_DIRECTORY)
			{

				if ((strcmp (get_directory_file_filename (directory_listing), ".") != 0) &&
						(strcmp (get_directory_file_filename (directory_listing), "..") != 0))
				{

					char
						full_directory [1024];

					//
					// Create the full directory name
					//

					sprintf (full_directory, "%s\\%s", directory, get_directory_file_filename (directory_listing));

					//
					// Recurse into this directory
					//

					recursive_check_campaign_files (full_directory, list, extension);
				}
			}

			valid_file = get_next_directory_file (directory_listing);
		}

		destroy_directory_file_list (directory_listing);
	}
}
コード例 #3
0
ファイル: comm_man.c プロジェクト: DexterWard/comanche
void comms_process_data (void)
{

	session_list_data_type
		*current_session;

	connection_list_type
		*this_connection,
		*connection;

	char
		*received_data;

	int
		planner_event,
		frame_id,
		packet_id,
		receive_flag,
		received_size;

	GUID
		received_id = 0;

	entity
		*member;

	send_types
		send_type;

	packet_types
		type;

	// receive all packets in queue

	current_session = get_current_game_session ();

	received_size = MAX_RECEIVE_SIZE;

	connection = get_connection_list_head ();

	while (connection)
	{

		this_connection = connection;

		connection = connection->next;

		send_type = SEND_TYPE_GROUP;

		while (send_type >= SEND_TYPE_PERSONAL)
		{

			receive_flag = TRUE;

			while (receive_flag)
			{

				type = process_packet_list (send_type, this_connection, &received_id, &received_data, &received_size);

				switch (type)
				{

					///////////////////////////////////////////////////////////////////////////////////////////////
					//
					// System packets, used internally
					//
					///////////////////////////////////////////////////////////////////////////////////////////////

					case PACKET_TYPE_INVALID:
					{

						receive_flag = FALSE;

						if (get_comms_model () == COMMS_MODEL_SERVER)
						{

							if (this_connection->packet_rerequested > command_line_comms_packet_rerequest_limit)
							{

								debug_log ("COMM_MAN: REJECTING CONNECTION. CONNECTION TOO BAD (re-request limit %d reached)", command_line_comms_packet_rerequest_limit);

								send_packet (this_connection->connection_id, PACKET_TYPE_SERVER_REJECTED, NULL, 0, SEND_TYPE_PERSONAL);
							}
						}

						break;
					}

					case PACKET_TYPE_RESEND_PACKET:
					{

						send_types
							resend_send_type;

						frame_id = get_list_item (received_data, int);

						packet_id = get_list_item (received_data, int);

						resend_send_type = get_list_item (received_data, send_types);

						#if DEBUG_MODULE

						if (this_connection->pilot_entity)
						{

							debug_log ("COMMS MAN: received RESEND PACKET for frame %d packet %d from %s (dpid %d)",
											frame_id, packet_id,
											get_local_entity_string (this_connection->pilot_entity, STRING_TYPE_PILOTS_NAME),
											received_id);
						}
						else
						{

							debug_log ("COMMS MAN: received RESEND PACKET by unknown (pdid %d)",
											received_id);
						}

						#endif

						resend_packet (received_id, frame_id, packet_id, resend_send_type);

						break;
					}

					///////////////////////////////////////////////////////////////////////////////////////////////
					//
					// Packets for initialisation and joining
					//
					///////////////////////////////////////////////////////////////////////////////////////////////

					case PACKET_TYPE_SESSION_QUERY:
					{

						char
							*ptr;

						int
							server_version_number,
							player_count,
							size;

						connection_list_type
							*new_connection;

						if (get_comms_model () == COMMS_MODEL_SERVER)
						{

							#if DEBUG_MODULE

							if (this_connection->pilot_entity)
							{

								debug_log ("COMMS MAN: RECEIVED SESSION QUERY from %s (dpid %d)",
												get_local_entity_string (this_connection->pilot_entity, STRING_TYPE_PILOTS_NAME),
												received_id);
							}
							else
							{

								debug_log ("COMMS MAN: RECEIVED SESSION QUERY from %d", received_id);
							}

							#endif

							new_connection = get_connection_list_item (received_id);

							if (!new_connection->already_sent_query_data)
							{

								new_connection->already_sent_query_data = TRUE;

								while (TRUE)
								{

									ptr = new_connection->connection_receive_buffer;

									size = 0;

									/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
									//
									// Check both client and server are running same campaign data
									//
									server_version_number = get_local_entity_int_value (get_session_entity (), INT_TYPE_VERSION_NUMBER);

									quick_set_list_item (ptr, int, server_version_number);

									size += sizeof (int);
									//
									/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

									// map details

									quick_set_list_item (ptr, int, NUM_MAP_X_SECTORS);

									quick_set_list_item (ptr, int, NUM_MAP_Z_SECTORS);

									quick_set_list_item (ptr, int, SECTOR_SIDE_LENGTH);

									size += sizeof (int) * 3;

									// data path

									strcpy (ptr, current_session->data_path);

									ptr += strlen (current_session->data_path) + 1;

									size += strlen (current_session->data_path) + 1;

									// population_placement filename

									if (population_placement_filename)
									{

										strcpy (ptr, population_placement_filename);

										ptr += strlen (population_placement_filename) + 1;

										size += strlen (population_placement_filename) + 1;
									}
									else
									{

										strcpy (ptr, "\0");

										ptr += strlen ("\0") + 1;

										size += strlen ("\0") + 1;
									}

									//

									// side_data filename

									if (side_data_filename)
									{

										strcpy (ptr, side_data_filename);

										ptr += strlen (side_data_filename) + 1;

										size += strlen (side_data_filename) + 1;
									}
									else
									{

										strcpy (ptr, "\0");

										ptr += strlen ("\0") + 1;

										size += strlen ("\0") + 1;
									}

									// campaign_population filename

									if (campaign_population_filename)
									{

										strcpy (ptr, campaign_population_filename);

										ptr += strlen (campaign_population_filename) + 1;

										size += strlen (campaign_population_filename) + 1;
									}
									else
									{

										strcpy (ptr, "\0");

										ptr += strlen ("\0") + 1;

										size += strlen ("\0") + 1;
									}

									//
									// planner position and zoom
									//

//									quick_set_list_item (ptr, float, planner_map_data.centre_map_x);

//									quick_set_list_item (ptr, float, planner_map_data.centre_map_z);

//									size += sizeof (float) * 2;

//									quick_set_list_item (ptr, int, planner_map_data.map_zoom);

//									size += sizeof (int);

									//
									// Pilots
									//

									player_count = get_number_of_connected_players ();

									quick_set_list_item (ptr, int, player_count);

									size += sizeof (int);

									//
									//
									//

									#if DEBUG_MODULE

									debug_log ("COMM_MAN: sending data path %s, population placement %s, side data %s, campaign_pop file %s",
													current_session->data_path, population_placement_filename, side_data_filename, campaign_population_filename);

									#endif

									new_connection->connection_receive_buffer_size -= size;

									if (!pack_session (ptr, &new_connection->connection_receive_buffer_size, PACK_MODE_BROWSE_SESSION))
									{

										break;
									}

									new_connection->connection_receive_buffer_size *= 2;

									#if DEBUG_MODULE

									debug_log ("COMMS MAN: Browse: connection_receive_buffer too small, mallocing to %d", new_connection->connection_receive_buffer_size);

									#endif

									free_mem (new_connection->connection_receive_buffer);

									new_connection->connection_receive_buffer = malloc_heap_mem (new_connection->connection_receive_buffer_size);
								}

								//
								//
								//

								send_packet (received_id, PACKET_TYPE_SESSION_INFO, new_connection->connection_receive_buffer, new_connection->connection_receive_buffer_size + size, SEND_TYPE_PERSONAL);

								/*
								{

									FILE
										*test_ptr;

									test_ptr = fopen ("out.txt", "wb");

									fwrite (new_connection->connection_receive_buffer, 1, new_connection->connection_receive_buffer_size + size, test_ptr);

									fclose (test_ptr);
								}
								*/
							}
							else
							{

								debug_log ("COMM_MAN: not resending query data");
							}
						}

						break;
					}

					case PACKET_TYPE_CONNECTION_VALIDATION:
					{

						debug_log ("COMM_MAN: received CONNECTION_VALIDATION, sending RESPONSE");

						send_packet (received_id, PACKET_TYPE_CONNECTION_RESPONSE, NULL, 0, SEND_TYPE_PERSONAL);

						break;
					}

					case PACKET_TYPE_CONNECTION_RESPONSE:
					{

						connection_list_type
							*connection;

						connection = get_connection_list_item (received_id);

						connection->validation_count = 0;

						debug_log ("COMM_MAN: received CONNECTION_RESPONSE, connection still alive");

						break;
					}

					case PACKET_TYPE_SESSION_INFO:
					{

						entity
							*force,
							*pilot;

						int
							client_version_number,
							server_version_number;

						int
							size,
							x_size,
							z_size,
							sector_size,
							player_count,
							loop;

						char
							*ptr,
							warzone_ffp_filename [256],
							temp_campaign_population_filename [256],
							temp_population_placement_filename [256],
							temp_side_data_filename [256],
							buffer [128];

						session_data = FALSE;

						reinitialise_entity_system ();

						ptr = received_data;

						size = 0;

						set_ui_object_redraw (gunships_screen, TRUE);

						ui_force_update ();

						/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
						//
						// Check both client and server are running same campaign data
						//
						client_version_number = get_global_version_number ();

						server_version_number = get_list_item (ptr, int);

						size += sizeof (int);

						if (client_version_number != server_version_number)
						{

							debug_fatal ("COMM_MAN: Incorrect version. Server Version No. %d, Client Version No. %d", server_version_number, client_version_number);
						}
						//
						/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

						// map details

						x_size = get_list_item (ptr, int);

						z_size = get_list_item (ptr, int);

						sector_size = get_list_item (ptr, int);

						size += (sizeof (int) * 3);

						set_entity_world_map_size (x_size, z_size, sector_size);

						// data path

						strncpy (current_session->data_path, ptr, sizeof (current_session->data_path));

						ptr += strlen (current_session->data_path) + 1;

						size += strlen (current_session->data_path) + 1;

						// population_placement_filename

						strncpy (temp_population_placement_filename, ptr, sizeof (temp_population_placement_filename));

						ptr += strlen (temp_population_placement_filename) + 1;

						size += strlen (temp_population_placement_filename) + 1;

						if (population_placement_filename)
						{

							free_mem (population_placement_filename);
						}

						if (strlen (temp_population_placement_filename) > 0)
						{

							population_placement_filename = (char *) malloc_heap_mem (strlen (temp_population_placement_filename) + 1);

							sprintf (population_placement_filename, "%s", temp_population_placement_filename);
						}
						else
						{

							population_placement_filename = NULL;
						}

						// side_data filename

						strncpy (temp_side_data_filename, ptr, sizeof (temp_side_data_filename));

						ptr += strlen (temp_side_data_filename) + 1;

						size += strlen (temp_side_data_filename) + 1;

						if (side_data_filename)
						{

							free_mem (side_data_filename);
						}

						if (strlen (temp_side_data_filename) > 0)
						{

							side_data_filename = (char *) malloc_heap_mem (strlen (temp_side_data_filename) + 1);

							sprintf (side_data_filename, "%s", temp_side_data_filename);
						}
						else
						{

							side_data_filename = NULL;
						}

						// campaign_population_filename

						strncpy (temp_campaign_population_filename, ptr, sizeof (temp_campaign_population_filename));

						ptr += strlen (temp_campaign_population_filename) + 1;

						size += strlen (temp_campaign_population_filename) + 1;

						if (campaign_population_filename)
						{

							free_mem (campaign_population_filename);
						}

						if (strlen (temp_campaign_population_filename) > 0)
						{

							campaign_population_filename = (char *) malloc_heap_mem (strlen (temp_campaign_population_filename) + 1);

							sprintf (campaign_population_filename, "%s", temp_campaign_population_filename);
						}
						else
						{

							campaign_population_filename = NULL;
						}

						//
						//
						//

						player_count = get_list_item (ptr, int);

						size += sizeof (int);

						//
						//
						//

						received_size -= size;

						#if DEBUG_MODULE

						debug_log ("COMM_MAN: data path %s population placement filename %s, side data filename %s", current_session->data_path, population_placement_filename, side_data_filename);

						debug_log ("COMM_MAN: campaign data path = %s", current_session->data_path);

						#endif

						//
						// check we have the correct warzone locally
						//

						sprintf (warzone_ffp_filename, "%s\\terrain\\terrain.ffp", current_session->data_path);

						if (!file_exist (warzone_ffp_filename))
						{

							add_to_pop_up_list_with_word_wrap (get_trans ("UNRECOGNISED_WARZONE"), session_info_list, NULL, 0, UI_FONT_ARIAL_10, sys_col_white);
							//add_to_pop_up_list (get_trans ("Server using unrecognised warzone"), session_info_list, NULL, 0, UI_FONT_ARIAL_10, sys_col_white);

							break;
						}

						//
						//
						//

						create_local_only_entities (PACK_MODE_BROWSE_SESSION);

						if (unpack_session (ptr, received_size, PACK_MODE_BROWSE_SESSION))
						{

							debug_fatal ("COMMS MAN: browse: received size overflow");
						}

						#if DEBUG_MODULE

						if (this_connection->pilot_entity)
						{

							debug_log ("COMMS MAN: received SESSION INFO from %s (dpid %d) (setting server id)",
											get_local_entity_string (this_connection->pilot_entity, STRING_TYPE_PILOTS_NAME),
											received_id);
						}
						else
						{

							debug_log ("COMMS MAN: RECEIVED SESSION INFO from %d", received_id);
						}

						debug_log ("COMMS MAN: session info: time of day = %f",
										get_local_entity_float_value (get_session_entity (), FLOAT_TYPE_TIME_OF_DAY));

						debug_log ("COMMS MAN: map dimensions %d, %d, sector size %d", x_size, z_size, sector_size);

						#endif

						set_ui_object_drawable (session_screen_next_button, TRUE);

						//
						// Display game info
						//

						ui_object_destroy_list_items (session_info_list);

						if (get_local_entity_int_value (get_session_entity (), INT_TYPE_CAMPAIGN_REQUIRES_APACHE_HAVOC))
						{

							// campaign requires apache havoc to be installed
							// check it is...

							if (!get_global_apache_havoc_installed ())
							{

								add_to_pop_up_list_with_word_wrap (get_trans ("REQUIRES_APACHE_HAVOC"), session_info_list, NULL, 0, UI_FONT_ARIAL_10, sys_col_white);

								set_ui_object_drawable (session_screen_next_button, FALSE);

								break;
							}
						}

						loop = 3;

						sprintf (buffer, "%s : %d", get_trans ("Players"), player_count);

						add_to_pop_up_list_with_word_wrap (buffer, session_info_list, NULL, 0, UI_FONT_ARIAL_10, sys_col_white);

						force = get_local_entity_first_child (get_session_entity (), LIST_TYPE_FORCE);

						while (force)
						{

							pilot = get_local_entity_first_child (force, LIST_TYPE_PILOT);

							while (pilot)
							{
								{
									rgb_colour
										col;

									sprintf (buffer, "%2d  ", loop - 2);

									strncat (buffer, get_local_entity_string (pilot, STRING_TYPE_PILOTS_NAME), 64);

									switch (get_local_entity_int_value (pilot, INT_TYPE_SIDE))
									{
										case ENTITY_SIDE_BLUE_FORCE:
										{
											col.r = 120;
											col.g = 158;
											col.b = 255;
											col.a = 255;

											break;
										}
										case ENTITY_SIDE_RED_FORCE:
										{
											col.r = 255;
											col.g = 120;
											col.b = 80;
											col.a = 255;

											break;
										}
										default:
										{
									      col = ui_colour_white;

											break;
										}
									}

									add_to_pop_up_list_with_word_wrap (buffer, session_info_list, NULL, 0, UI_FONT_ARIAL_10, col);

									loop ++;
								}

								pilot = get_local_entity_child_succ (pilot, LIST_TYPE_PILOT);
							}

							force = get_local_entity_child_succ (force, LIST_TYPE_FORCE);
						}

						set_server_id (received_id);

						//
						// destroy all entities created by browse info
						//

						reinitialise_entity_system ();

						break;
					}

					case PACKET_TYPE_CLIENT_PILOT_REQUEST:
					{

						connection_list_type
							*new_connection;

						client_pilot_request_data
							pilot_data;

						entity
							*new_pilot;

						int
							index;

						ASSERT (get_comms_model () == COMMS_MODEL_SERVER);

//						#if DEBUG_MODULE

						debug_log ("COMMS MAN: RECEIVED PILOT REQUEST from %d", received_id);

//						#endif

						//
						// unpack name
						//

						memcpy (&pilot_data, (client_pilot_request_data *) received_data, sizeof (client_pilot_request_data));

						new_pilot = create_new_pilot_entity
										(
											pilot_data.name,
											pilot_data.side,
											pilot_data.rank,
											pilot_data.sub_type,
											pilot_data.unique_id,
											pilot_data.difficulty
										);

						ASSERT (new_pilot);

						index = get_local_entity_safe_index (new_pilot);

						new_connection = get_connection_list_item (received_id);

						transmit_entity_comms_message (ENTITY_COMMS_PILOT_REQUEST_ACCEPTED, NULL, received_id, index);

						new_connection->pilot_entity = new_pilot;

						break;
					}

					case PACKET_TYPE_CLIENT_GUNSHIP_REQUEST:
					{

						connection_list_type
							*new_connection;

						client_gunship_request_data
							pilot_data;

						int
							index_number,
							buffer [2];

						if (get_comms_model () == COMMS_MODEL_SERVER)
						{

//							#if DEBUG_MODULE

							if (this_connection->pilot_entity)
							{

								debug_log ("COMMS MAN: RECEIVED GUNSHIP REQUEST from %s (dpid %d)",
												get_local_entity_string (this_connection->pilot_entity, STRING_TYPE_PILOTS_NAME),
												received_id);
							}
							else
							{

								debug_log ("COMMS MAN: RECEIVED GUNSHIP REQUEST from %d", received_id);
							}

//							#endif

							memcpy (&pilot_data, (client_gunship_request_data *) received_data, sizeof (client_gunship_request_data));

							index_number = pilot_data.gunship_index;

							ASSERT (index_number != ENTITY_INDEX_DONT_CARE);

							member = get_local_entity_safe_ptr (index_number);

							if (!member)
							{
//								#if DEBUG_MODULE

								if (this_connection->pilot_entity)
								{

									debug_log ("COMMS MAN: REFUSING GUNSHIP FOR PLAYER %s (dpid %d) for helicopter %d",
													get_local_entity_string (this_connection->pilot_entity, STRING_TYPE_PILOTS_NAME),
													received_id, pilot_data.gunship_index);
								}
								else
								{

									debug_log ("COMMS MAN: Refusing gunship for player %d to helicopter %d", received_id, pilot_data.gunship_index);
								}

//								#endif

								send_packet (received_id, PACKET_TYPE_GUNSHIP_REQUEST_REFUSED, NULL, 0, SEND_TYPE_PERSONAL);

								break;
							}

							new_connection = get_connection_list_item (received_id);

							//
							// send acceptance
							//

							buffer [0] = index_number;

//							#if DEBUG_MODULE

							debug_log ("COMMS MAN: sending gunship request accepted for gunship %d pilot id %d", index_number, received_id);

//							#endif

							send_packet (received_id, PACKET_TYPE_GUNSHIP_REQUEST_ACCEPTED, (void *) &buffer, 4, SEND_TYPE_PERSONAL);

							new_connection->gunship_number = pilot_data.gunship_index;

							new_connection->gunship_entity = member;
						}

						break;
					}

					case PACKET_TYPE_CLIENT_CAMPAIGN_DATA_REQUEST:
					{

						connection_list_type
							*new_connection;

						int
							index_number;

						if (get_comms_model () == COMMS_MODEL_SERVER)
						{

							#if DEBUG_MODULE

							if (this_connection->pilot_entity)
							{

								debug_log ("COMMS MAN: RECEIVED JOIN REQUEST by %s (dpid %d)",
												get_local_entity_string (this_connection->pilot_entity, STRING_TYPE_PILOTS_NAME),
												received_id);
							}
							else
							{

								debug_log ("COMMS MAN: received JOIN REQUEST by %d", received_id);
							}

							#endif

							//
							// flush group send buffer
							//

							send_comms_data ();

							//
							// pack mission data into packet
							//

							new_connection = get_connection_list_item (received_id);

							//
							// Store entity data
							//

							while (pack_session (new_connection->connection_receive_buffer, &new_connection->connection_receive_buffer_size, PACK_MODE_CLIENT_SESSION))
							{

								new_connection->connection_receive_buffer_size *= 2;

								#if DEBUG_MODULE

								debug_log ("COMMS MAN: Mission data: connection_receive_buffer too small, mallocing to %d", new_connection->connection_receive_buffer_size);

								#endif

								free_mem (new_connection->connection_receive_buffer);

								new_connection->connection_receive_buffer = malloc_heap_mem (new_connection->connection_receive_buffer_size);

								memset (new_connection->connection_receive_buffer, 0, new_connection->connection_receive_buffer_size);
							}

							// add frame id
							index_number = get_group_frame_id ();
							memcpy (&new_connection->connection_receive_buffer [new_connection->connection_receive_buffer_size], (void *) &index_number, sizeof (int));
							new_connection->connection_receive_buffer_size += sizeof (int);

							send_packet (received_id, PACKET_TYPE_MISSION_DATA, new_connection->connection_receive_buffer, new_connection->connection_receive_buffer_size, SEND_TYPE_PERSONAL);

							memset (new_connection->connection_receive_buffer, 0, new_connection->connection_receive_buffer_size);

							//
							// send group frame id
							//

							SDL_Delay (100);

							index_number = get_group_frame_id ();

							//send_packet (received_id, PACKET_TYPE_FRAME_ID, (void *) &index_number, 4, SEND_TYPE_PERSONAL);

							zero_average_pack_size ();
						}

						break;
					}

					case PACKET_TYPE_CLIENT_FRAME_ID:
					{

						int
							loop1,
							loop2,
							index_number;

						stub_packet_type
							*stub_packet;

						connection_list_type
							*new_connection;

						index_number = get_list_item (received_data, int);

						new_connection = get_connection_list_item (received_id);

						//#if DEBUG_MODULE

						if (new_connection)
						{

							debug_log ("COMMS MAN: received CLIENT FRAME ID (%d) by %d %s", index_number, received_id, direct_play_get_player_name (received_id));
						}

						//#endif

						//
						// send all packets between when the client started to join and when it actually joined.
						//

						for (loop1 = index_number; loop1 < get_group_frame_id () - 1; loop1 ++)
						{

							//#if DEBUG_MODULE

							debug_log ("COMMS MAN: sending packet %d frame %d to recently joined client", loop1, 0);

							//#endif

							stub_packet = resend_packet (received_id, loop1, 1, SEND_TYPE_GROUP);

							ASSERT (stub_packet);

							for (loop2 = 2; loop2 <= stub_packet->packet->number_of_packets; loop2 ++)
							{

								//#if DEBUG_MODULE

								debug_log ("COMMS MAN: sending packet %d frame %d to recently joined client", loop1, loop2);

								//#endif

								stub_packet = resend_packet (received_id, loop1, loop2, SEND_TYPE_GROUP);
							}
						}

						break;
					}

					case PACKET_TYPE_GUNSHIP_REQUEST_REFUSED:
					{

//						#if DEBUG_MODULE

						debug_log ("COMMS MAN: Gunship refused");

//						#endif

						set_server_response (SERVER_RESPONSE_REFUSE);

						break;
					}

					case PACKET_TYPE_GUNSHIP_REQUEST_ACCEPTED:
					{

						entity
							*gunship;

						int
							index_number;

//						#if DEBUG_MODULE

						debug_log ("COMMS MAN: received GUNSHIP ACCEPTED by %d", received_id);

//						#endif

						//
						// set gunship
						//

						index_number = get_list_item (received_data, int);

						ASSERT (get_pilot_entity ());

						gunship = get_local_entity_safe_ptr (index_number);

						debug_filtered_log ("COMM_MAN: setting gunship");

						planner_event = FALSE;

						if (get_event_stack_head_function() == ingame_screen_set_events)
						{

							pop_event (ingame_screen_set_events);

							planner_event = TRUE;
						}

						assign_entity_to_user (gunship);

						if (planner_event)
						{

							push_event (ingame_screen_set_events, "ingame screen events");
						}

						debug_filtered_log ("COMM_MAN: gunship set");

						////////////////////////////////////////////////////////////////////////

						break;
					}

					case PACKET_TYPE_PILOT_REQUEST_ACCEPTED:
					{

						int
							index_number;

						ASSERT (get_comms_model () == COMMS_MODEL_CLIENT);

//						#if DEBUG_MODULE

						debug_log ("COMMS MAN: received PILOT ACCEPTED by %d", received_id);

//						#endif

						index_number = get_list_item (received_data, int);

						set_pilot_entity (get_local_entity_safe_ptr (index_number));

						break;
					}

					case PACKET_TYPE_MISSION_DATA:
					{

						#if DEBUG_MODULE

						debug_log ("COMMS MAN: received MISSION DATA by %d", received_id);

						#endif

						set_mouse_graphic_off ();

						//
						// LOAD TERRAIN DATA
						//

						load_3d_terrain_game_data ();

						initialise_population_name_database ();

						load_route_data (); // might need to send what route filename to load...

						//
						// Initialise stuff
						//

						create_local_only_entities (PACK_MODE_CLIENT_SESSION);

						/////////////////////////////////////////////////////////////////
						if (strstr ((char*) stoupper (side_data_filename), "SID"))
						{

							read_sector_side_file (side_data_filename);
						}
						else if (strstr ((char*) stoupper (side_data_filename), "DAT"))
						{

							load_ai_sector_data (side_data_filename);
						}
						/////////////////////////////////////////////////////////////////

						deinitialise_formation_database ();

						initialise_formation_database ();

						deinitialise_formation_component_database ();

						initialise_formation_component_database ();

						if (unpack_session (received_data, received_size - 4, PACK_MODE_CLIENT_SESSION))
						{

							debug_fatal ("COMMS MAN: received size overflow");
						}
/*
						force = get_local_entity_first_child (get_session_entity (), LIST_TYPE_FORCE);

						while (force)
						{

							create_frontline (force);

							force = get_local_entity_child_succ (force, LIST_TYPE_FORCE);
						}

*/
						{
							int
								index_number;

							connection_list_type
								*new_connection;

							received_data += received_size - 4;
							index_number = get_list_item (received_data, int);

							new_connection = get_connection_list_item (received_id);

							new_connection->receive_group_frame_id = index_number;

							send_packet (get_server_id (), PACKET_TYPE_CLIENT_FRAME_ID, (void *) &index_number, 4, SEND_TYPE_PERSONAL);
						}

						session_data = TRUE;

						//direct_play_join_group ();

						set_gunship_waiting_for_connection ( FALSE );

						zero_average_pack_size ();

						set_mouse_graphic_on ();

						break;
					}

					case PACKET_TYPE_FRAME_ID:
					{

						int
							index_number;

						connection_list_type
							*new_connection;

						index_number = get_list_item (received_data, int);

						#if DEBUG_MODULE

						debug_log ("COMMS MAN: received FRAME ID (%d) by %d", index_number, received_id);

						#endif

						new_connection = get_connection_list_item (received_id);

						new_connection->receive_group_frame_id = index_number;

						send_packet (get_server_id (), PACKET_TYPE_CLIENT_FRAME_ID, (void *) &index_number, 4, SEND_TYPE_PERSONAL);

						break;
					}

					///////////////////////////////////////////////////////////////////////////////////////////////
					//
					// In game packets
					//
					///////////////////////////////////////////////////////////////////////////////////////////////

					case PACKET_TYPE_AI_DATA:
					{

						int
							//padding,
							data_size;

						#if DEBUG_MODULE >= 2

						debug_log ("COMMS MAN: received AI DATA by %d", received_id);

						#endif

						if (get_comms_model () == COMMS_MODEL_CLIENT)
						{

							ASSERT (session_data);
						}

						data_size = get_list_item (received_data, int);

						//debug
						//padding = get_list_item (received_data, int);
						//end

						open_unpack_buffer (received_data, received_size);

						process_received_entity_comms_messages ();

						ASSERT (!get_unpack_buffer_overflow ());

						close_unpack_buffer ();

						//debug
						//padding = get_list_item (received_data, int);
						//end

						memset (received_data, 0, this_connection->connection_receive_buffer_size);

						break;
					}

					case PACKET_TYPE_END_GAME:
					{

						debug_log ("COMMS MAN: received END GAME from %d", received_id);

						if (get_comms_model () == COMMS_MODEL_SERVER)
						{
							if (this_connection->gunship_entity)
							{

								set_client_server_entity_int_value (this_connection->gunship_entity, INT_TYPE_PLAYER, ENTITY_PLAYER_AI);
							}

							if (this_connection->pilot_entity)
							{

								debug_log ("	from %s ", get_local_entity_string (this_connection->pilot_entity, STRING_TYPE_PILOTS_NAME));
							}

							unregister_connection (received_id);
						}
						else
						{

							if (received_id == get_server_id ())
							{

								//setup_campaign_over_screen (get_local_force_entity (get_global_gunship_side ()), CAMPAIGN_RESULT_STALEMATE);

								start_game_exit (GAME_EXIT_KICKOUT, FALSE);
							}
						}

						receive_flag = FALSE;

						break;
					}

					case PACKET_TYPE_SERVER_REJECTED:
					{

						debug_log ("COMMS MAN: received SERVER REJECTED (server id %d)", received_id);

						//setup_campaign_over_screen (get_local_force_entity (get_global_gunship_side ()), CAMPAIGN_RESULT_SERVER_REJECTED);

						start_game_exit (GAME_EXIT_KICKOUT, FALSE);

						break;
					}

					default:
					{

						debug_fatal ("ERROR: Data Exchange, unknown packet type %d", type);

						break;
					}
				}
			}

			send_type --;
		}
	}
}
コード例 #4
0
ファイル: init.c プロジェクト: DexterWard/comanche
void full_initialise_game (void)
{

	char
		buffer [1024];

	////////////////////////////////////////
	//
	// WARNING!     INITIALISATION ORDER IS CRITICAL
	//
	// NOTE :       MEMORY BLOCK SYSTEM CONSTRAINTS;
	//                      DO NOT USE REGISTER_EXIT_FUNCTION
	//                      FOR DEINITIALISATION.
	//
	////////////////////////////////////////

	////////////////////////////////////////
	//
	// INITIALISE GRAPHICS FILES
	//
	////////////////////////////////////////

	{

		char
			buffer[256];

#if ( OEM_3DLABS_VERSION )
		sprintf ( buffer, "3DLabs Demonstration version" );
#else
		sprintf ( buffer, "%s: %d. %d. %d %s", get_trans ("Version"), MAJOR_VERSION, DATA_VERSION, MINOR_VERSION, BUILD_TYPE );
#endif

		set_ui_object_text (version_text, buffer);

//		add_to_pop_up_list ( buffer, init_screen_message_area, NULL, 0, UI_FONT_ARIAL_14, ui_colour_white );
	}

	if ( ( !get_global_graphics_files_installed () ) || command_line_new_graphics )
	{

		float
			file_count,
			percentage;

		int
			graphics_count_to_convert;

		char
			buffer [256];

		file_count = 0;

		graphics_count_to_convert = get_uninstalled_graphics_file_count ( GRAPHICS_CONVERSION_SECOND_PASS );

		if ( graphics_count_to_convert )
		{

			debug_log ( "First time graphics conversion" );

			sprintf (buffer, "%s...%s", get_trans ("Loading"), get_trans ("First Time Graphics Conversion"));

			set_ui_object_text (initialising_text, buffer);

			while (!install_graphics_files (GRAPHICS_CONVERSION_SECOND_PASS))
			{

				file_count ++;

				percentage = (file_count / graphics_count_to_convert) * 100.0;

				sprintf ( buffer, "%s...%s %.0f%%", get_trans ("Loading"), get_trans ("First Time Graphics Conversion"), percentage );

				set_ui_object_text (initialising_text, buffer);

				set_ui_object_redraw (init_screen, TRUE);

				ui_force_update ();
			}

			sprintf (buffer, "%s...%s", get_trans ("Loading"), get_trans ("First Time Graphics Conversion"));

			set_ui_object_text (initialising_text, buffer);
		}
	}

	save_global_options_data ();

	debug_log ( "Opening graphics files" );

	sprintf (buffer, "%s...%s", get_trans ("Loading"), get_trans ("Graphics"));

	set_ui_object_text (initialising_text, buffer);

	ui_force_update ();

	mopen_all_graphics_files (GRAPHICS_CONVERSION_SECOND_PASS);

	//
	// Check Apache Havoc FFP files exist
	//

	check_apache_havoc_ffp_files ();

	////////////////////////////////////////
	//
	// STATE IF APHAVOC INSTALLED
	//
	////////////////////////////////////////

	#if !DEMO_VERSION
		if (get_global_apache_havoc_installed ())
		{
			char
				buffer [256];

			sprintf (buffer, "Apache Havoc: %s", get_trans ("MP_INSTALLED"));

			set_ui_object_text (ah_installed_text, buffer);

			process_ingame_text_object_size (ah_installed_text, NULL, NULL, 0, RESIZE_OPTION_FIXED_BUTTON);

			ui_force_update ();
		}
	#else
		set_global_apache_havoc_installed (FALSE);
	#endif

	////////////////////////////////////////
	//
	// INITIALISE MATHS LIBRARY
	//
	////////////////////////////////////////

	debug_log ( "Initialising maths library" );

	sprintf (buffer, "%s...%s", get_trans ("Loading"), get_trans ("Maths"));

	set_ui_object_text (initialising_text, buffer);

	ui_force_update ();

	initialise_maths_library ();

	////////////////////////////////////////
	//
	// INITIALISE CD PLAYER
	//
	////////////////////////////////////////

	debug_log ( "Initialising CD audio" );

	sprintf (buffer, "%s...%s", get_trans ("Loading"), get_trans ("CD Rom"));

	set_ui_object_text (initialising_text, buffer);

	ui_force_update ();

	capture_cd_audio_device ();

#ifdef COMMERCIAL
#if !DEMO_VERSION
#if ( LANGUAGE != LANGUAGE_SPANISH )
//	if ( !check_cd_for_80_minutes () )
//	{
//
//		debug_fatal ("Unable to find the Enemy Engaged RAH66 Comanche Vs KA52 Hokum CD\n\nPlease insert the CD and try again ...");
//	}
#endif
#endif
#endif

	////////////////////////////////////////
	//
	// INITIALISE JOYSTICK
	//
	////////////////////////////////////////

	debug_log ( "Initialising joysticks" );
	sprintf (buffer, "%s...%s", get_trans ("Loading"), get_trans ("Joystick"));

	set_ui_object_text (initialising_text, buffer);

	ui_force_update ();

	initialise_joysticks ();

	////////////////////////////////////////
	//
	// INITIALISE UPDATE FUNCTIONS
	//
	////////////////////////////////////////

	debug_log ( "Initialising update function list" );

	sprintf (buffer, "%s...%s", get_trans ("Loading"), get_trans ("Update"));

	set_ui_object_text (initialising_text, buffer);

	ui_force_update ();

	initialise_update_function_list ();

	////////////////////////////////////////
	//
	// INITIALISE DIRECT PLAY
	//
	////////////////////////////////////////

	debug_log ( "Initialising direct play" );

	sprintf (buffer, "%s...%s", get_trans ("Loading"), get_trans ("Comms System"));

	set_ui_object_text (initialising_text, buffer);

	ui_force_update ();

	direct_play_initialise_system ();

	//
	// Register the application for any lobbies
	//

	direct_play_register_application ( "COMANCHE HOKUM", "cohokum.exe" );

	////////////////////////////////////////
	//
	// INITIALISE COMMS
	//
	////////////////////////////////////////

	//
	// DEPENDENCY: initialise_comms BEFORE initialise_entity_system
	//

	debug_log ( "Initialising comms manager" );

	sprintf (buffer, "%s...%s", get_trans ("Loading"), get_trans ("Comms System"));

	set_ui_object_text (initialising_text, buffer);

	ui_force_update ();

	initialise_comms_manager ();

	initialise_comms ();

	initialise_comms_debug ();

	////////////////////////////////////////
	//
	// INITIALISE 3D SYSTEM
	//
	////////////////////////////////////////

	debug_log ( "Initialising 3d system" );

	sprintf (buffer, "%s...%s", get_trans ("Loading"), get_trans ("3D System"));

	set_ui_object_text (initialising_text, buffer);

	ui_force_update ();

	initialise_application_3d_system ();

	initialise_terrain_database ();

	set_fpu_rounding_mode_zero ();

	////////////////////////////////////////
	//
	// INITIALISE FILE TAG SYSTEM
	//
	////////////////////////////////////////

	debug_log ( "Installing file tag system" );

	sprintf (buffer, "%s...%s", get_trans ("Loading"), get_trans ("Tag System"));

	set_ui_object_text (initialising_text, buffer);

	ui_force_update ();

	initialise_file_tag_system ();

	////////////////////////////////////////
	//
	// INITIALISE USER-INTERFACE
	//
	////////////////////////////////////////

	debug_log ( "Initialising ui menus" );

	sprintf (buffer, "%s...%s", get_trans ("Loading"), get_trans ("UI Manager"));

	set_ui_object_text (initialising_text, buffer);

	ui_force_update ();

	initialise_ui_menus ();

	////////////////////////////////////////
	//
	// INITIALISE ENTITY SYSTEM
	//
	////////////////////////////////////////

	debug_log ( "Initialising entity system" );

	sprintf (buffer, "%s...%s", get_trans ("Loading"), get_trans ("System Manager"));

	set_ui_object_text (initialising_text, buffer);

	ui_force_update ();

	initialise_entity_system (125000);

	////////////////////////////////////////
	//
	// INITIALISE AI SYSTEM
	//
	////////////////////////////////////////

	debug_log ( "Initialising ai system" );

	sprintf (buffer, "%s...%s", get_trans ("Loading"), get_trans ("AI System"));

	set_ui_object_text (initialising_text, buffer);

	ui_force_update ();

	initialise_ai_system ();

	////////////////////////////////////////
	//
	// INITIALISE USER DEFINED KEYS
	//
	////////////////////////////////////////

	debug_log ( "Initialising user defined events" );

	initialise_user_defined_events ();

	////////////////////////////////////////
	//
	// INITIALISE PLAYER LIST
	//
	////////////////////////////////////////

	debug_log ( "Initialising player list" );

	sprintf (buffer, "%s...%s", get_trans ("Loading"), get_trans ("Players"));

	set_ui_object_text (initialising_text, buffer);

	ui_force_update ();

	load_player_list ();

	////////////////////////////////////////
	//
	// INITIALISE MEDAL / PROMOTION NAME DATABASE
	//
	////////////////////////////////////////

	initialise_medal_and_promotion_names ();

	////////////////////////////////////////
	//
	// INITIALISE SOUND SYSTEM
	//
	////////////////////////////////////////

	debug_log ( "Initialising sound system" );

	sprintf (buffer, "%s...%s", get_trans ("Loading"), get_trans ("Sound System"));

	set_ui_object_text (initialising_text, buffer);

	ui_force_update ();

	initialise_application_sound_system ();

	initialise_game_initialisation_phases ();

	debug_log ( "Finished Full initialise" );
	set_ui_object_text ( initialising_text, get_trans ("Finished Initialisation") );

	ui_force_update ();

//	play_avi ( "wenesday.avi", 0 );
}