From 453b6b5276ceff5689a432f8256cbddbdda21a0c Mon Sep 17 00:00:00 2001 From: Shadow15510 Date: Fri, 28 May 2021 22:27:31 +0200 Subject: [PATCH] Add mutation data (custom fxconv type) and other minor changes --- CMakeLists.txt | 4 + Plague.g1a | Bin 43848 -> 44596 bytes README.md | 7 +- .../__pycache__/converters.cpython-39.pyc | Bin 913 -> 1298 bytes assets-fx/converters.py | 16 ++++ assets-fx/mutations_data/abilities.txt | 14 +++ assets-fx/mutations_data/fxconv-metadata.txt | 3 + assets-fx/mutations_data/space_splitter.py | 8 ++ assets-fx/mutations_data/symptoms.txt | 14 +++ assets-fx/mutations_data/transmissions.txt | 14 +++ src/core.c | 12 ++- src/display_engine.c | 52 +---------- src/display_engine.h | 15 +--- src/mutation_engine.c | 84 ++++++++++++++++++ src/mutation_engine.h | 32 +++++++ 15 files changed, 206 insertions(+), 69 deletions(-) create mode 100644 assets-fx/mutations_data/abilities.txt create mode 100644 assets-fx/mutations_data/fxconv-metadata.txt create mode 100644 assets-fx/mutations_data/space_splitter.py create mode 100644 assets-fx/mutations_data/symptoms.txt create mode 100644 assets-fx/mutations_data/transmissions.txt create mode 100644 src/mutation_engine.c create mode 100644 src/mutation_engine.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 5e3e91b..62a715c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,6 +13,7 @@ set(SOURCES src/main.c src/core.c src/display_engine.c + src/mutation_engine.c # ... ) # Shared assets, fx-9860G-only assets and fx-CG-50-only assets @@ -35,6 +36,9 @@ 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 11751509d5c7a40c46863e3d89df2004f140dba5..b180f0a86d666aa80a7827983268ef920d3fcfed 100644 GIT binary patch delta 4211 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 diff --git a/assets-fx/converters.py b/assets-fx/converters.py index 9984554..10a2b88 100644 --- a/assets-fx/converters.py +++ b/assets-fx/converters.py @@ -5,6 +5,9 @@ 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": + convert_md(input_name, output, params, target) + return 0 else: return 1 @@ -22,3 +25,16 @@ def convert_mt(input_name, output, params, target): data += fxconv.u32(int(j)) 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_data/abilities.txt b/assets-fx/mutations_data/abilities.txt new file mode 100644 index 0000000..2a93ce9 --- /dev/null +++ b/assets-fx/mutations_data/abilities.txt @@ -0,0 +1,14 @@ +FROID,4,0,0,10,0 +CHAUD,7,0,0,15,0 +GENETIQUE,0,5,4,25, +MUTATION+,0,8,8,30,2 +ENVIRON,10,0,0,30,0 +MEDICAMENT,0,2,2,15,1 +NONE +NONE +NONE +NONE +NONE +NONE +NONE +NONE \ No newline at end of file diff --git a/assets-fx/mutations_data/fxconv-metadata.txt b/assets-fx/mutations_data/fxconv-metadata.txt new file mode 100644 index 0000000..0ad2668 --- /dev/null +++ b/assets-fx/mutations_data/fxconv-metadata.txt @@ -0,0 +1,3 @@ +*.txt: + custom-type: mutation-data + name_regex: (.*)\.txt md_\1 \ No newline at end of file diff --git a/assets-fx/mutations_data/space_splitter.py b/assets-fx/mutations_data/space_splitter.py new file mode 100644 index 0000000..e09ada1 --- /dev/null +++ b/assets-fx/mutations_data/space_splitter.py @@ -0,0 +1,8 @@ +for file_name in ("abilities.txt", "symptoms.txt", "transmissions.txt"): + file = open(file_name, "r") + content = file.read().replace(" ", "") + file.close() + + file = open(file_name, "w") + file.write(content) + file.close() \ No newline at end of file diff --git a/assets-fx/mutations_data/symptoms.txt b/assets-fx/mutations_data/symptoms.txt new file mode 100644 index 0000000..7ccbfa5 --- /dev/null +++ b/assets-fx/mutations_data/symptoms.txt @@ -0,0 +1,14 @@ +NAUSEE,1,1,0,2,0.5, +VOMISSEMENT,3,2,0,4,0.5 +TOUX,2,1,0,3,0.5 +PNEUMONIE,2,2,0,4,0.5 +TUMEUR,4,2,5,15,1 +PLAIES,2,1,0,3,0.5 +LESIONS,5,4,0,10,0.5 +HEMORRAGIE,5,15,15,20,0.5 +INFLAMMATION,2,2,2,5,0.5 +INFECTION,6,7,6,17,0.5 +IMMUNODEFICIENCE,2,6,4,12,1 +PARANOIA,0,4,0,5,1 +FOLIE,6,15,0,20,2 +ARRETTOTAL,0,20,25,30,2 \ No newline at end of file diff --git a/assets-fx/mutations_data/transmissions.txt b/assets-fx/mutations_data/transmissions.txt new file mode 100644 index 0000000..c4f008c --- /dev/null +++ b/assets-fx/mutations_data/transmissions.txt @@ -0,0 +1,14 @@ +AIR1,2,0,0,9,0 +AIR2,5,0,0,15,0 +AIR3,8,0,0,20,0 +AEROSOL,10,0,0,30,0 +EAU1,2,0,0,9,0 +EAU2,4,0,0,12,0 +OISEAU1,3,0,0,12,0 +OISEAU2,6,0,0,16,0 +ANIMAL1,2,0,0,10,0 +ANIMAL2,6,0,0,16,0 +SANG1,1,0,0,8,0 +SANG2,4,0,0,14,0 +SANG3,9,0,0,20,0 +NONE \ No newline at end of file diff --git a/src/core.c b/src/core.c index 063c56c..e57f55d 100644 --- a/src/core.c +++ b/src/core.c @@ -3,6 +3,7 @@ #include #include "core.h" +#include "mutation_engine.h" #include "display_engine.h" @@ -130,14 +131,19 @@ void manage_mutation(struct game *current_game, const int mutation_menu) tick = 0; c.display = (c.display + 1) % 2; - // Display the mutation menu - display_mutation(current_game, mutation_menu, c); + // Get and display the mutation menu + int table[4][8]; + get_mutation(current_game, mutation_menu, table); + char data[14]; + get_mutation_data(mutation_menu, data); + display_mutation(table, c, mutation_menu); // Get the key key = rtc_key(); + // Manage input if (key == KEY_EXIT) end = 1; - + // if (key == KEY_EXE) mutation_selected(c, mutation_menu, get_mutation_data(current_game, mutation_menu)); if (key == KEY_LEFT && c.x > 0) c.x--; if (key == KEY_RIGHT && c.x < 7) c.x++; diff --git a/src/display_engine.c b/src/display_engine.c index 3fae5b4..31caeeb 100644 --- a/src/display_engine.c +++ b/src/display_engine.c @@ -1,6 +1,6 @@ #include -#include "core.h" +#include "mutation_engine.h" #include "display_engine.h" @@ -79,48 +79,11 @@ void display_foreground(const int background, const struct game *current_game) } -void display_mutation(const struct game *current_game, const int mutation_menu, const struct cursor c) +void display_mutation(const int table[4][8], const struct cursor c, const int mutation_menu) { extern const bopti_image_t img_mutations; extern bopti_image_t img_cursor; - // Load symptoms - extern struct mutation_table mt_symptoms_1; - extern struct mutation_table mt_symptoms_2; - extern struct mutation_table mt_symptoms_3; - - // Load abilities - extern struct mutation_table mt_abilities_1; - extern struct mutation_table mt_abilities_2; - extern struct mutation_table mt_abilities_3; - - // Load transmissions - extern struct mutation_table mt_transmissions_1; - extern struct mutation_table mt_transmissions_2; - extern struct mutation_table mt_transmissions_3; - - int table[4][8]; - if (mutation_menu == 1) - { - if (current_game->symptoms < 4) init_mat(8, 4, table, mt_symptoms_1.data); - else if (current_game->symptoms < 8) init_mat(8, 4, table, mt_symptoms_2.data); - else init_mat(8, 4, table, mt_symptoms_3.data); - } - - if (mutation_menu == 2) - { - if (current_game->abilities < 2) init_mat(8, 4, table, mt_abilities_1.data); - else if (current_game->abilities < 4) init_mat(8, 4, table, mt_abilities_2.data); - else init_mat(8, 4, table, mt_abilities_3.data); - } - - if (mutation_menu == 3) - { - if (current_game->transmissions < 5) init_mat(8, 4, table, mt_transmissions_1.data); - else if (current_game->transmissions < 10) init_mat(8, 4, table, mt_transmissions_2.data); - else init_mat(8, 4, table, mt_transmissions_3.data); - } - dclear(C_WHITE); display_background(5); for (int i = 0 ; i < 4 ; i++) @@ -135,14 +98,3 @@ void display_mutation(const struct game *current_game, const int mutation_menu, } - -void init_mat(int x, int y, int dest[][x], int src[][x]) -{ - for (int i = 0 ; i < x ; i++) - { - for (int j = 0 ; j < y ; j++) - { - dest[j][i] = src[j][i]; - } - } -} diff --git a/src/display_engine.h b/src/display_engine.h index e9c7e9c..57fbeaa 100644 --- a/src/display_engine.h +++ b/src/display_engine.h @@ -1,6 +1,8 @@ #ifndef _PLAGUE_DISPLAY_ENGINE_H #define _PLAGUE_DISPLAY_ENGINE_H +#include "core.h" + // display_background : display the background void display_background(const int background); @@ -8,17 +10,6 @@ void display_background(const int background); void display_foreground(const int background, const struct game *current_game); // display_mutation : display the mutation selection screen -void display_mutation(const struct game *current_game, const int mutation_menu, const struct cursor c); - -// init_mat : copy src into dest -void init_mat(int x, int y, int dest[][x], int src[][x]); - -// mutation_table : contain the map of the mutation available -struct mutation_table -{ - // Data of the map - int data[4][8]; -}; - +void display_mutation(const int table[4][8], const struct cursor c, const int mutation_menu); #endif /* _PLAGUE_DISPLAY_ENGINE_H */ \ No newline at end of file diff --git a/src/mutation_engine.c b/src/mutation_engine.c new file mode 100644 index 0000000..a5b4c99 --- /dev/null +++ b/src/mutation_engine.c @@ -0,0 +1,84 @@ +#include "mutation_engine.h" + +void get_mutation(const struct game *current_game, const int mutation_menu, int table[4][8]) +{ + // Load symptoms + extern struct mutation_table mt_symptoms_1; + extern struct mutation_table mt_symptoms_2; + extern struct mutation_table mt_symptoms_3; + + // Load abilities + extern struct mutation_table mt_abilities_1; + extern struct mutation_table mt_abilities_2; + extern struct mutation_table mt_abilities_3; + + // Load transmissions + extern struct mutation_table mt_transmissions_1; + extern struct mutation_table mt_transmissions_2; + extern struct mutation_table mt_transmissions_3; + + if (mutation_menu == 1) + { + if (current_game->symptoms < 4) init_mat(8, 4, table, mt_symptoms_1.data); + else if (current_game->symptoms < 8) init_mat(8, 4, table, mt_symptoms_2.data); + else init_mat(8, 4, table, mt_symptoms_3.data); + } + + if (mutation_menu == 2) + { + if (current_game->abilities < 2) init_mat(8, 4, table, mt_abilities_1.data); + else if (current_game->abilities < 4) init_mat(8, 4, table, mt_abilities_2.data); + else init_mat(8, 4, table, mt_abilities_3.data); + } + + if (mutation_menu == 3) + { + if (current_game->transmissions < 5) init_mat(8, 4, table, mt_transmissions_1.data); + else if (current_game->transmissions < 10) init_mat(8, 4, table, mt_transmissions_2.data); + else init_mat(8, 4, table, mt_transmissions_3.data); + } +} + + +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++) + { + for (int j = 0; j < y; j++) + { + dest[j][i] = src[j][i]; + } + } +} + +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 new file mode 100644 index 0000000..1b99a7a --- /dev/null +++ b/src/mutation_engine.h @@ -0,0 +1,32 @@ +#ifndef _MUTATION_ENGINE_H +#define _MUTATION_ENGINE_H + +#include "core.h" + +// mutation_table : contain the map of the mutation available +struct mutation_table +{ + // Data of the map + int data[4][8]; +}; + +// mutation_data : contain the mutations data +struct mutation_data +{ + // Data of the mutations + char data[14]; +}; + +// 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]); + +// char_init_mat : copy src into dest (for char) +void char_init_mat(int x, char dest[x], char srx[x]); + +#endif /* _MUTATION_ENGINE_H */ \ No newline at end of file