Часы ver2

Немного допилил визуал часов, сделал более плавную секундную стрелку а так же добавил на фон движение шестеренок как в подобии механических часах.

Большую часть статики перетащил в сурфейсы, от этого заметно увеличилась производительность приложения, т.к. циферблат отчасти рисуется вручную(цифры шкала).

surface = surface_create(sprite_width, sprite_height);

surface_set_target(surface);
draw_clear_alpha(c_black, 0);
//draw_self();
draw_sprite_ext(sprite_index, image_index, w2, h2, image_xscale, image_yscale, image_angle, image_blend, image_alpha);    

//-------------------------------------------------
//рисуем цифиря
draw_set_font(font_big);
if _r<150 then draw_set_font(font_small);
//-------------------------------------------------
draw_set_halign(fa_center);
draw_set_valign(fa_center);
draw_set_color(c_white);
for(i=1;i<=12;i++)	
	//draw_text(w2+lengthdir_x(_lenhor-_r/80, 90-(30*i)) - 0,h2 + lengthdir_y(_lenhor-_r/80, 90-(30*i)) - 0, string(i) );
	draw_text(w2+lengthdir_x(_lenhor+5, 90-(30*i)) - 0,h2 + lengthdir_y(_lenhor+5, 90-(30*i)) + 5, string(i) );
//-------------------------------------------------

//-------------------------------------------------
//рисуем шкалу секундную
draw_set_color(c_fuchsia);
draw_set_color(#58c7ee);
for(i=0;i<=59;i++)
{
	/*draw_line(x+lengthdir_x(_lenmit+2, i*6), y + lengthdir_y(_lenmit+2, i*6) -7,
			  x+lengthdir_x(_lenmit-2, i*6), y + lengthdir_y(_lenmit-2, i*6) -7);*/
			  
	draw_circle(w2+lengthdir_x(_lensec,90- i*6), h2 + lengthdir_y(_lensec, 90-i*6) , 2, false);
}
//-------------------------------------------------
//рисуем шкалу минутно
for(i=0;i<=59;i+=5)
{
	/*draw_line(x+lengthdir_x(_lenmit+2, i*6), y + lengthdir_y(_lenmit+2, i*6) -7,
			  x+lengthdir_x(_lenmit-2, i*6), y + lengthdir_y(_lenmit-2, i*6) -7);*/
			  
	draw_circle(w2+lengthdir_x(_lensec,90- i*6), h2 + lengthdir_y(_lensec, 90-i*6) , 4, false);
}
surface_reset_target();

 

Секундную стрелку лерпую

sec = lerp(sec, current_second, 0.1);

 

Шестерни вращаю:

//Step event
ang	= 6*current_second;

//Draw event
image_angle = -ang; //+ или - в зависимости куда шестерню крутим
draw_self();

 

 Маятник вертится кодом:

//Step event
ang	= 90*cos(get_timer()/1000000*2*pi);

//Draw event
image_angle = ang;
draw_self();

 

 всё просто.