Kaynağa Gözat

Merged some Adbook work about the menu

Eiyeron Fulmincendii 11 yıl önce
ebeveyn
işleme
fc71964fc1
5 değiştirilmiş dosya ile 49 ekleme ve 21 silme
  1. 1 3
      draw_states.c
  2. 40 14
      init_states.c
  3. 2 3
      states.c
  4. 6 0
      struct.h
  5. 0 1
      update_states.c

+ 1 - 3
draw_states.c

@@ -55,7 +55,6 @@ void draw_title(Game_Data *data)
 	drawDiagonals(data, data->nb_lines, data->line_transition);
 	drawBottomLeftCornerText("Press Shift", data->are_colors_reversed);	
 	drawBottomRightCornerText("By Eiyeron", data->are_colors_reversed);	
-
 }
 void draw_menu(Game_Data *data)
 {
@@ -176,7 +175,7 @@ static void drawPolygon(Game_Data *data, int nb_lines, Line_Transition line_tran
 		y[i] = (8. + cam->zoom)*sin(PI * (tmp_angle + cam->angle)/180.) + cam->cY;
 
 		i++;
-		
+
 		switch(line_transition.delta_nb_lines)
 		{
 			case 0:
@@ -246,7 +245,6 @@ static void drawDiagonals(Game_Data *data, int nb_lines, Line_Transition line_tr
 		x2 = fmul(fcos(tmp_angle), FIX(128));
 		y2 = fmul(fsin(tmp_angle), FIX(128));
 		ML_line(UNFIX(x1) + data->cam.cX, UNFIX(y1) + data->cam.cY, UNFIX(x2) + data->cam.cX, UNFIX(y2) + data->cam.cY, drawing_color);
-
 		i++;
 
 		switch(line_transition.delta_nb_lines){

+ 40 - 14
init_states.c

@@ -181,6 +181,7 @@ void init_game(Game_Data *data)
 	data->line_transition.delta_nb_lines = 0;
 	data->cooldown_timer = 16;
 }
+
 void init_title(Game_Data *data)
 {
 	data->start_time = RTC_GetTicks(); // 1 tick == 1/128 second
@@ -189,41 +190,66 @@ void init_title(Game_Data *data)
 	data->chrono_time = 0;
 
 	data->are_colors_reversed = 0;
-
-
 	data->cam.cX = 96;
 	data->cam.cY = 32;
 	data->cam.angle = 0;
 	data->cam.speed = 1;
 	data->cam.zoom = 24;
-
 	data->nb_lines = 6;
 	data->line_transition.counter = 0;
 	data->line_transition.counter_start = 0;
 	data->line_transition.delta_nb_lines = 0;
+}
 
+void load_difficulty_names(char **str_list)
+{
+	char c_1[] = "Hard";
+	char c_2[] = "Harder";
+	char c_3[] = "Hardest";
+	char c_4[] = "Hardester";
+	char c_5[] = "Hardestest";
+	char c_6[] = "Hardestestest";
+	int i = 0;
+	int j = 0;
+	for(i = 0; i < 6; i++)
+	{
+		str_list[i] = NULL;
+		str_list[i] = malloc(sizeof(char) * 24);
+		if(str_list[i] == NULL)
+			return;
+		for(j = 0; j < 24; str_list[i][j] = 0, j++);
+	}
+memcpy(str_list[0], c_1, sizeof(char) * strlen(c_1));
+memcpy(str_list[1], c_2, sizeof(char) * strlen(c_2));
+memcpy(str_list[2], c_3, sizeof(char) * strlen(c_3));
+memcpy(str_list[3], c_4, sizeof(char) * strlen(c_4));
+memcpy(str_list[4], c_5, sizeof(char) * strlen(c_5));
+memcpy(str_list[5], c_6, sizeof(char) * strlen(c_6));
 }
+
 void init_menu(Game_Data *data)
 {
-	data->start_time = RTC_GetTicks(); // 1 tick == 1/128 second
-	data->last_time = 0;
-	data->current_time = RTC_GetTicks();
-	data->chrono_time = 0;
-
-	data->are_colors_reversed = 0;
-
 
 	data->cam.cX = 64;
-	data->cam.cY = 64;
+	data->cam.cY = 70;
 	data->cam.angle = 0;
-	data->cam.speed = 0;
-	data->cam.zoom = 48;
-
+	data->cam.speed = 1.0;
+	data->cam.zoom = 8.0;
 	data->nb_lines = 6;
 	data->line_transition.counter = 0;
 	data->line_transition.counter_start = 0;
 	data->line_transition.delta_nb_lines = 0;
+
+	data->nb_entries = 6;
+	data->current_entry = 1;
+data->current_entry_high_score = 0; //to load from a save file
+data->entry_difficulties = NULL;
+data->entry_difficulties = malloc(sizeof(char*) * 6);
+if(data->entry_difficulties == NULL)
+	return;
+load_difficulty_names(data->entry_difficulties);
 }
+
 void init_game_over(Game_Data *data)
 {
 

+ 2 - 3
states.c

@@ -1,12 +1,11 @@
 #include "states.h"
 
-State current_state = GAME;
-
 static void key_latch_update(Game_Data* data) {
 	data->shift_latch_value = KeyDown(K_SHIFT);
 	data->alpha_latch_value = KeyDown(K_ALPHA);
 }
 
+State current_state = TITLE;
 void switch_to_state(State new_state, Game_Data *data)
 {
 	switch (new_state)
@@ -62,4 +61,4 @@ void draw(Game_Data *data)
 			draw_game_over(data);
 		break;
 	}
-}
+}

+ 6 - 0
struct.h

@@ -87,6 +87,7 @@ struct Line_Transition{
 };
 
 struct Game_Data{
+//Main game data
 	unsigned int start_time;
 	unsigned int last_time;
 	unsigned int current_time;
@@ -106,6 +107,11 @@ struct Game_Data{
 	unsigned char shift_latch_value;
 	unsigned char alpha_latch_value;
 	unsigned short cooldown_timer;
+//Start menu data
+	unsigned int nb_entries;
+	unsigned int current_entry; //from 1 to 6
+	unsigned int current_entry_high_score;
+	char **entry_difficulties; //a table of null-terminated strings
 };
 
 struct Pattern{

+ 0 - 1
update_states.c

@@ -16,7 +16,6 @@ void update_title(Game_Data *data)
 	}
 
 	updateCamera(&(data->cam), data->current_time - data->last_time);
-
 }
 
 #define min(a, b) ((a) < (b) ? (a) : (b))