diff --git a/Makefile b/Makefile index cc19656..89799d7 100644 --- a/Makefile +++ b/Makefile @@ -33,6 +33,7 @@ SRC = src/main.c \ src/event/menu_event.c \ \ src/fight/launch_fight.c \ + src/fight/detect_fight.c \ src/fight/create_fight.c \ src/fight/fight.c \ src/fight/corrupt_map.c \ diff --git a/include/prototype.h b/include/prototype.h index 76ee4b3..103cb57 100644 --- a/include/prototype.h +++ b/include/prototype.h @@ -61,6 +61,7 @@ fight_t *create_fight(void); int destroy_fight(fight_t *fight); + int detect_fight(app_t *app); int corrupt_map(app_t *app); int trapped_tile(app_t *app); int fight(app_t *app); diff --git a/maps/Maze/map_2.csv b/maps/Maze/map_2.csv index 782ce1e..0972f29 100644 --- a/maps/Maze/map_2.csv +++ b/maps/Maze/map_2.csv @@ -1,31 +1,31 @@ 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20 -20,67,20,-1,-1,-1,20,-1,-1,-1,20,-1,-1,-1,20,-1,20,-1,20,-1,-1,-1,20,-1,-1,-1,20,-1,20,-1,20 -20,-1,20,-1,20,-1,20,-1,20,20,20,-1,20,-1,20,-1,20,-1,20,-1,20,20,20,-1,20,20,20,-1,20,-1,20 -20,-1,-1,-1,20,-1,-1,-1,-1,-1,-1,-1,20,-1,-1,-1,-1,-1,20,-1,-1,-1,20,-1,-1,-1,20,-1,20,-1,20 -20,-1,20,-1,20,-1,20,-1,20,20,20,20,20,20,20,-1,20,20,20,20,20,-1,20,20,20,-1,20,-1,20,-1,20 -20,-1,20,-1,20,-1,20,-1,-1,-1,-1,-1,-1,-1,20,-1,20,-1,20,-1,-1,-1,20,-1,20,-1,-1,-1,-1,-1,20 -20,20,20,20,20,-1,20,20,20,20,20,20,20,-1,20,-1,20,-1,20,20,20,-1,20,-1,20,-1,20,20,20,-1,20 -20,-1,-1,-1,20,-1,-1,-1,20,-1,-1,-1,-1,-1,20,-1,20,-1,-1,-1,-1,-1,-1,-1,-1,-1,20,-1,20,-1,20 -20,-1,20,20,20,20,20,20,20,-1,20,-1,20,20,20,-1,20,-1,20,-1,20,20,20,-1,20,-1,20,-1,20,20,20 -20,-1,-1,-1,-1,-1,20,-1,-1,-1,20,-1,-1,-1,20,-1,20,-1,20,-1,20,-1,20,-1,20,-1,-1,-1,20,-1,20 -20,-1,20,20,20,20,20,20,20,20,20,20,20,-1,20,20,20,-1,20,-1,20,-1,20,20,20,20,20,-1,20,-1,20 -20,-1,20,-1,-1,-1,20,-1,-1,-1,-1,-1,20,-1,-1,-1,-1,-1,20,-1,-1,-1,20,-1,20,-1,-1,-1,-1,-1,20 -20,-1,20,-1,20,20,20,-1,20,-1,20,20,20,20,20,20,20,20,20,-1,20,20,20,-1,20,20,20,20,20,-1,20 -20,-1,-1,-1,-1,-1,-1,-1,20,-1,-1,-1,20,-1,20,-1,-1,-1,20,-1,-1,-1,-1,-1,-1,-1,20,-1,20,-1,20 -20,20,20,20,20,20,20,20,20,-1,20,20,20,-1,20,-1,20,-1,20,20,20,-1,20,20,20,-1,20,-1,20,-1,20 -20,-1,20,-1,20,-1,20,-1,-1,-1,-1,-1,-1,-1,20,-1,20,-1,-1,-1,-1,-1,20,-1,20,-1,20,-1,-1,-1,20 -20,-1,20,-1,20,-1,20,20,20,-1,20,-1,20,20,20,-1,20,20,20,20,20,20,20,-1,20,20,20,20,20,-1,20 -20,-1,-1,-1,20,-1,-1,-1,-1,-1,20,-1,-1,-1,20,-1,-1,-1,-1,-1,20,-1,-1,-1,20,-1,-1,-1,-1,-1,20 -20,-1,20,-1,20,-1,20,20,20,20,20,20,20,-1,20,20,20,20,20,-1,20,20,20,-1,20,20,20,-1,20,20,20 -20,-1,20,-1,20,-1,-1,-1,-1,-1,20,-1,-1,-1,20,-1,-1,-1,-1,-1,-1,-1,-1,-1,20,-1,20,-1,-1,-1,20 -20,20,20,-1,20,-1,20,20,20,20,20,-1,20,20,20,20,20,-1,20,-1,20,20,20,-1,20,-1,20,-1,20,20,20 -20,-1,20,-1,-1,-1,-1,-1,20,-1,20,-1,-1,-1,-1,-1,-1,-1,20,-1,20,-1,20,-1,20,-1,20,-1,-1,-1,20 -20,-1,20,-1,20,20,20,-1,20,-1,20,20,20,20,20,-1,20,-1,20,-1,20,-1,20,20,20,-1,20,-1,20,-1,20 -20,-1,20,-1,20,-1,20,-1,-1,-1,-1,-1,-1,-1,20,-1,20,-1,20,-1,-1,-1,20,-1,-1,-1,20,-1,20,-1,20 -20,-1,20,20,20,-1,20,20,20,-1,20,-1,20,-1,20,20,20,20,20,20,20,20,20,-1,20,20,20,20,20,-1,20 -20,-1,-1,-1,-1,-1,20,-1,-1,-1,20,-1,20,-1,-1,-1,20,-1,-1,-1,-1,-1,-1,-1,-1,-1,20,-1,-1,-1,20 -20,20,20,20,20,-1,20,-1,20,-1,20,20,20,20,20,20,20,-1,20,-1,20,20,20,20,20,-1,20,-1,20,20,20 -20,-1,-1,-1,20,-1,-1,-1,20,-1,20,-1,20,-1,20,-1,-1,-1,20,-1,20,-1,-1,-1,-1,-1,-1,-1,-1,-1,20 -20,-1,20,-1,20,-1,20,20,20,-1,20,-1,20,-1,20,-1,20,-1,20,20,20,-1,20,20,20,-1,20,-1,20,20,20 -20,-1,20,-1,-1,-1,20,-1,-1,-1,-1,-1,20,-1,-1,-1,20,-1,-1,-1,20,-1,20,-1,-1,-1,20,-1,-1,-1,20 +20,67,20,-1,-1,-1,-1,-1,-1,-1,-1,-1,20,-1,20,-1,-1,-1,20,-1,-1,-1,-1,-1,20,-1,-1,-1,-1,-1,20 +20,-1,20,-1,20,20,20,20,20,20,20,-1,20,-1,20,-1,20,20,20,20,20,-1,20,20,20,20,20,-1,20,-1,20 +20,-1,20,-1,-1,-1,-1,-1,-1,-1,20,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,20,-1,20 +20,-1,20,-1,20,20,20,20,20,20,20,-1,20,-1,20,-1,20,20,20,-1,20,20,20,20,20,20,20,20,20,-1,20 +20,-1,-1,-1,20,-1,20,-1,-1,-1,-1,-1,20,-1,20,-1,20,-1,-1,-1,-1,-1,-1,-1,-1,-1,20,-1,-1,-1,20 +20,20,20,20,20,-1,20,20,20,20,20,20,20,20,20,20,20,20,20,-1,20,20,20,-1,20,20,20,20,20,-1,20 +20,-1,-1,-1,-1,-1,-1,-1,20,-1,20,-1,-1,-1,20,-1,-1,-1,-1,-1,-1,-1,20,-1,20,-1,-1,-1,-1,-1,20 +20,-1,20,-1,20,20,20,-1,20,-1,20,-1,20,20,20,-1,20,20,20,20,20,20,20,-1,20,-1,20,-1,20,20,20 +20,-1,20,-1,20,-1,-1,-1,-1,-1,20,-1,-1,-1,-1,-1,-1,-1,-1,-1,20,-1,-1,-1,20,-1,20,-1,20,-1,20 +20,-1,20,-1,20,-1,20,-1,20,-1,20,-1,20,20,20,20,20,20,20,-1,20,-1,20,20,20,20,20,-1,20,-1,20 +20,-1,20,-1,20,-1,20,-1,20,-1,20,-1,20,-1,-1,-1,-1,-1,-1,-1,20,-1,-1,-1,20,-1,-1,-1,20,-1,20 +20,-1,20,20,20,-1,20,-1,20,20,20,20,20,20,20,-1,20,20,20,20,20,-1,20,-1,20,20,20,20,20,-1,20 +20,-1,20,-1,20,-1,20,-1,20,-1,-1,-1,20,-1,20,-1,20,-1,-1,-1,20,-1,20,-1,20,-1,-1,-1,-1,-1,20 +20,20,20,-1,20,-1,20,-1,20,-1,20,-1,20,-1,20,20,20,20,20,-1,20,20,20,-1,20,20,20,-1,20,20,20 +20,-1,-1,-1,20,-1,20,-1,20,-1,20,-1,20,-1,20,-1,-1,-1,-1,-1,20,-1,-1,-1,-1,-1,-1,-1,-1,-1,20 +20,-1,20,-1,20,20,20,-1,20,-1,20,20,20,-1,20,-1,20,20,20,-1,20,-1,20,-1,20,20,20,20,20,20,20 +20,-1,20,-1,-1,-1,20,-1,-1,-1,-1,-1,20,-1,20,-1,-1,-1,20,-1,20,-1,20,-1,-1,-1,-1,-1,20,-1,20 +20,-1,20,20,20,20,20,-1,20,20,20,20,20,-1,20,-1,20,20,20,-1,20,20,20,-1,20,20,20,20,20,-1,20 +20,-1,20,-1,-1,-1,20,-1,20,-1,20,-1,-1,-1,-1,-1,-1,-1,20,-1,20,-1,-1,-1,-1,-1,-1,-1,-1,-1,20 +20,-1,20,-1,20,-1,20,-1,20,-1,20,20,20,-1,20,20,20,-1,20,-1,20,-1,20,-1,20,20,20,20,20,20,20 +20,-1,20,-1,20,-1,-1,-1,-1,-1,20,-1,-1,-1,-1,-1,20,-1,20,-1,-1,-1,20,-1,-1,-1,20,-1,20,-1,20 +20,-1,20,20,20,20,20,-1,20,-1,20,-1,20,-1,20,-1,20,20,20,-1,20,20,20,20,20,20,20,-1,20,-1,20 +20,-1,-1,-1,-1,-1,-1,-1,20,-1,20,-1,20,-1,20,-1,20,-1,20,-1,-1,-1,-1,-1,20,-1,-1,-1,20,-1,20 +20,20,20,-1,20,-1,20,-1,20,20,20,20,20,-1,20,20,20,-1,20,20,20,-1,20,-1,20,20,20,-1,20,-1,20 +20,-1,-1,-1,20,-1,20,-1,20,-1,-1,-1,-1,-1,20,-1,20,-1,20,-1,-1,-1,20,-1,20,-1,20,-1,20,-1,20 +20,-1,20,-1,20,-1,20,20,20,-1,20,20,20,20,20,-1,20,-1,20,20,20,-1,20,-1,20,-1,20,-1,20,-1,20 +20,-1,20,-1,20,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,20,-1,20,-1,-1,-1,-1,-1,-1,-1,20 +20,-1,20,-1,20,-1,20,20,20,20,20,-1,20,-1,20,20,20,20,20,20,20,-1,20,-1,20,-1,20,20,20,20,20 +20,-1,20,-1,20,-1,-1,-1,20,-1,-1,-1,20,-1,-1,-1,20,-1,-1,-1,-1,-1,20,-1,20,-1,-1,-1,-1,-1,20 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,-1,66 diff --git a/src/event/main_event.c b/src/event/main_event.c index 0ed2856..b739abd 100644 --- a/src/event/main_event.c +++ b/src/event/main_event.c @@ -28,6 +28,10 @@ static int manage_keys(app_t *app, sfKeyCode code) app->fps->key_f = 1 - app->fps->key_f; if (app->menu->state == game && code == sfKeyG) app->fight->is_fighting = 1 - app->fight->is_fighting; + if (app->menu->state == game && code == sfKeyE) { + detect_dialogue(app); + detect_fight(app); + } if (app->menu->state == game && code == sfKeyH && app->maps->selected_map != app->maps->map[0]) change_map(app, 1); @@ -41,10 +45,6 @@ static int detect_event(app_t *app, sfEvent event) if (app->menu->state == splash && (event.type == sfEvtKeyPressed || event.type == sfEvtMouseButtonReleased)) skip_splash_screen(app); - if (app->menu->state == game && event.type == sfEvtKeyPressed && - event.key.code == sfKeyE) { - detect_dialogue(app); - } menu_event(app, event); detect_escape(app, event); if (event.type == sfEvtKeyPressed) diff --git a/src/fight/detect_fight.c b/src/fight/detect_fight.c new file mode 100644 index 0000000..c330f26 --- /dev/null +++ b/src/fight/detect_fight.c @@ -0,0 +1,45 @@ +/* +** EPITECH PROJECT, 2023 +** B-MUL-200-LYN-2-1-myrpg-mathieu.borel +** File description: +** detect_dialogue.c +*/ + +#include "../../include/prototype.h" + +static int detect_fight_tile(app_t *app, tile_t *tile, float hypo) +{ + if (tile->state == ENEMY && hypo < 5) + launch_fight(app); + return 0; +} + +static int detect_fight_layer(app_t *app, layer_t *layer) +{ + sfVector2i position = {0, 0}; + entity_t *player = app->player; + while (layer->layer[position.y] != NULL) { + position.x = 0; + while (layer->layer[position.y][position.x] != NULL) { + tile_t *tile = layer->layer[position.y][position.x]; + float dx = pow(player->position.x - tile->position.x, 2); + float dy = pow(player->position.y - tile->position.y, 2); + float hypo = sqrt(dx + dy); + detect_fight_tile(app, tile, hypo); + position.x += 1; + } + position.y += 1; + } + return 0; +} + +int detect_fight(app_t *app) +{ + map_t *map = app->maps->selected_map; + int i = 0; + while (map->layer[i] != NULL) { + detect_fight_layer(app, map->layer[i]); + i += 1; + } + return 0; +} diff --git a/src/fight/fight.c b/src/fight/fight.c index 2748137..3a9b662 100644 --- a/src/fight/fight.c +++ b/src/fight/fight.c @@ -11,8 +11,7 @@ int fight(app_t *app) { corrupt_map(app); sfTime time = sfClock_getElapsedTime(app->fight->clock); - if (app->fight->is_fighting == 0) - return 0; + stop_fight(app); if (app->fight->fight_tick == 0 && time.microseconds >= 1000000) { app->fight->fight_tick = 1; trapped_tile(app); @@ -23,9 +22,9 @@ int fight(app_t *app) app->fight->fight_tick = 0; kill_player(app); restore_tile(app); + app->fight->no_round -= 1; sfClock_restart(app->fight->clock); return 0; } - stop_fight(app); return 0; } diff --git a/src/fight/kill_player.c b/src/fight/kill_player.c index a9bf0be..6387f94 100644 --- a/src/fight/kill_player.c +++ b/src/fight/kill_player.c @@ -11,10 +11,11 @@ int kill_player(app_t *app) { int x = app->player->position.x; int y = app->player->position.y; - app->fight->no_round = 10; map_t *map = app->maps->selected_map; tile_t *ptile = map->layer[app->player->layer - 1]->layer[y + 1][x + 1]; - if (ptile->is_trapped == 1) + if (ptile->is_trapped == 1) { + app->fight->no_round = 10; change_map(app, 3); + } return 0; } diff --git a/src/fight/launch_fight.c b/src/fight/launch_fight.c index 7d95fa5..ebe974a 100644 --- a/src/fight/launch_fight.c +++ b/src/fight/launch_fight.c @@ -9,9 +9,10 @@ int stop_fight(app_t *app) { + printf("%d\n", app->fight->no_round); if (app->fight->no_round == 0) { change_map_by_map(app, app->maps->old_map); - app->fight->is_fighting = 1; + app->fight->is_fighting = 0; } return 0; } diff --git a/src/gloop.c b/src/gloop.c index add4f16..fa7f5d4 100644 --- a/src/gloop.c +++ b/src/gloop.c @@ -35,7 +35,8 @@ int gloop(app_t *app) display_map(app->window, app->maps->selected_map, app->player); if (app->fps->key_f == 1 && app->menu->state == game) show_fps(app); - fight(app); + if (app->fight->is_fighting == 1) + fight(app); center_view(app->view, app->player); return 0; }