From 3236732ea895f1ce8c0490066a5f4a0ec6b4ed43 Mon Sep 17 00:00:00 2001 From: Shadow15510 Date: Sun, 30 May 2021 18:56:22 +0200 Subject: [PATCH] Add message and adjust timers --- CMakeLists.txt | 1 + Plague.g1a | Bin 46532 -> 48108 bytes assets-fx/bground.png | Bin 23285 -> 5113 bytes assets-fx/dna.png | Bin 0 -> 9522 bytes assets-fx/mutations.png | Bin 15531 -> 15723 bytes src/core.c | 30 ++++++++++++++++++++++++++++-- src/core.h | 17 +++++++++-------- src/display_engine.c | 31 ++++++++++++------------------- src/display_engine.h | 8 ++++++-- src/main.c | 6 +----- src/mutation_engine.c | 6 +++++- 11 files changed, 62 insertions(+), 37 deletions(-) create mode 100644 assets-fx/dna.png diff --git a/CMakeLists.txt b/CMakeLists.txt index 0c2b79c..294350e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,6 +28,7 @@ set(ASSETS_fx assets-fx/mutations.png assets-fx/cursor.png assets-fx/title.png + assets-fx/dna.png assets-fx/mutations_table/abilities_1.txt assets-fx/mutations_table/abilities_2.txt assets-fx/mutations_table/abilities_3.txt diff --git a/Plague.g1a b/Plague.g1a index d5aba1d664aedd6375547b977fb045ea71fb6a5e..aaaa1f417ee3502fe8c6ab1284af71503812a5fb 100644 GIT binary patch delta 8683 zcmb_g4^)#^mVe)uKmtKX!XG0>5)%HYNFMkHiVBHRL5c!G)v>e#6%Z^USZu*E4XqxV zp3(B>v2LfsTDo$q$8jn)R_WHAWu~l$v!|z%IBKoK%pe2Gj%N)%He(&A;?!E86-@WgBUmUp0PyCG!KYixk&$ij#IvV8qEBsyg#^uTieX2b?Nw%CO zC8w=SK9_rn<3F0P-{X=v>$)>?WneL(1loraE(dfpv`Vg&_Y%Uj5c=T+A^yE`B~Qlm zr~{3DR5M2EykpKgCe+vi6JYmI4fImM4_$wXP>F~9(3h0Z4Q4_g&m#7BBpkM3XR zwP=f?e5%}j&8oL3nu@EY%1>O=Srmv83D1L$MPsBh@>rx|)5od%2=7za{_Rnn2k9+R^?)%mEiK6O0fOv%5<8nv

