/// @function:							scr_dialogue_start( _filename );
/// @param	{string}	_filename		The filename of the dialogue branch

// Requirements: An instance of obj_dialogue must exist in the room

function scr_dialogue_start( _filename ) {
	if (!instance_exists(obj_dialogue) ) {
		return -1;
	}
	
//VERSION 3 FILE FORMAT
//NOT COMPATIBLE WITH PRIOR DIALOGUE SCRIPTS (Wriggle, Sunflowers, Cirno)
		
//file format for dialogue:
/*
	each line of dialogue goes as follows:
			variable			type		ds_map
========================================================
line 1		bg_id				{int}		bg_test
	 2		mus_id				{int}		mus_test
	 3		sound_id			{int}		sound_test
	 4		display_mode		{int}		display_test
	 5		actor_A_sprite		{int}		sprite_test
	 6		actor_A_pos			{real}		pos_test
	 7		actor_B_sprite		{int}		sprite_test
	 8		actor_B_pos			{real}		pos_test
	 9		actor_C_sprite		{int}		sprite_test
	 10		actor_C_pos			{real}		pos_test
	 11		speaker_name		{string}	speaker_test
	 12		texttarget			{string}	text_test
	
	the ints contained in lines 1-3,5,7,9 refer to the macro ID 
	listed in scr_initialize() that refer to background image, 
	music, sound, and portrait sprite resources used by obj_dialogue.
	
	line 4 refers to text display modes in obj_dialogue. 
	0	no text, background + portrait sprites only
	1	adventure mode, where texttarget appears in boxes 
		that appear under the character. this displays the speaker_name 
		in line 11.
	2	narration mode, where texttarget appears in the center
		of the screen with a 50% alpha rectangle drawn over bg_id.
		speaker_name is not displayed
	3	::TODO::
		CG mode, where texttarget appears with an image referenced in 
		bg_id that pans	across the image slowly to end at a final point. 
		this is for scenes that have larger detailed CG images rather
		than a static background scene
		
	lines 6,8,10 are the horizontal position of the preceding portrait
	sprite resource, where 0 is 'centered' (x=320), -1 is 'left' (x=120),
	and 1 is 'right' (x=520).
	
	lines 11 and 12 are lines of text, intended as the current line's 
	speaker (11, speaker_name) and the text they are speaking (12, 
	texttarget). # acts as a newline delimiter for texttarget
*/	

	//clear all queues
	ds_queue_clear( obj_dialogue.bg_test );
	ds_queue_clear( obj_dialogue.mus_test );
	ds_queue_clear( obj_dialogue.sound_test );
	ds_queue_clear( obj_dialogue.display_test );
	ds_queue_clear( obj_dialogue.sprite_test );
	ds_queue_clear( obj_dialogue.pos_test );
	ds_queue_clear( obj_dialogue.speaker_test);
	ds_queue_clear( obj_dialogue.text_test );

	//open dialogue file matching _filename
	file = file_text_open_read( _filename );

	//enqueue dialogue
	while (!file_text_eof(file) ) {
		ds_queue_enqueue( obj_dialogue.bg_test, file_text_read_real(file) );
		file_text_readln(file);
		ds_queue_enqueue( obj_dialogue.mus_test, file_text_read_real(file) );
		file_text_readln(file);
		ds_queue_enqueue( obj_dialogue.sound_test, file_text_read_real(file) );
		file_text_readln(file);
		ds_queue_enqueue( obj_dialogue.display_test, file_text_read_real(file) );
		file_text_readln(file);
		ds_queue_enqueue( obj_dialogue.sprite_test, file_text_read_real(file) );
		file_text_readln(file);
		ds_queue_enqueue( obj_dialogue.pos_test, file_text_read_real(file) );
		file_text_readln(file);
		ds_queue_enqueue( obj_dialogue.sprite_test, file_text_read_real(file) );
		file_text_readln(file);
		ds_queue_enqueue( obj_dialogue.pos_test, file_text_read_real(file) );
		file_text_readln(file);
		ds_queue_enqueue( obj_dialogue.sprite_test, file_text_read_real(file) );
		file_text_readln(file);
		ds_queue_enqueue( obj_dialogue.pos_test, file_text_read_real(file) );
		file_text_readln(file);
		ds_queue_enqueue( obj_dialogue.speaker_test, file_text_read_string(file) );
		file_text_readln(file);
		ds_queue_enqueue( obj_dialogue.text_test, file_text_read_string(file) );
		file_text_readln(file);
	}
	
	//close dialogue file
	file_text_close( file );
		
	//enter dialogue mode and set variables
	global.dialogue_mode = true;
	obj_dialogue.textspew = "";
	obj_dialogue.texttarget = "";
	obj_dialogue.textload = "";
	obj_dialogue.textlines = ["","","","","","",""];
	obj_dialogue.spewlength = 0;
	obj_dialogue.textlinecount = 0;
	obj_dialogue.textlinefadein = 0;
	obj_dialogue.text_advance_ready = TEXT_LOADING;
	obj_dialogue.text_auto_mode = AUTO_OFF;
	obj_dialogue.text_auto_timer = 60;
	obj_dialogue.speaker_name = "";
	obj_dialogue.bg_id = BG_NONE;
	obj_dialogue.bg_id_last = BG_NONE;
	obj_dialogue.bg_sprite = -1;
	obj_dialogue.mus_id = MUS_NONE;
	obj_dialogue.mus_id_last = MUS_NONE;
	obj_dialogue.mus_playing = -1;
	obj_dialogue.sound_id = SOUND_NONE;
	obj_dialogue.sound_playing = -1;
	obj_dialogue.display_mode = DISPLAY_NOTEXT;
	obj_dialogue.actor_A_sprite_id = TALK_NOSPRITE;
	obj_dialogue.actor_A_sprite_id_last = TALK_NOSPRITE;
	obj_dialogue.actor_A_sprite = -1;
	obj_dialogue.actor_A_anim_frame = 0;
	obj_dialogue.actor_A_pos = POSITION_LEFT;
	obj_dialogue.actor_B_sprite_id = TALK_NOSPRITE;
	obj_dialogue.actor_B_sprite_id_last = TALK_NOSPRITE;
	obj_dialogue.actor_B_sprite = -1;
	obj_dialogue.actor_B_anim_frame = 0;
	obj_dialogue.actor_B_pos = POSITION_LEFT;
	obj_dialogue.actor_C_sprite_id = TALK_NOSPRITE;
	obj_dialogue.actor_C_sprite_id_last = TALK_NOSPRITE;
	obj_dialogue.actor_C_sprite = -1;
	obj_dialogue.actor_C_anim_frame = 0;
	obj_dialogue.actor_C_pos = POSITION_LEFT;
}