Просмотр исходного кода

The draw_player function now supports the line transitions.

Adrien Boucaud лет назад: 12
Родитель
Сommit
a674f67dd8
1 измененных файлов с 36 добавлено и 5 удалено
  1. 36 5
      draw_states.c

+ 36 - 5
draw_states.c

@@ -31,12 +31,43 @@ void drawPlayer(Camera *cam, int player_angle, int nb_lines, Line_Transition lin
 	int y[32];
 	int i = 0;
 	int angle = 0;
-	for(i = 0; i < nb_lines; ++i)
+
+	float tmp_angle = 0.0;
+	float transition_angle = 0.0;
+	float delta_angle = 0.0;
+
+	if(line_transition.delta_nb_lines == 1)
+		nb_lines ++;
+	if(line_transition.counter_start != 0)
+		transition_angle = (360.0 / (float)nb_lines) * ((float)line_transition.counter / (float)line_transition.counter_start);
+	delta_angle = 360.0/nb_lines;
+
+	do
 	{
-	angle = i * 360/nb_lines;
-		x[i] = (8. + cam->zoom)*cos(PI * (angle + cam->angle)/180.) + cam->cX;
-        	y[i] = (8. + cam->zoom)*sin(PI * (angle + cam->angle)/180.) + cam->cY;
-	}
+		x[i] = (8. + cam->zoom)*cos(PI * (tmp_angle + cam->angle)/180.) + cam->cX;
+		y[i] = (8. + cam->zoom)*sin(PI * (tmp_angle + cam->angle)/180.) + cam->cY;
+
+		i++;
+		
+		switch(line_transition.delta_nb_lines)
+		{
+			case 0:
+				tmp_angle += delta_angle;
+				break;
+			case 1:
+				if(i < nb_lines)
+					tmp_angle += (360 - (delta_angle - transition_angle)) / (nb_lines - 1);
+				else
+					tmp_angle += delta_angle - transition_angle;
+				break;
+			case -1:
+				if(i < nb_lines)
+					tmp_angle += (360 - transition_angle) / (nb_lines - 1);
+				else
+					tmp_angle = transition_angle;
+				break;
+		}
+	}while(i <= nb_lines);
 
 	//draw the aforementionned circle, depending on the camera's center
 	//ML_filled_circle(cam.cX, cam.cY, 6, BLACK);