Pārlūkot izejas kodu

Made player rotation level and fps dependant

Eiyeron Fulmincendii 11 gadi atpakaļ
vecāks
revīzija
cb85c8aa9f
3 mainītis faili ar 10 papildinājumiem un 3 dzēšanām
  1. 2 0
      init_states.c
  2. 4 0
      struct.h
  3. 4 3
      update_states.c

+ 2 - 0
init_states.c

@@ -144,6 +144,8 @@ void init_game(Game_Data *data)
 	readPattern(&data->level->patterns[6], patternTest7);
 	data->level->nb_patterns = 7;
 
+	data->level->player_rotation_speed = 60;
+
 	data->level->cam_change_interval = 5;
 	data->level->cam_change_precision = 1;
 	data->level->cam_change_probability = 0.75;

+ 4 - 0
struct.h

@@ -33,6 +33,10 @@ struct Level{
 	Pattern* patterns;
 	int nb_patterns;
 
+	// Rotation spped. Different levels have different speed.
+	// Just compare Hexagon and Hexagonest in the original game
+	float player_rotation_speed;
+
 	//for the camera rotation
 	int cam_change_interval; //5 seconds most of the time, but who knows...
 	int cam_change_precision; //to add a bit of randomness to the intervals

+ 4 - 3
update_states.c

@@ -40,17 +40,18 @@ void update_game(Game_Data *data)
 		data->list = removeWall(data->list, 8);
 	}
 	//level generation
-	//TODO: something else than pure randomness
 	if(!data->cooldown_timer--) {
 		Pattern pattern = data->level->patterns[rand()% data->level->nb_patterns];
 		addPattern(data, &pattern, rand()%data->nb_lines, rand()&1);
 		data->cooldown_timer = pattern.cooldown;
 	}
+
+	// TODO : stop at wall side.
 	if(KeyDown(K_LEFT)){
-		data->player_angle-=15;
+		data->player_angle-=data->level->player_rotation_speed *  (data->current_time - data->last_time)*FRAME_TIME;
 	}
 	if(KeyDown(K_RIGHT)){
-		data->player_angle+=15;
+		data->player_angle+=data->level->player_rotation_speed *  (data->current_time - data->last_time)*FRAME_TIME;
 	}
 
 	if(KeyDown(K_ALPHA) && data->alpha_latch_value == 0) {