GUI Button

Различные кнопки, квадратные полукруглые, круглые , треугольные.

Все объекты отображаются посредством draw_shape, никаких image ов.

 

 

/// @description Create
//Site:   MidaDev.ru
//Author: Dimusikus

text_scale_current = 1;						//масштаб текста 
text_scale_default = 1;						//масштаб текста 
/// @description Draw
//Site:   MidaDev.ru
//Author: Dimusikus
	
	//если прописан шрифт, устанавливаем нужный шрифт
	if btntext_text_fnt !=0 then draw_set_font(btntext_text_fnt)
	
	var col_high = btntext_text_color;

	draw_set_halign(fa_center);
	draw_set_valign(fa_middle);
	
	//***************************************************************************************************************************************
	//проверяем позицию мышки внутри кнопки объекта
	if get_mouse_over_shapes(btntext_border) == true
	{	//мышка навелась на кнопку			
		
		//---------------------------------------------------
		//кнопка нажата?
		mouse_pressed_left_button = mouse_check_button(mb_left);		
		//---------------------------------------------------
		//зависимости от нажатой и ненажатой кнопки
		if mouse_pressed_left_button == true then   text_scale_current = lerp(text_scale_current, btntext_press_text_scale, btntext_press_text_scale_speed);
		else										text_scale_current = lerp(text_scale_current, btntext_hover_text_scale, btntext_press_text_scale_speed);
		//---------------------------------------------------
		draw_set_color(btntext_hover_border_color);		
		draw_shapes(btntext_hover_border, btntext_hover_border_fill);
		//---------------------------------------------------			
		draw_set_color(btntext_text_color);
		//повсыетка текста?
		if btntext_hover_text_highlighted == false then  draw_text_transformed(x, y, btntext_text, text_scale_current, text_scale_current, 0);		
		else										draw_text_transformed_highlighted(x, y, btntext_text_color, btntext_hover_text_highlighted_color, btntext_text, text_scale_current);		
		//---------------------------------------------------
		//запуск скрипта на отпускание кнопки мышки над кнопкой
		if mouse_check_button_released(mb_left) then 
		{
			audio_play_sound(btntext_sound,0,false);
			if script_exists(btntext_onClickAction) then script_execute(btntext_onClickAction);	
		}
	}
	else //***************************************************************************************************************************************
	{	//мышка вне кнопки		
		//масштабируем текст кнопки к нормальному состоянию
		text_scale_current = lerp(text_scale_current, text_scale_default, btntext_hover_text_scale_speed);				
		//---------------------------------------------------
		draw_set_color(btntext_border_color);				
		draw_shapes(btntext_border, btntext_border_fill);
		//---------------------------------------------------
		draw_set_color(btntext_text_color);
		if btntext_text_highlighted == false then   draw_text_transformed(x, y, btntext_text, text_scale_current, text_scale_current, 0); 
		else										draw_text_transformed_highlighted(x, y, btntext_text_color, btntext_text_highlighted_color, btntext_text, text_scale_current);
		//---------------------------------------------------
	};
	//***************************************************************************************************************************************
/// @description Отображает кнопку фигурой
//Site:   MidaDev.ru
//Author: Dimusikus
function draw_shapes(argument0, argument1) 
{
	//argument0 = тип фигуры
	//argument1 = параметр fill


			switch(argument0)
			{
				case "none": break;
				case "rectangle":	
									draw_rectangle(bbox_left, bbox_top, bbox_right, bbox_bottom, !argument1);								
									break;
				case "roundrect":	
									draw_roundrect(bbox_left, bbox_top, bbox_right, bbox_bottom, !argument1);
									break;
				case "circle":
									draw_circle(x,y,(bbox_right - bbox_left) / 2, !argument1);
									break;
				case "triangle_up":								
									draw_triangle(bbox_left, bbox_bottom, mean(bbox_left,bbox_right), bbox_top, bbox_right, bbox_bottom, !argument1);
									break;
				case "triangle_down":
									draw_triangle(bbox_left, bbox_top, mean(bbox_left,bbox_right), bbox_bottom, bbox_right, bbox_top, !argument1);
									break;					
			};




}



Настройка кнопок осуществляется непосредственно в редакторе комнат.