From f93811fdf5805bba173fa0c6a76f34ea51dda52a Mon Sep 17 00:00:00 2001 From: Shadow15510 Date: Sat, 29 May 2021 16:44:46 +0200 Subject: [PATCH] Add mutation data --- CMakeLists.txt | 4 +- Plague.g1a | Bin 44596 -> 45296 bytes assets-fx/bground.png | Bin 11163 -> 23076 bytes assets-fx/converters.py | 14 +----- assets-fx/mutations.png | Bin 4858 -> 15531 bytes assets-fx/mutations_data/abilities.txt | 14 ------ assets-fx/mutations_data/fxconv-metadata.txt | 3 -- assets-fx/mutations_data/symptoms.txt | 14 ------ assets-fx/mutations_data/transmissions.txt | 14 ------ assets-fx/mutations_table/abilities_1.txt | 8 +-- assets-fx/mutations_table/abilities_2.txt | 8 +-- assets-fx/mutations_table/transmissions_1.txt | 8 +-- assets-fx/mutations_table/transmissions_2.txt | 6 +-- src/core.c | 10 ++-- src/core.h | 3 +- src/display_engine.c | 44 +++++++++++++++++ src/display_engine.h | 3 ++ src/main.c | 3 +- src/mutation_data.c | 46 ++++++++++++++++++ src/mutation_engine.c | 30 ------------ src/mutation_engine.h | 14 +++--- 21 files changed, 126 insertions(+), 120 deletions(-) delete mode 100644 assets-fx/mutations_data/abilities.txt delete mode 100644 assets-fx/mutations_data/fxconv-metadata.txt delete mode 100644 assets-fx/mutations_data/symptoms.txt delete mode 100644 assets-fx/mutations_data/transmissions.txt create mode 100644 src/mutation_data.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 62a715c..0c2b79c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,6 +14,7 @@ set(SOURCES src/core.c src/display_engine.c src/mutation_engine.c + src/mutation_data.c # ... ) # Shared assets, fx-9860G-only assets and fx-CG-50-only assets @@ -36,9 +37,6 @@ set(ASSETS_fx assets-fx/mutations_table/transmissions_1.txt assets-fx/mutations_table/transmissions_2.txt assets-fx/mutations_table/transmissions_3.txt - assets-fx/mutations_data/abilities.txt - assets-fx/mutations_data/symptoms.txt - assets-fx/mutations_data/transmissions.txt # ... ) set(ASSETS_cg diff --git a/Plague.g1a b/Plague.g1a index b180f0a86d666aa80a7827983268ef920d3fcfed..ce87a5ee3743adc65784ebf6bbed1a33b4e93767 100644 GIT binary patch delta 5508 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 delta 4717 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 delta 10163 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 G&Hn-72mXx! diff --git a/assets-fx/converters.py b/assets-fx/converters.py index 10a2b88..b31c588 100644 --- a/assets-fx/converters.py +++ b/assets-fx/converters.py @@ -5,7 +5,7 @@ def convert(input_name, output, params, target): if params["custom-type"] == "mutation-table": convert_mt(input_name, output, params, target) return 0 - elif params["custom-type"] == "mutation-data": + elif params["custom-type"] == "mutation": convert_md(input_name, output, params, target) return 0 else: @@ -26,15 +26,3 @@ def convert_mt(input_name, output, params, target): fxconv.elf(data, output, "_" + params["name"], **target) - -def convert_md(input_name, output, params, target): - with open(input_name, "r") as file: - # Extract informations - lines = file.read().splitlines() - - # Convert data into bytes-like object - data = bytes() - for i in lines: - data += bytes(i, encoding="utf-8") - - fxconv.elf(data, output, "_" + params["name"], **target) diff --git a/assets-fx/mutations.png b/assets-fx/mutations.png index 6970d18a53ebd4f71fccf084933d2ec9b1a5aaef..d6f671bb23ab05d114624e975d1bdcc58d331f86 100644 GIT binary patch literal 15531 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 NNls0+R@yxDe*uw@&u9Pu delta 3807 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 0) c.x--; if (key == KEY_RIGHT && c.x < 7) c.x++; diff --git a/src/core.h b/src/core.h index cf93a01..b6e9545 100644 --- a/src/core.h +++ b/src/core.h @@ -3,7 +3,7 @@ // Duration for internal clock #define ENGINE_TICK 50 -#define CURSOR_TICK 200 +#define CURSOR_TICK 100 // Number of planes on screen #define NB_PLANES 5 @@ -79,5 +79,4 @@ int callback_tick(volatile int *tick); // manage_mutation : an independant sub-programm which allow to select, buy and see the mutations. void manage_mutation(struct game *current_game, const int mutation_menu); - #endif /* _PLAGUE_CORE_H */ \ No newline at end of file diff --git a/src/display_engine.c b/src/display_engine.c index 31caeeb..98e4cc9 100644 --- a/src/display_engine.c +++ b/src/display_engine.c @@ -98,3 +98,47 @@ void display_mutation(const int table[4][8], const struct cursor c, const int mu } + +void mutation_selected(const struct cursor c, const int mutation_menu, const int table[4][8]) +{ + extern const bopti_image_t img_mutations; + const int id = table[c.y][c.x]; + + extern struct mutation symptoms_data[14]; + extern struct mutation abilities_data[6]; + extern struct mutation transmissions_data[13]; + + struct mutation *mutation_data; + + switch (mutation_menu) + { + case 1: + mutation_data = &symptoms_data[id - 1]; + break; + + case 2: + mutation_data = &abilities_data[id - 1]; + break; + + case 3: + mutation_data = &transmissions_data[id - 1]; + break; + } + + dclear(C_WHITE); + + display_background(4); + dsubimage(3, 21, &img_mutations, 16 * (mutation_menu - 1), 16 * (id - 1), 15, 15, DIMAGE_NONE); + + dprint(47, 25, C_BLACK, mutation_data->name); + dprint(81, 33, C_BLACK, "%d", mutation_data->dna); + dprint(81, 41, C_BLACK, "%d", mutation_data->contagion); + dprint(81, 49, C_BLACK, "%d", mutation_data->lethality); + dprint(81, 57, C_BLACK, "%d", mutation_data->severity); + + dupdate(); + + +} + + diff --git a/src/display_engine.h b/src/display_engine.h index 57fbeaa..23898a9 100644 --- a/src/display_engine.h +++ b/src/display_engine.h @@ -12,4 +12,7 @@ void display_foreground(const int background, const struct game *current_game); // display_mutation : display the mutation selection screen void display_mutation(const int table[4][8], const struct cursor c, const int mutation_menu); +// mutation_selected : display the mutation shop +void mutation_selected(const struct cursor c, const int mutation_menu, const int table[4][8]); + #endif /* _PLAGUE_DISPLAY_ENGINE_H */ \ No newline at end of file diff --git a/src/main.c b/src/main.c index c8e4e6d..a161c31 100644 --- a/src/main.c +++ b/src/main.c @@ -30,13 +30,14 @@ int main(void) title_screen(); + // Game statistics struct plane plane_1 = {22, 20, 2, 84, 20, 22, 20}; struct plane plane_2 = {34, 20, 3, 34, 44, 34, 20}; struct plane plane_3 = {68, 44, 1, 68, 20, 68, 44}; struct plane plane_4 = {104, 20, 3, 104, 50, 104, 20}; struct plane plane_5 = {68, 44, 4, 34, 44, 68, 44}; - GUNUSED struct game current_game = + struct game current_game = { .contagion = 0, .severity = 0, diff --git a/src/mutation_data.c b/src/mutation_data.c new file mode 100644 index 0000000..f298398 --- /dev/null +++ b/src/mutation_data.c @@ -0,0 +1,46 @@ +#include "mutation_engine.h" + +const struct mutation abilities_data[6] = +{ + {4, 0, 0, 10, 0, "FROID"}, + {7, 0, 0, 15, 0, "CHAUD"}, + {0, 5, 4, 25, 0, "GENETIQUE"}, + {0, 8, 8, 30, 2, "MUTATION+"}, + {10, 0, 0, 30, 0, "ENVIRON"}, + {0, 2, 2, 15, 1, "MEDICAMENT"}, +}; + +const struct mutation symptoms_data[14] = +{ + {1, 1, 0, 2, 0.5, "NAUSEE"}, + {3, 2, 0, 4, 0.5, "VOMISSEMENT"}, + {2, 1, 0, 3, 0.5, "TOUX"}, + {2, 2, 0, 4, 0.5, "PNEUMONIE"}, + {4, 2, 5, 15, 1, "TUMEUR"}, + {2, 1, 0, 3, 0.5, "PLAIES"}, + {5, 4, 0, 10, 0.5, "LESIONS"}, + {5, 15, 15, 20, 0.5, "HEMORRAGIE"}, + {6, 7, 6, 17, 0.5, "INFECTION"}, + {2, 2, 2, 5, 0.5, "INFLAMMATION"}, + {2, 6, 4, 12, 1, "IMMUNODEFICIENCE"}, + {0, 4, 0, 5, 1, "PARANOIA"}, + {6, 15, 0, 20, 2, "FOLIE"}, + {0, 20, 25, 30, 2, "ARRET TOTAL"}, +}; + +const struct mutation transmissions_data[13] = +{ + { 2, 0, 0, 9, 0, "AIR 1"}, + { 5, 0, 0, 15, 0, "AIR 2"}, + { 8, 0, 0, 20, 0, "AIR 3"}, + {10, 0, 0, 30, 0, "AEROSOL"}, + { 2, 0, 0, 9, 0, "EAU 1"}, + { 4, 0, 0, 12, 0, "EAU 2"}, + { 2, 0, 0, 10, 0, "ANIMAL 1"}, + { 6, 0, 0, 16, 0, "ANIMAL 2"}, + { 3, 0, 0, 12, 0, "OISEAU 1"}, + { 6, 0, 0, 16, 0, "OISEAU 2"}, + { 1, 0, 0, 8, 0, "SANG 1"}, + { 4, 0, 0, 14, 0, "SANG 2"}, + { 9, 0, 0, 20, 0, "SANG 3"}, +}; \ No newline at end of file diff --git a/src/mutation_engine.c b/src/mutation_engine.c index a5b4c99..a4dc60b 100644 --- a/src/mutation_engine.c +++ b/src/mutation_engine.c @@ -40,29 +40,6 @@ void get_mutation(const struct game *current_game, const int mutation_menu, int } -void get_mutation_data(const int mutation_menu, char data[14]) -{ - extern struct mutation_data md_abilities; - extern struct mutation_data md_symptoms; - extern struct mutation_data md_transmissions; - - switch (mutation_menu) - { - case 1: - char_init_mat(14, data, md_symptoms.data); - break; - - case 2: - char_init_mat(14, data, md_abilities.data); - break; - - case 3: - char_init_mat(14, data, md_transmissions.data); - break; - } -} - - void init_mat(int x, int y, int dest[][x], int src[][x]) { for (int i = 0; i < x; i++) @@ -74,11 +51,4 @@ void init_mat(int x, int y, int dest[][x], int src[][x]) } } -void char_init_mat(int x, char dest[x], char src[x]) -{ - for (int i = 0; i < x; i++) - { - dest[i] = src[i]; - } -} diff --git a/src/mutation_engine.h b/src/mutation_engine.h index 1b99a7a..a132110 100644 --- a/src/mutation_engine.h +++ b/src/mutation_engine.h @@ -10,19 +10,19 @@ struct mutation_table int data[4][8]; }; -// mutation_data : contain the mutations data -struct mutation_data +// mutation : data about a mutation +struct mutation { - // Data of the mutations - char data[14]; + // Data of the mutation : contagion, lethality, severity, DNA cost + int contagion, severity, lethality, dna, changement; + + // Name of the mutation + char *name; }; // get_mutation : return the mutation table to display void get_mutation(const struct game *current_game, const int mutation_menu, int table[4][8]); -// get_mutation_data : return the mutation_data -void get_mutation_data(const int mutation_menu, char data[14]); - // init_mat : copy src into dest (for int) void init_mat(int x, int y, int dest[][x], int src[][x]);