From cf70e26dd8ced19ce35db0900f62f4daeb33a32d Mon Sep 17 00:00:00 2001 From: Shadow15510 Date: Sun, 6 Jun 2021 18:05:30 +0200 Subject: [PATCH] Change cursor blinking and display messages on research --- Plague.g1a | Bin 69116 -> 69236 bytes src/core.c | 10 ++++++---- src/core.h | 4 ++-- src/display_engine.c | 4 +--- src/main.c | 7 +++++-- src/mutation_engine.c | 4 +++- 6 files changed, 17 insertions(+), 12 deletions(-) diff --git a/Plague.g1a b/Plague.g1a index cbbf5bc8abe1da9359148446fe20153ace362629..da7b68821fdd146264caa5b1d0e508c89b4b4176 100644 GIT binary patch delta 6458 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 diff --git a/src/core.c b/src/core.c index 9fc6f2a..b85f3a7 100644 --- a/src/core.c +++ b/src/core.c @@ -9,7 +9,7 @@ #include "display_engine.h" -int next_frame(struct game *current_game, int *dna_animation) +int next_frame(struct game *current_game, int *dna_animation, int *vaccine) { for (int i = 0; current_game->planes[i]; i++) { @@ -65,8 +65,9 @@ int next_frame(struct game *current_game, int *dna_animation) // Reset internal clock current_game->time = 0; - // Display the first step of research + // Display message on research if (!current_game->research && current_game->priority) message("LA RECHERHCE CONTRE VOTRE VIRUS COMMENCE !"); + else if (!*vaccine && (current_game->research == current_game->limit)) {*vaccine = 1; message("LE VACCIN EST TERMINE."); } // Update the game current_game->dna = current_game->dna + 1 + floor(current_game->severity / 10); @@ -163,7 +164,8 @@ int callback_tick(volatile int *tick) void message(char *msg) { int opt = GETKEY_DEFAULT & ~GETKEY_MOD_SHIFT & ~GETKEY_MOD_ALPHA & ~GETKEY_REP_ARROWS; - + key_event_t ev = {0}; + display_message(msg); - getkey_opt(opt, NULL); + while (ev.key != KEY_ALPHA) ev = getkey_opt(opt, NULL); } diff --git a/src/core.h b/src/core.h index 25dbe47..c3a7c4b 100644 --- a/src/core.h +++ b/src/core.h @@ -5,7 +5,7 @@ // Duration for internal clock (ms) #define ENGINE_TICK 50 -#define CURSOR_TICK 75 +#define CURSOR_TICK 110 #define DNA_ANIMATION_TICK 150 // Duration for DNA points and infectious model (ms) @@ -90,7 +90,7 @@ struct cursor 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, int *dna_animation); +int next_frame(struct game *current_game, int *dna_animation, int *vaccine); // rtc_key : get the key with RTC system int rtc_key(void); diff --git a/src/display_engine.c b/src/display_engine.c index 875473d..021ceef 100644 --- a/src/display_engine.c +++ b/src/display_engine.c @@ -124,9 +124,7 @@ void display_mutation(const int table[4][8], const struct cursor c, const int mu if (table[i][j]) dsubimage(j*16, i*16, &img_mutations, 16 * (mutation_menu - 1), 16 * (table[i][j] - 1), 15, 15, DIMAGE_NONE); } } - int to_display = 0; - if (c.display > 1) to_display = 1; - dsubimage((16 * c.x) - 1, (16 * c.y) - 1, &img_cursor, 0, 17 * (to_display), 17, 17, DIMAGE_NONE); + dsubimage((16 * c.x) - 1, (16 * c.y) - 1, &img_cursor, 0, 17 * (c.display), 17, 17, DIMAGE_NONE); dupdate(); } diff --git a/src/main.c b/src/main.c index 709fb31..7769062 100644 --- a/src/main.c +++ b/src/main.c @@ -83,8 +83,11 @@ int main(void) else { // Display stats at the end of the game + dclear(C_WHITE); display_background(6); display_foreground(6, ¤t_game, 0, 0); + dupdate(); + sleep_ms(250); int opt = GETKEY_DEFAULT & ~GETKEY_MOD_SHIFT & ~GETKEY_MOD_ALPHA & ~GETKEY_REP_ARROWS; getkey_opt(opt, NULL); @@ -139,7 +142,7 @@ static void title_screen(void) int main_loop(struct game *current_game) { int background = 1, mutation_menu = 4; - int end = 0, to_save = 1, dna_animation = 0; + int end = 0, to_save = 1, dna_animation = 0, vaccine = 0; static volatile int tick = 1; int t = timer_configure(TIMER_ANY, ENGINE_TICK*1000, GINT_CALL(callback_tick, &tick)); @@ -158,7 +161,7 @@ int main_loop(struct game *current_game) dupdate(); // Compute the motion of planes, DNA points and infectious model - to_save = next_frame(current_game, &dna_animation); + to_save = next_frame(current_game, &dna_animation, &vaccine); if (!to_save) return 0; // Get inputs from the keyboard and manage it diff --git a/src/mutation_engine.c b/src/mutation_engine.c index 5b27e6d..91b5899 100644 --- a/src/mutation_engine.c +++ b/src/mutation_engine.c @@ -63,7 +63,7 @@ void mutation_select(struct game *current_game, const int mutation_menu) // Cursor blinking gestion while (!tick) sleep(); tick = 0; - c.display = (c.display + 1) % 4; + c.display = (c.display + 1) % 2; // Get and display the mutation menu int table[4][8]; @@ -72,6 +72,8 @@ void mutation_select(struct game *current_game, const int mutation_menu) // Get the key key = rtc_key(); + + if (key) {tick = 1; c.display = 1;} // Manage input if (key == KEY_ALPHA) end = 1;