update_states.c 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #include "update_states.h"
  2. void update_title(Game_Data *data)
  3. {
  4. //TODO
  5. }
  6. void update_game(Game_Data *data)
  7. {
  8. data->last_time = data->current_time;
  9. data->current_time = RTC_GetTicks();
  10. if(data->list != NULL){ //if the linked list is not empty
  11. updateWalls(data->list, data->current_time - data->last_time); //update the linked list
  12. if(isColliding(data->list, data->player_angle, data->nb_lines) == true){ //if the player and a wall collide
  13. PrintMini(50, 0, "TOUCHE", MINI_OVER); //death handling
  14. }
  15. data->list = removeWall(data->list, 0); //remove every wall whose distance to the center equals zero
  16. }
  17. //level generation
  18. //TODO: something else than pure randomness
  19. if(rand() % 40 == 1){
  20. data->list = addWall(data->list, 128, 8, 1, rand()%6);
  21. }else if(rand() % 70 == 1){
  22. int emptyRow = rand()%6;
  23. int i = 0;
  24. for(i = 0; i < 6; i++)
  25. if(i != emptyRow)
  26. data->list = addWall(data->list, 128, 15, 1, i);
  27. }
  28. if(KeyDown(K_LEFT)){
  29. data->player_angle-=15;
  30. }
  31. if(KeyDown(K_RIGHT)){
  32. data->player_angle+=15;
  33. }
  34. //the angle must not be greater than 360
  35. if(data->player_angle < 0)
  36. data->player_angle = 360 + data->player_angle;
  37. data->player_angle = data->player_angle % 360;
  38. updateCamera(&(data->cam), data->current_time - data->last_time);
  39. }
  40. void update_menu(Game_Data *data)
  41. {
  42. //TODO
  43. }
  44. void update_game_over(Game_Data *data)
  45. {
  46. //TODO
  47. }
  48. void updateCamera(Camera *cam, unsigned int delta_time){
  49. cam->speed = 1; //to change
  50. cam->angle += cam->speed * delta_time / 2.;
  51. if(cam->angle >= 360)
  52. cam->angle = cam->angle % 360;
  53. }