Z{YzTD&9 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 delta 6962 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 diff --git a/assets-fx/bground.png b/assets-fx/bground.png index 2a727f54055da7ca87cdc944254587bba15f2d58..3df997a8c7b9d40306c2daf6c5a0de88dfb220f3 100644 GIT binary patch literal 5113 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 P=mSLkQ+g%Gog@DPTutJ; diff --git a/assets-fx/dna.png b/assets-fx/dna.png new file mode 100644 index 0000000000000000000000000000000000000000..5d515bd681fc919fe9dbce1bb1bca3b29197adf7 GIT binary patch literal 9522 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 bG*$isqc8)k8%)fp00000NkvXXu0mjf_tHO0 diff --git a/src/core.c b/src/core.c index 7338ccb..d7f884c 100644 --- a/src/core.c +++ b/src/core.c @@ -43,9 +43,9 @@ void next_frame(struct game *current_game) } } current_game->time += ENGINE_TICK; - if (current_game->time > 10000) + if (current_game->time > LIMIT_TICK) { - current_game->dna += 1; + if (current_game->dna <= 100) current_game->dna += 1; current_game->time = 0; // Epidemic propagation simulation to add here @@ -120,3 +120,29 @@ int callback_tick(volatile int *tick) return TIMER_CONTINUE; } + +void message(const char *msg[5]) +{ + display_message(msg); + + int key = 0, frame = 1; + + static volatile int tick = 1; + int t = timer_configure(TIMER_ANY, DNA_ANIMATION_TICK*1000, GINT_CALL(callback_tick, &tick)); + if (t >= 0) timer_start(t); + + while (!key) + { + while(!tick) sleep(); + tick = 0; + + key = rtc_key(); + display_dna_animation(frame); + + frame = (frame + 1) % 24; + if (!frame) frame = 24; + } + + if (t >= 0) timer_stop(t); +} + diff --git a/src/core.h b/src/core.h index fdf14e5..d3eca8b 100644 --- a/src/core.h +++ b/src/core.h @@ -1,16 +1,17 @@ #ifndef _PLAGUE_CORE_H #define _PLAGUE_CORE_H -// Duration for internal clock +// Duration for internal clock (ms) #define ENGINE_TICK 50 -#define CURSOR_TICK 100 +#define CURSOR_TICK 150 +#define DNA_ANIMATION_TICK 150 + +// The duration for DNA points and infectious model (ms) +#define LIMIT_TICK 10000 // Number of planes on screen #define NB_PLANES 5 -// Number of humans -#define TOTAL_POP 10000000000 - // game : all statistics of the current game struct game { @@ -28,9 +29,6 @@ struct game // Research data int research, limit; - // Infectious pattern parameters - long long int healthy, infected, dead, cured; - // Time int time; @@ -77,4 +75,7 @@ int rtc_key(void); // callback_timer : basic timer int callback_tick(volatile int *tick); +// message : display a message +void message(const char *msg[5]); + #endif /* _PLAGUE_CORE_H */ \ No newline at end of file diff --git a/src/display_engine.c b/src/display_engine.c index b36070b..93379da 100644 --- a/src/display_engine.c +++ b/src/display_engine.c @@ -58,23 +58,7 @@ void display_foreground(const int background, const struct game *current_game) if (current_game->mutations_selected[2]) dsubimage(65, 15, &img_mutations, 32, 16 * (current_game->mutations_selected[2] - 1), 15, 15, 0); break; - case 6: - length = 63 * current_game->healthy/ TOTAL_POP; - dline(61, 31, 61 + length, 31, C_BLACK); - dline(61, 32, 61 + length, 32, C_BLACK); - - length = 63 * current_game->infected / TOTAL_POP; - dline(61, 39, 61 + length, 39, C_BLACK); - dline(61, 40, 61 + length, 40, C_BLACK); - - length = 63 * current_game->dead / TOTAL_POP; - dline(61, 47, 61 + length, 47, C_BLACK); - dline(61, 48, 61 + length, 48, C_BLACK); - - length = 63 * current_game->cured / TOTAL_POP; - dline(61, 55, 61 + length, 55, C_BLACK); - dline(61, 56, 61 + length, 56, C_BLACK); - break; + // case 6: statistics about humans } } @@ -124,10 +108,19 @@ void display_mutation_buy(const struct cursor c, const int mutation_menu, const } -void output_error(const char *msg) +void display_message(const char *msg[5]) { dclear(C_WHITE); - dprint(0, 0, C_BLACK, msg); + display_background(7); + for (int i = 0; i < 5; i ++) dprint(54, 6 * i + 4, C_BLACK, msg[i]); + dupdate(); +} + +void display_dna_animation(const int frame) +{ + extern bopti_image_t img_dna; + + dsubimage(114, 29, &img_dna, 11 * (frame - 1), 0, 11, 32, DIMAGE_NONE); dupdate(); } diff --git a/src/display_engine.h b/src/display_engine.h index 0ef9459..6942f3c 100644 --- a/src/display_engine.h +++ b/src/display_engine.h @@ -15,6 +15,10 @@ void display_mutation(const int table[4][8], const struct cursor c, const int mu // mutation_selected : display the mutation's informations screen void display_mutation_buy(const struct cursor c, const int mutation_menu, const int table[4][8], const int button_selected); -// output_error : display text -void output_error(const char *msg); +// output_error : display text and message background +void display_message(const char *msg[5]); + +// display_dna_animation : display the DNA according to the frame number +void display_dna_animation(const int frame); + #endif /* _PLAGUE_DISPLAY_ENGINE_H */ \ No newline at end of file diff --git a/src/main.c b/src/main.c index 6e4699b..2f9dbae 100644 --- a/src/main.c +++ b/src/main.c @@ -53,10 +53,6 @@ int main(void) .research = 0, .limit = 100, - .healthy = TOTAL_POP - 1, - .infected = 1, - .dead = 0, - .time = 0, .planes = {&plane_1, &plane_2, &plane_3, &plane_4, &plane_5, NULL} @@ -101,7 +97,7 @@ void main_loop(struct game *current_game) display_foreground(background, current_game); dupdate(); - // Compute the motion of planes + // Compute the motion of planes, DNA points and infectious model next_frame(current_game); // Get inputs from the keyboard and manage it diff --git a/src/mutation_engine.c b/src/mutation_engine.c index c534c93..ed14116 100644 --- a/src/mutation_engine.c +++ b/src/mutation_engine.c @@ -120,8 +120,10 @@ int mutation_buy(struct game *current_game, const struct cursor c, const int mut // Update update_disease(current_game); + const char *msg[5] = {"mutation", "achetee", "", "", ""}; + message(msg); } - else {output_error("Achat impossible"); getkey();} + else {const char *msg[5] = {"achat", "impossible", "", "", ""}; message(msg);} } // if the player has already bought this mutation @@ -129,6 +131,8 @@ int mutation_buy(struct game *current_game, const struct cursor c, const int mut { current_game->mutations_selected[mutation_menu - 1] = id; update_disease(current_game); + const char *msg[5] = {"mutation", "selectionnee"}; + message(msg); } }