#include "init_states.h" #include "pattern.h" const unsigned char patternTest1[] = { 0x0F, 0x00, 0x60, 0x01, 0x00, 0x00, 0x00, 0x05, 0x02, 0x00, 0x00, 0x00, 0x05, 0x03, 0x00, 0x00, 0x00, 0x05, 0x04, 0x00, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00, 0x00, 0x05, 0x04, 0x00, 0x20, 0x00, 0x05, 0x05, 0x00, 0x20, 0x00, 0x05, 0x00, 0x00, 0x20, 0x00, 0x05, 0x01, 0x00, 0x20, 0x00, 0x05, 0x02, 0x00, 0x20, 0x00, 0x05, 0x01, 0x00, 0x40, 0x00, 0x05, 0x02, 0x00, 0x40, 0x00, 0x05, 0x03, 0x00, 0x40, 0x00, 0x05, 0x04, 0x00, 0x40, 0x00, 0x05, 0x05, 0x00, 0x40, 0x00, 0x05, }; const unsigned char patternTest2[] = { 0x0F, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x08, 0x00, 0x03, 0x02, 0x00, 0x08, 0x00, 0x03, 0x04, 0x00, 0x08, 0x00, 0x03, 0x00, 0x00, 0x10, 0x00, 0x03, 0x02, 0x00, 0x10, 0x00, 0x03, 0x04, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x03, 0x02, 0x00, 0x18, 0x00, 0x03, 0x04, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0x20, 0x00, 0x03, 0x02, 0x00, 0x20, 0x00, 0x03, 0x04, 0x00, 0x20, 0x00, 0x03, }; const unsigned char patternTest3[] = { 0x09, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x20, 0x00, 0x04, 0x03, 0x00, 0x20, 0x00, 0x04, 0x04, 0x00, 0x20, 0x00, 0x04, 0x04, 0x00, 0x40, 0x00, 0x04, 0x05, 0x00, 0x40, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, 0x04, }; const unsigned char patternTest4[] = { 0x0E, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x65, 0x03, 0x00, 0x00, 0x00, 0x65, 0x01, 0x00, 0x10, 0x00, 0x02, 0x04, 0x00, 0x10, 0x00, 0x02, 0x02, 0x00, 0x20, 0x00, 0x02, 0x05, 0x00, 0x20, 0x00, 0x02, 0x01, 0x00, 0x30, 0x00, 0x02, 0x04, 0x00, 0x30, 0x00, 0x02, 0x02, 0x00, 0x40, 0x00, 0x02, 0x05, 0x00, 0x40, 0x00, 0x02, 0x01, 0x00, 0x50, 0x00, 0x02, 0x04, 0x00, 0x50, 0x00, 0x02, 0x02, 0x00, 0x60, 0x00, 0x05, 0x05, 0x00, 0x60, 0x00, 0x05 }; const unsigned char patternTest5[] = { 0x04, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x05, 0x02, 0x00, 0x00, 0x00, 0x05, 0x03, 0x00, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00, 0x00, 0x05 }; const unsigned char patternTest6[] = { 0x09, 0x00, 0x40, 0x00, 0x00, 0x10, 0x00, 0x03, 0x02, 0x00, 0x10, 0x00, 0x03, 0x04, 0x00, 0x10, 0x00, 0x03, 0x01, 0x00, 0x20, 0x00, 0x03, 0x03, 0x00, 0x20, 0x00, 0x03, 0x05, 0x00, 0x20, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x03, 0x02, 0x00, 0x30, 0x00, 0x03, 0x04, 0x00, 0x30, 0x00, 0x03 }; const unsigned char patternTest7[] = { 0x0C, 0x00, 0x70, 0x01, 0x00, 0x00, 0x00, 0x11, 0x02, 0x00, 0x10, 0x00, 0x11, 0x03, 0x00, 0x20, 0x00, 0x11, 0x04, 0x00, 0x30, 0x00, 0x11, 0x05, 0x00, 0x45, 0x00, 0x11, 0x00, 0x00, 0x50, 0x00, 0x11, 0x04, 0x00, 0x00, 0x00, 0x11, 0x05, 0x00, 0x10, 0x00, 0x11, 0x00, 0x00, 0x20, 0x00, 0x11, 0x01, 0x00, 0x30, 0x00, 0x11, 0x02, 0x00, 0x40, 0x00, 0x11, 0x03, 0x00, 0x50, 0x00, 0x11, }; void init_game(Game_Data *data) { //TODO: init the level depending on the value of data->current_entry data->level = NULL; data->level = malloc(sizeof(Level)); if(data->level == NULL) return; data->level->id = 1; data->level->patterns = malloc(7*sizeof(Pattern)); readPattern(&data->level->patterns[0], patternTest1); readPattern(&data->level->patterns[1], patternTest2); readPattern(&data->level->patterns[2], patternTest3); readPattern(&data->level->patterns[3], patternTest4); readPattern(&data->level->patterns[4], patternTest5); readPattern(&data->level->patterns[5], patternTest6); 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; data->level->cam_max_speed = 5; data->level->cam_min_speed = 1; data->level->fast_spin_probability = 0.1; data->level->lc_min_score = 20; data->level->lc_probability = 0.05; data->level->lc_duration = 15; data->are_colors_reversed = 0; data->list = NULL; data->start_time = RTC_GetTicks(); // 1 tick == 1/128 second data->last_time = 0; data->current_time = RTC_GetTicks(); data->chrono_time = 0; data->player_angle = 0; data->cam.cX = 64; data->cam.cY = 32; data->cam.angle = 0; data->cam.speed = 1.5; data->cam.zoom = 0.0; data->nb_lines = 6; data->line_transition.counter = 0; data->line_transition.counter_start = 0; 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 data->last_time = 0; data->current_time = RTC_GetTicks(); 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->cam.cX = 64; data->cam.cY = 70; data->cam.angle = 0; data->cam.speed = 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->keypress_delay = 50; 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) { data->cam.cX = 96; data->cam.cY = 32; data->cam.angle = 0; data->cam.speed = 1; data->cam.zoom = 12; data->nb_lines = 6; data->line_transition.counter = 0; data->line_transition.counter_start = 0; data->line_transition.delta_nb_lines = 0; }