RadioBox

добавлены радио группы

 гибкая система кастомизации

/// @description RadioBox CreateEvent

	if _caption_font !=0 then draw_set_font(_caption_font);
		
	radiobox_add_global(_radio_groupe, id);

 

/// @description
function radiobox_add_global(argument0, argument1) 
{
	//argument0 = radiobox_name
	//argument1 = id
	
		var radioname = argument0;
		var radio_id = argument1;
	
		//чекаем список общий всех боксов
		if !variable_global_exists("radio_box_lists")
		{
			trace("radio_box_lists несуществует, создаём");
			global.radio_box_lists = ds_map_create();
		};
	
		//--------------------------------------------------------
		var val = ds_map_find_value(global.radio_box_lists, radioname);
		if is_undefined(val)
		{
			//show_debug_message("Map entry does not exist!");
			trace(radioname, "no exists");
			lista = ds_list_create();
		
			ds_map_add_list(global.radio_box_lists, radioname, lista)
		}
	
		//--------------------------------------------------------
		lista = ds_map_find_value(global.radio_box_lists, radioname);
	
		if ds_list_find_index(lista, radio_id)==-1 then ds_list_add(lista, radio_id);
		//--------------------------------------------------------	
		//trace(ds_list_size(lista));
}
/// @description DrawEvent
	
	draw_set_halign(fa_left);
	draw_set_valign(fa_middle);
	
	draw_shapes_checkbox(_type_shape, _fill, _color, _check_color, _uncheck_color, _border, _checked, _caption);

 

/// @description Отображает кнопку фигурой и рисует рядом нуный текст
function draw_shapes_checkbox(argument0, argument1, argument2, argument3, argument4, argument5, argument6, argument7) 
{	

	//argument0 = тип фигуры
	//argument1 = параметр fill
	//argument2 = checkbox_color

	//argument3 = check_checkbox_color
	//argument4 = uncheckbox_color

	//argument5 = border
	//argument6 = checked

	//argument7 = caption

		
			var _x = 0;
			var _y = 0;
			var _type = argument0;
			var _fill = argument1;
			var _color = argument2;
			var _color_check = argument3;
			var _color_uncheck = argument4;
			var b = argument5;
			var ch = argument6;
			var _txt = argument7;
		
		
			draw_set_color(_color);
			//draw_set_color(checkbox_color);
			draw_text(bbox_right + b, y, _txt);
	
			switch(_type)
			{
				case "none": break;
				case "rectangle":	
									draw_rectangle(bbox_left, bbox_top, bbox_right, bbox_bottom, !_fill);
									draw_set_color(_color_uncheck);
									draw_rectangle(bbox_left+b, bbox_top+b, bbox_right-b, bbox_bottom-b, false);
									draw_set_color(_color_check);
									if ch then draw_rectangle(bbox_left+b*2, bbox_top+b*2, bbox_right-b*2, bbox_bottom-b*2, false);								
									break;
				case "roundrect":	
									draw_roundrect(bbox_left, bbox_top, bbox_right, bbox_bottom, !_fill);
									draw_set_color(_color_uncheck);
									draw_roundrect(bbox_left+b, bbox_top+b, bbox_right-b, bbox_bottom-b, false);
									draw_set_color(_color_check);
									if ch then draw_roundrect(bbox_left+b*2, bbox_top+b*2, bbox_right-b*2, bbox_bottom-b*2, false);								
									break;
				case "circle":
									draw_circle(x,y,(bbox_right - bbox_left) / 2, !_fill);
									draw_set_color(_color_uncheck);
									draw_circle(x,y,(bbox_right - bbox_left) / 2-b, !_fill);
									draw_set_color(_color_check);
									if ch then draw_circle(x,y,(bbox_right - bbox_left) / 2-b*2, !_fill);
									break;
				case "triangle_up":								
									draw_triangle(bbox_left, bbox_bottom, mean(bbox_left,bbox_right), bbox_top, bbox_right, bbox_bottom, !_fill);
									draw_set_color(_color_uncheck);
									draw_triangle(bbox_left+b, bbox_bottom-b, mean(bbox_left,bbox_right), bbox_top+b, bbox_right-b, bbox_bottom-b, !_fill);
									draw_set_color(_color_check);
									if ch then draw_triangle(bbox_left+b*2, bbox_bottom-b*2, mean(bbox_left,bbox_right), bbox_top+b*2, bbox_right-b*2, bbox_bottom-b*2, !_fill);
									break;
				case "triangle_down":
									draw_triangle(bbox_left, bbox_top, mean(bbox_left,bbox_right), bbox_bottom, bbox_right, bbox_top, !_fill);
									draw_set_color(_color_uncheck);
									draw_triangle(bbox_left+b, bbox_top+b, mean(bbox_left,bbox_right), bbox_bottom-b, bbox_right-b, bbox_top+b, !_fill);
									draw_set_color(_color_check);
									if ch then draw_triangle(bbox_left+b*2, bbox_top+b*2, mean(bbox_left,bbox_right), bbox_bottom-b*2, bbox_right-b*2, bbox_top+b*2, !_fill);
									break;					
			};


}

 

/// @description LeftReleased

	_checked = true;
	radiobox_checked(_radio_groupe, id);
	
	if script_exists(_checked_action) then script_execute(_checked_action);
	
	if(_sound_onclick) then audio_play_sound(_sound_onclick,0,false);

 

Gui элемент легко кастомизировать прямо в редакторе комнат: