Pārlūkot izejas kodu

Added the sample of a pattern's initialisation. Will need to comment

Adrien Boucaud 12 gadi atpakaļ
vecāks
revīzija
846f9ea08e
3 mainītis faili ar 66 papildinājumiem un 5 dzēšanām
  1. 48 2
      init_states.c
  2. 2 2
      init_states.h
  3. 16 1
      struct.h

+ 48 - 2
init_states.c

@@ -1,5 +1,45 @@
 #include "init_states.h"
+void init_pattern_wall(int *buffer, int w1, int w2, int w3, int w4, int w5, int w6)
+{
+	buffer[0] = w1;
+	buffer[1] = w2;
+	buffer[2] = w3;
+	buffer[3] = w4;
+	buffer[4] = w5;
+	buffer[5] = w6;
+}
+void init_patterns(Game_Data *data)
+{
+	int i = 0;
+	Pattern *current_pattern;
+	do{
+		current_pattern = &(data->patterns[i]);
+		switch(i)
+		{
+			case PATTERN1:
+				current_pattern->num_stages = 6;
+				current_pattern->stages = NULL;
+				current_pattern->stages = malloc(sizeof(Pattern_Stage));
+				if(current_pattern->stages == NULL)
+					return;
 
+				init_pattern_wall(current_pattern->stages[0].walls, 0, 0, 1, 0, 0, 1);
+				init_pattern_wall(current_pattern->stages[0].walls, 1, 0, 0, 1, 0, 0);
+				init_pattern_wall(current_pattern->stages[0].walls, 0, 1, 0, 0, 1, 0);
+				init_pattern_wall(current_pattern->stages[0].walls, 0, 0, 1, 0, 0, 1);
+				init_pattern_wall(current_pattern->stages[0].walls, 1, 0, 0, 1, 0, 0);
+				init_pattern_wall(current_pattern->stages[0].walls, 0, 1, 0, 0, 1, 0);
+				current_pattern->prob = 0.5;
+			break;
+			case PATTERN2:
+			break;
+			case PATTERN3:
+			break;
+		}
+	}while(i != END_PATTERNS)
+
+
+}
 void init_game(Game_Data *data)
 {
 //TODO: init the level depending on the value of data->current_entry
@@ -8,8 +48,8 @@ void init_game(Game_Data *data)
 	if(data->level == NULL)
 		return;
 
-	data->level->nb_patterns = 0;
-
+	data->level->nb_patterns = 3;
+	
 	data->level->cam_change_interval = 5;
 	data->level->cam_change_precision = 1;
 	data->level->cam_change_probability = 0.75;
@@ -95,4 +135,10 @@ void init_menu(Game_Data *data)
 void init_game_over(Game_Data *data)
 {
 
+}
+
+void init_patterns(Game_Data *data)
+{
+
+
 }

+ 2 - 2
init_states.h

@@ -6,5 +6,5 @@ void init_game(Game_Data *data);
 void init_title(Game_Data *data);
 void init_menu(Game_Data *data);
 void init_game_over(Game_Data *data);
-
-#endif
+void init_patterns(Game_Data *data);
+#endif

+ 16 - 1
struct.h

@@ -14,16 +14,29 @@
 #define bool unsigned char
 
 //macros
+
 #define abs(x) x>0 ? x : -x
 
-typedef enum {PATTERN} Pattern_Enum;
+typedef enum {PATTERN1, PATTERN2, PATTERN3, END_PATTERNS} Pattern_Enum;
 typedef struct Camera Camera;
 typedef struct Wall Wall;
 typedef struct Line Line;
 typedef struct Level Level;
 typedef struct Line_Transition Line_Transition;
 typedef struct Game_Data Game_Data;
+typedef struct Pattern_Stage Pattern_Stage;
 typedef enum {GAME, MENU, TITLE, GAME_OVER} State;
+typedef struct Pattern Pattern;
+
+struct Pattern_Stage{
+	bool walls[6];
+};
+struct Pattern{
+	Pattern_Stage *stages;
+	int num_stages;
+	int nb_lines; //so that we don't load a 5-lines pattern when we have 6 lines to fill
+	float prob; //some patterns are more common than some others
+};
 
 struct Level{
 
@@ -105,6 +118,8 @@ struct Game_Data{
 	unsigned int current_entry_high_score;
 	char **entry_difficulties; //a table of null-terminated strings
 	unsigned int keypress_delay;
+
+	Pattern patterns[END_PATTERNS];
 };
 
 #endif