From dbfe99632e0d74bfcf4656b35ed756763b2cc425 Mon Sep 17 00:00:00 2001 From: Shadow15510 Date: Sat, 5 Jun 2021 13:15:27 +0200 Subject: [PATCH] Add a time boost and some fix on mutations --- Plague.g1a | Bin 69612 -> 69676 bytes README.md | 1 + src/core.c | 13 +++++++++---- src/core.h | 6 +++--- src/data.c | 4 ++-- src/display_engine.c | 2 +- src/epidemic_engine.c | 4 ++-- src/main.c | 7 ++++--- src/mutation_engine.h | 2 +- 9 files changed, 23 insertions(+), 16 deletions(-) diff --git a/Plague.g1a b/Plague.g1a index 779e45870a8bd84aad27c0eed6ba304ed683c4d3..39d689d1df594ad311d9cfbd6cfd9f2f2e28c284 100644 GIT binary patch delta 6260 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 YjcPCs#x%h^O&Y}Mmc^V_FUO<*3zDMxFaQ7m delta 6170 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 mbJy2Jboost) limit_tick = floor(LIMIT_TICK / 10); + current_game->time += ENGINE_TICK; current_game->total_time += ENGINE_TICK; - if (current_game->time > LIMIT_TICK) + if (current_game->time > limit_tick) { // Reset internal clock current_game->time = 0; @@ -70,7 +73,8 @@ int next_frame(struct game *current_game) // Check the end of the game if (!current_game->humans[1]) { - if (current_game->humans[0]) message("VOUS AVEZ PERDU."); + + if (current_game->humans[0] || current_game->humans[3] < current_game->humans[2]) message("VOUS AVEZ PERDU."); else message("VOUS AVEZ GAGNE !"); return 0; } @@ -79,10 +83,11 @@ int next_frame(struct game *current_game) } -int get_inputs(const int background, int *mutation_menu) +int get_inputs(const int background, int *mutation_menu, int *boost) { int key = rtc_key(); + if (key == KEY_ARROW) *boost = (*boost + 1) % 2; if (key == KEY_OPTN && (background == 1 || background == 2)) return (background % 2) + 1; if (key == KEY_VARS) { @@ -98,7 +103,7 @@ int get_inputs(const int background, int *mutation_menu) if (key == KEY_ALPHA) { if (background == 5) return 3; - if (background != 1 && background != 2) return 1; + else return 1; } if (key == KEY_EXIT && (background == 1 || background == 2)) return -1; diff --git a/src/core.h b/src/core.h index cb46e65..a1de721 100644 --- a/src/core.h +++ b/src/core.h @@ -47,8 +47,8 @@ struct game // Humans stats : healthy, infected, dead, healed int humans[4]; - // Time - int time, total_time; + // Time and boost (10 times faster) + int time, total_time, boost; // Planes struct plane *planes[NB_PLANES + 1]; @@ -87,7 +87,7 @@ struct cursor }; // get_inputs : detect and manage inputs -int get_inputs(const int background, int *mutation_menu); +int get_inputs(const int background, int *mutation_menu, int *boost); // next_frame : compute the plane's positions int next_frame(struct game *current_game); diff --git a/src/data.c b/src/data.c index ce19a94..89806a2 100644 --- a/src/data.c +++ b/src/data.c @@ -34,7 +34,7 @@ const struct mutation abilities_data[6] = const struct mutation transmissions_data[13] = { - { 5, 0, 0, 9, 0, "AIR 1", "TRANSMISSION PAR L'AIR"}, + { 5, 0, 0, 5, 0, "AIR 1", "TRANSMISSION PAR L'AIR"}, {10, 10, 0, 15, 0, "AIR 2", "TRANSMISSION PAR L'AIR"}, {20, 10, 0, 20, 0, "AIR 3", "TRANSMISSION PAR L'AIR"}, {40, 15, 0, 30, 0, "AEROSOL", "TRANSMISSION PAR L'AIR ET PAR L'EAU"}, @@ -44,7 +44,7 @@ const struct mutation transmissions_data[13] = {40, 10, 0, 25, 0, "ANIMAL 2", "CAPACITE DE TRANSMISSION HOMME-ANIMAL"}, {20, 0, 0, 15, 0, "OISEAU 1", "LES OISEAUX TRANSMETTENT LE VIRUS"}, {40, 10, 0, 25, 0, "OISEAU 2", "LES OISEAUX TRANSMETTENT LE VIRUS"}, - {10, 0, 0, 8, 0, "SANG 1", "LE VIRUS SE TRANSMET PAR LE SANG"}, + {10, 0, 0, 10, 0, "SANG 1", "LE VIRUS SE TRANSMET PAR LE SANG"}, {20, 10, 0, 15, 0, "SANG 2", "LE VIRUS SE TRANSMET PAR LE SANG"}, {40, 15, 0, 25, 0, "SANG 3", "LE VIRUS SE TRANSMET PAR LE SANG"}, }; diff --git a/src/display_engine.c b/src/display_engine.c index 6821d0e..12b7978 100644 --- a/src/display_engine.c +++ b/src/display_engine.c @@ -58,7 +58,7 @@ void display_foreground(const int background, const struct game *current_game, c } // Status bottom bar - int length = 74 * current_game->research / current_game->limit; + int length = 73 * current_game->research / current_game->limit; dprint(9, 58, C_BLACK, "%d", current_game->dna); dline(51, 60, 51 + length, 60, C_BLACK); diff --git a/src/epidemic_engine.c b/src/epidemic_engine.c index aa45cc8..e3762ea 100644 --- a/src/epidemic_engine.c +++ b/src/epidemic_engine.c @@ -41,8 +41,8 @@ void epidemic_simulation(struct game *current_game) uint8_t *current_grid = calloc(current_game->grid.width * current_game->grid.height, sizeof(uint8_t)); init_tab(current_game->grid.width * current_game->grid.height, current_grid, current_game->grid.data); - int healed_rate = floor((100 * current_game->research / current_game->limit)); - if (!bernoulli(healed_rate)) healed_rate = 0; + int healed_rate = 0; + if (current_game->research == current_game->limit) healed_rate = rand() % 26; // Make the epidemic grid evolove for (int i = 0; i < current_game->grid.width; i ++) diff --git a/src/main.c b/src/main.c index 383ac60..59cfc0e 100644 --- a/src/main.c +++ b/src/main.c @@ -1,6 +1,6 @@ /* Project name ......: Plague - Version ...........: 1.3.1 + Version ...........: 1.3.2 Last modification .: 4 June 2021 code and assets provided with licence : @@ -59,7 +59,7 @@ int main(void) .priority = 0, .humans = {0, 1, 0, 0}, - .time = 0, .total_time = 0, + .time = 0, .total_time = 0, .boost = 0, .planes = {&plane_1, &plane_2, &plane_3, &plane_4, &plane_5, NULL}, @@ -152,9 +152,10 @@ int main_loop(struct game *current_game) // Compute the motion of planes, DNA points and infectious model to_save = next_frame(current_game); + if (!to_save) end = 1; // Get inputs from the keyboard and manage it - background = get_inputs(background, &mutation_menu); + background = get_inputs(background, &mutation_menu, ¤t_game->boost); // Special actions : quit and manage mutations if (background == -1) end = 1; diff --git a/src/mutation_engine.h b/src/mutation_engine.h index 8b2ec28..8a5d8da 100644 --- a/src/mutation_engine.h +++ b/src/mutation_engine.h @@ -5,7 +5,7 @@ #include "display_engine.h" // Basic limit research -#define RESEARCH_LIMIT 300 +#define RESEARCH_LIMIT 250 // mutation_table : contain the map of the mutation available struct mutation_table