63 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| function scr_options_init(){
 | |
| 	if (!variable_global_exists( "global.options" ) ) {
 | |
| 		global.options = -1;
 | |
| 	}
 | |
| 	if (!ds_exists(global.options, ds_type_map) ) {
 | |
| 		global.options = ds_map_create();
 | |
| 	}
 | |
| 	
 | |
| 	//initialize default values for options
 | |
| 	global.options[? OPTIONS_INPUT_TYPE] = "keyboard";
 | |
| 	global.options[? OPTIONS_FULLSCREEN] = false;
 | |
| 	global.options[? OPTIONS_WINDOWMULT] = VIEW_MULTIPLY_720;	//default to 1280x720 for non-fullscreen
 | |
| 	if ( display_get_height() >= 2160 && display_get_width() >=	3840) {						//attempt to adjust to common display resolutions
 | |
| 		global.options[? OPTIONS_FULLMULT] = VIEW_MULTIPLY_2160;
 | |
| 	} else if ( display_get_height() >= 1440 && display_get_width() >=2560 ) {
 | |
| 		global.options[? OPTIONS_FULLMULT] = VIEW_MULTIPLY_1440;
 | |
| 	} else if ( display_get_height() >= 1080 && display_get_width() >= 1920 ) {
 | |
| 		global.options[? OPTIONS_FULLMULT] = VIEW_MULTIPLY_1080;
 | |
| 	} else if ( display_get_height() >= 720 && display_get_width() >= 1280 ) {
 | |
| 		global.options[? OPTIONS_FULLMULT] = VIEW_MULTIPLY_720;
 | |
| 	} else {
 | |
| 		global.options[? OPTIONS_FULLMULT] = VIEW_MULTIPLY_360;
 | |
| 	}
 | |
| 	
 | |
| 	//load options from file
 | |
| 	if (!file_exists(working_directory + "options.json") ) { //working directory for testing is ~/.config/neo_faraii_nights
 | |
| 		var file = file_text_open_write(working_directory + "options.json");
 | |
| 		var output_string = json_encode( global.options );
 | |
| 		file_text_write_string(file, output_string);
 | |
| 		file_text_close(file);
 | |
| //		show_message( "Options file does not exist. Storing defaults" );
 | |
| 	} else {
 | |
| 		var input_string = "";
 | |
| 		var test_key = ds_map_create();
 | |
| 		var read_file = file_text_open_read( working_directory + "options.json" );
 | |
| 		input_string = file_text_read_string( read_file );
 | |
| 		test_key = json_decode( input_string );
 | |
| 		file_text_close( read_file );
 | |
| 		if ( test_key != -1 ) {
 | |
| 			if ( ds_exists( global.options, ds_type_map ) ) {  //0-9 is the numeric range of the macros
 | |
| 				global.options = json_decode( input_string );
 | |
| 			} else {
 | |
| 				var write_file = file_text_open_write( working_directory + "options.json" );
 | |
| 				var output_string = json_encode( global.options );
 | |
| 				file_text_write_string(write_file, output_string);
 | |
| 				file_text_close( write_file );
 | |
| //				show_message( "Options file verification failed. Storing defaults" );
 | |
| 			}
 | |
| 		}
 | |
| 		ds_map_destroy( test_key );
 | |
| 	}
 | |
| 
 | |
| 	//apply options
 | |
| 	if (global.options[? OPTIONS_FULLSCREEN]) {
 | |
| 		window_set_fullscreen(true);
 | |
| 		view_set_hport(view_current, WINDOW_BASE_HEIGHT * global.options[? OPTIONS_FULLMULT]);
 | |
| 		view_set_wport(view_current, WINDOW_BASE_WIDTH * global.options[? OPTIONS_FULLMULT]);
 | |
| 	} else {
 | |
| 		window_set_fullscreen(false);
 | |
| 		view_set_hport(view_current, WINDOW_BASE_HEIGHT * global.options[? OPTIONS_WINDOWMULT]);
 | |
| 		view_set_wport(view_current, WINDOW_BASE_WIDTH * global.options[? OPTIONS_WINDOWMULT]);
 | |
| 	}
 | |
| } |