From 6e2fae86496ab3c3ea84b111d91109e6fe2f588d Mon Sep 17 00:00:00 2001 From: Shadow15510 Date: Sat, 5 Jun 2021 14:39:48 +0200 Subject: [PATCH] Animated DNA in main screen --- Plague.g1a | Bin 69776 -> 69008 bytes assets-fx/bground.png | Bin 5922 -> 15246 bytes assets-fx/dna.png | Bin 9750 -> 808 bytes src/core.c | 10 ++++++---- src/core.h | 2 +- src/display_engine.c | 11 ++++++++--- src/display_engine.h | 2 +- src/epidemic_engine.c | 8 +++++++- src/main.c | 17 ++++++----------- 9 files changed, 29 insertions(+), 21 deletions(-) diff --git a/Plague.g1a b/Plague.g1a index 60e4d8fa4684d05c2de4fd835237b3d125d4942b..0a4f243644afe7e52dfdc641974a56962bd08e6d 100644 GIT binary patch delta 7650 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 delta 8499 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 W!8}!);n#8ha*A6*n*Z#J-~V4}Ga{G( diff --git a/assets-fx/bground.png b/assets-fx/bground.png index 37e9f89cf766fe9ddcc3c965394ea07a5aa9bc3e..a5187b29e2fcfe883f76004d45af33808c22b957 100644 GIT binary patch literal 15246 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

