| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- #include "update_states.h"
- void update_title(Game_Data *data)
- {
- data->last_time = data->current_time;
- data->current_time = RTC_GetTicks();
- updateCamera(&(data->cam), data->current_time - data->last_time);
- if(KeyDown(K_EXE))
- switch_to_state(MENU, data);
- }
- void update_game(Game_Data *data)
- {
- data->last_time = data->current_time;
- data->current_time = RTC_GetTicks();
- if(data->list != NULL){ //if the linked list is not empty
- updateWalls(data->list, data->current_time - data->last_time); //update the linked list
- if(isColliding(data->list, data->player_angle, data->nb_lines) == true){ //if the player and a wall collide
- PrintMini(50, 0, "TOUCHE", MINI_OVER); //death handling
- }
- data->list = removeWall(data->list, 0); //remove every wall whose distance to the center equals zero
- }
- //level generation
- //TODO: something else than pure randomness
- if(rand() % 40 == 1){
- data->list = addWall(data->list, 128, 8, 1, rand()%6);
- }else if(rand() % 70 == 1){
- int emptyRow = rand()%6;
- int i = 0;
- for(i = 0; i < 6; i++)
- if(i != emptyRow)
- data->list = addWall(data->list, 128, 15, 1, i);
- }
- if(KeyDown(K_LEFT)){
- data->player_angle-=15;
- }
- if(KeyDown(K_RIGHT)){
- data->player_angle+=15;
- }
- if(KeyDown(K_PLUS) && data->line_transition.counter == 0)
- {
- data->line_transition.counter = 10;
- data->line_transition.counter_start = 10;
- data->line_transition.delta_nb_lines = 1;
- }else if(KeyDown(K_MINUS) && data->line_transition.counter == 0){
- data->line_transition.counter = 10;
- data->line_transition.counter_start = 10;
- data->line_transition.delta_nb_lines = -1;
- }
- if(data->line_transition.counter != 0){
- data->line_transition.counter --;
- if(data->line_transition.counter <= 0){
- data->nb_lines += data->line_transition.delta_nb_lines;
- data->line_transition.counter_start = 0;
- data->line_transition.delta_nb_lines = 0;
- }
- }
- if(data->player_angle < 0)
- data->player_angle = 360 + data->player_angle;
- data->player_angle = data->player_angle % 360;
- updateCamera(&(data->cam), data->current_time - data->last_time);
- }
- void update_menu(Game_Data *data)
- {
- //TODO
- }
- void update_game_over(Game_Data *data)
- {
- //TODO
- }
- void updateCamera(Camera *cam, unsigned int delta_time){
- cam->speed = 1; //to change
- cam->angle += cam->speed * delta_time / 2.;
- if(cam->angle >= 360)
- cam->angle = cam->angle % 360;
- }
|