init_states.c 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. #include "init_states.h"
  2. void init_pattern_wall(int *buffer, int w1, int w2, int w3, int w4, int w5, int w6)
  3. {
  4. buffer[0] = w1;
  5. buffer[1] = w2;
  6. buffer[2] = w3;
  7. buffer[3] = w4;
  8. buffer[4] = w5;
  9. buffer[5] = w6;
  10. }
  11. void init_patterns(Game_Data *data)
  12. {
  13. int i = 0;
  14. Pattern *current_pattern;
  15. do{
  16. current_pattern = &(data->patterns[i]);
  17. switch(i)
  18. {
  19. case PATTERN1:
  20. current_pattern->num_stages = 6;
  21. current_pattern->stages = NULL;
  22. current_pattern->stages = malloc(sizeof(Pattern_Stage));
  23. if(current_pattern->stages == NULL)
  24. return;
  25. init_pattern_wall(current_pattern->stages[0].walls, 0, 0, 1, 0, 0, 1);
  26. init_pattern_wall(current_pattern->stages[0].walls, 1, 0, 0, 1, 0, 0);
  27. init_pattern_wall(current_pattern->stages[0].walls, 0, 1, 0, 0, 1, 0);
  28. init_pattern_wall(current_pattern->stages[0].walls, 0, 0, 1, 0, 0, 1);
  29. init_pattern_wall(current_pattern->stages[0].walls, 1, 0, 0, 1, 0, 0);
  30. init_pattern_wall(current_pattern->stages[0].walls, 0, 1, 0, 0, 1, 0);
  31. current_pattern->prob = 0.5;
  32. break;
  33. case PATTERN2:
  34. break;
  35. case PATTERN3:
  36. break;
  37. }
  38. }while(i != END_PATTERNS)
  39. }
  40. void init_game(Game_Data *data)
  41. {
  42. //TODO: init the level depending on the value of data->current_entry
  43. data->level = NULL;
  44. data->level = malloc(sizeof(Level));
  45. if(data->level == NULL)
  46. return;
  47. data->level->nb_patterns = 3;
  48. data->level->cam_change_interval = 5;
  49. data->level->cam_change_precision = 1;
  50. data->level->cam_change_probability = 0.75;
  51. data->level->cam_max_speed = 5;
  52. data->level->cam_min_speed = 1;
  53. data->level->fast_spin_probability = 0.1;
  54. data->level->lc_min_score = 20;
  55. data->level->lc_probability = 0.05;
  56. data->level->lc_duration = 15;
  57. data->list = NULL;
  58. data->start_time = RTC_GetTicks(); //1 tick == 1/128 second
  59. data->last_time = 0;
  60. data->current_time = RTC_GetTicks();
  61. data->player_angle = 0;
  62. data->cam.cX = 64;
  63. data->cam.cY = 32;
  64. data->cam.angle = 0;
  65. data->cam.speed = 0.0;
  66. data->nb_lines = 6;
  67. data->line_transition.counter = 0;
  68. data->line_transition.counter_start = 0;
  69. data->line_transition.delta_nb_lines = 0;
  70. }
  71. void init_title(Game_Data *data)
  72. {
  73. data->cam.cX = 64;
  74. data->cam.cY = 75;
  75. data->cam.angle = 0;
  76. data->cam.speed = 1.0;
  77. data->nb_lines = 6;
  78. data->line_transition.counter = 0;
  79. data->line_transition.counter_start = 0;
  80. data->line_transition.delta_nb_lines = 0;
  81. }
  82. void load_difficulty_names(char **str_list)
  83. {
  84. char c_1[] = "Hard";
  85. char c_2[] = "Harder";
  86. char c_3[] = "Hardest";
  87. char c_4[] = "Hardester";
  88. char c_5[] = "Hardestest";
  89. char c_6[] = "Hardestestest";
  90. int i = 0;
  91. int j = 0;
  92. for(i = 0; i < 6; i++)
  93. {
  94. str_list[i] = NULL;
  95. str_list[i] = malloc(sizeof(char) * 24);
  96. if(str_list[i] == NULL)
  97. return;
  98. for(j = 0; j < 24; str_list[i][j] = 0, j++);
  99. }
  100. memcpy(str_list[0], c_1, sizeof(char) * strlen(c_1));
  101. memcpy(str_list[1], c_2, sizeof(char) * strlen(c_2));
  102. memcpy(str_list[2], c_3, sizeof(char) * strlen(c_3));
  103. memcpy(str_list[3], c_4, sizeof(char) * strlen(c_4));
  104. memcpy(str_list[4], c_5, sizeof(char) * strlen(c_5));
  105. memcpy(str_list[5], c_6, sizeof(char) * strlen(c_6));
  106. }
  107. void init_menu(Game_Data *data)
  108. {
  109. data->keypress_delay = 50;
  110. data->nb_entries = 6;
  111. data->current_entry = 1;
  112. data->current_entry_high_score = 0; //to load from a save file
  113. data->entry_difficulties = NULL;
  114. data->entry_difficulties = malloc(sizeof(char*) * 6);
  115. if(data->entry_difficulties == NULL)
  116. return;
  117. load_difficulty_names(data->entry_difficulties);
  118. }
  119. void init_game_over(Game_Data *data)
  120. {
  121. }
  122. void init_patterns(Game_Data *data)
  123. {
  124. }