1#~yXK1Aa3Qgk;c_C>2MYgtWUVOKG_ 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 z z-#FVisAmQ8cyijkP*O6utno)g;x#Trd21A2D_n+p4YW>>usc@iP+uWja|Cu_X_ey0 z)3{4gJbeHs0F?}YGXOwGpnxI3V!(eR`fY@?0igdfLcpw95hj9D@JHp?yVFpGdwT}` p-cQ&-`DW6u`y99k+>iGFG3D?KA@&$erLq%7)LD4Si{{WEqMjikF delta 5865 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 diff --git a/assets-fx/dna.png b/assets-fx/dna.png index 07127be892581f1b528da5bc2c768a57464d3427..02cffb0c6811d91c807d31dcf08908c21f41b6dd 100644 GIT binary patch literal 808 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 Wwa#nIUldNa`Rd9#O63Yx!T$rvk*Ku* diff --git a/src/core.c b/src/core.c index ae92f7a..c70e6bc 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 next_frame(struct game *current_game, int *dna_animation) { for (int i = 0; current_game->planes[i]; i++) { @@ -54,9 +54,12 @@ int next_frame(struct game *current_game) int limit_tick = LIMIT_TICK; if (current_game->boost) limit_tick = floor(LIMIT_TICK / 10); + current_game->time += ENGINE_TICK; current_game->total_time += ENGINE_TICK; + if (!(current_game->time % 150)) *dna_animation = (*dna_animation + 1) % 16; + if (current_game->time > limit_tick) { // Reset internal clock @@ -158,7 +161,7 @@ void message(char *msg) { display_message(msg); - int key = 0, frame = 1; + int key = 0, frame = 0; static volatile int tick = 1; int t = timer_configure(TIMER_ANY, DNA_ANIMATION_TICK*1000, GINT_CALL(callback_tick, &tick)); @@ -172,8 +175,7 @@ void message(char *msg) key = rtc_key(); display_dna_animation(frame); - frame = (frame + 1) % 24; - if (!frame) frame = 24; + frame = (frame + 1) % 16; } if (t >= 0) timer_stop(t); diff --git a/src/core.h b/src/core.h index a1de721..cd72f77 100644 --- a/src/core.h +++ b/src/core.h @@ -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 next_frame(struct game *current_game, int *dna_animation); // 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 12b7978..c267d96 100644 --- a/src/display_engine.c +++ b/src/display_engine.c @@ -12,10 +12,11 @@ void display_background(const int background) } -void display_foreground(const int background, const struct game *current_game, const int mutation_menu) +void display_foreground(const int background, const struct game *current_game, const int mutation_menu, const int dna_animation) { extern const bopti_image_t img_mutations; extern const bopti_image_t img_planes; + extern const bopti_image_t img_dna; extern const uint8_t world[64][128]; GUNUSED int length; @@ -57,6 +58,9 @@ void display_foreground(const int background, const struct game *current_game, c if (current_game->planes[i]->y + 8 < 57) dsubimage(current_game->planes[i]->x - 4, current_game->planes[i]->y - 4, &img_planes, 0, 8 * (current_game->planes[i]->direction - 1), 8, 8, DIMAGE_NONE); } + // Animated DNA + dsubimage(1, 51, &img_dna, dna_animation * 8, 0, 7, 12, DIMAGE_NONE); + // Status bottom bar int length = 73 * current_game->research / current_game->limit; dprint(9, 58, C_BLACK, "%d", current_game->dna); @@ -196,9 +200,10 @@ void display_message(char *msg) void display_dna_animation(const int frame) { - extern bopti_image_t img_dna; + extern const bopti_image_t img_dna; - dsubimage(114, 29, &img_dna, 11 * (frame - 1), 0, 11, 32, DIMAGE_NONE); + dsubimage(2, 3, &img_dna, 8 * frame, 0, 7, 12, DIMAGE_NONE); + dsubimage(42, 3, &img_dna, 8 * ((frame + 2) % 16), 0, 7, 12, DIMAGE_NONE); dupdate(); } diff --git a/src/display_engine.h b/src/display_engine.h index a9c314e..5ac0dee 100644 --- a/src/display_engine.h +++ b/src/display_engine.h @@ -7,7 +7,7 @@ void display_background(const int background); // display_foreground : display the foreground, planes, statistics -void display_foreground(const int background, const struct game *current_game, const int mutation_menu); +void display_foreground(const int background, const struct game *current_game, const int mutation_menu, const int dna_animation); // display_mutation : display the mutation selection screen void display_mutation(const int table[4][8], const struct cursor c, const int mutation_menu); diff --git a/src/epidemic_engine.c b/src/epidemic_engine.c index e3762ea..5615b17 100644 --- a/src/epidemic_engine.c +++ b/src/epidemic_engine.c @@ -42,7 +42,7 @@ void epidemic_simulation(struct game *current_game) init_tab(current_game->grid.width * current_game->grid.height, current_grid, current_game->grid.data); int healed_rate = 0; - if (current_game->research == current_game->limit) healed_rate = rand() % 26; + if (current_game->research == current_game->limit) healed_rate = rand() % 11; // Make the epidemic grid evolove for (int i = 0; i < current_game->grid.width; i ++) @@ -97,6 +97,12 @@ void epidemic_simulation(struct game *current_game) } init_tab(current_game->grid.width * current_game->grid.height, current_game->grid.data, current_grid); free(current_grid); + + for (int i = 0; i < 4; i ++) + { + if (current_game->humans[i] < 0) current_game->humans[i] = 0; + else if (current_game->humans[i] > (current_game->grid.width * current_game->grid.height) - BLANK_CASES) current_game->humans[i] = (current_game->grid.width * current_game->grid.height) - BLANK_CASES; + } } diff --git a/src/main.c b/src/main.c index 44ba069..a04c32f 100644 --- a/src/main.c +++ b/src/main.c @@ -97,14 +97,9 @@ static void title_screen(void) dupdate(); sleep_ms(250); - for (int i = 64; i > 32; i --) - { - dclear(C_BLACK); - dsubimage(0, 0, &img_title, 0, 0, 128, 64, DIMAGE_NONE); - dprint_opt(16, i, C_WHITE, C_BLACK, 0, 0, "VERSION %s", VERSION, -1); - dupdate(); - sleep_ms(75); - } + dsubimage(0, 0, &img_title, 0, 0, 128, 64, DIMAGE_NONE); + dprint_opt(32, 29, C_WHITE, C_BLACK, 0, 0, "VERSION %s", VERSION, -1); + dupdate(); sleep_ms(1000); @@ -141,7 +136,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; + int end = 0, to_save = 1, dna_animation = 0; static volatile int tick = 1; int t = timer_configure(TIMER_ANY, ENGINE_TICK*1000, GINT_CALL(callback_tick, &tick)); @@ -156,11 +151,11 @@ int main_loop(struct game *current_game) // Update the screen dclear(C_WHITE); display_background(background); - display_foreground(background, current_game, mutation_menu); + display_foreground(background, current_game, mutation_menu, dna_animation); dupdate(); // Compute the motion of planes, DNA points and infectious model - to_save = next_frame(current_game); + to_save = next_frame(current_game, &dna_animation); if (!to_save) end = 1; // Get inputs from the keyboard and manage it