Add mutation data (custom fxconv type) and other minor changes

This commit is contained in:
Shadow15510 2021-05-28 22:27:31 +02:00
parent b1c3ed89b9
commit 453b6b5276
15 changed files with 206 additions and 69 deletions

View File

@ -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

Binary file not shown.

View File

@ -62,8 +62,8 @@ En mutant, votre maladie peut acquérir des capacités. Ces capacités lui perme
|résistance au froid|+4|||10
|résistance au chand|+7|||15
|résistance à l'environnement|+10|||30
|résistance aux médicaments||+2|+0,5|15
|résistance génétique||+5|+1|25
|résistance aux médicaments||+2|+2|15
|résistance génétique||+5|+4|25
|mutation accélérée||+8|+2|30
### Moyens de transmissions
@ -77,8 +77,7 @@ Votre maladie aura tout le loisir de changer ses moyens de transmission ! Plus o
|air Nv 3|+8|20
|air et eau|+10|30
|eau Nv 1|+2|9
|eau Nv 2|+3|12
|eau Nv 3|+9|25
|eau Nv 2|+4|12
|oiseau Nv 1|+3|12
|oiseau Nv 2|+5|18
|animaux Nv 1|+2|10

View File

@ -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)

View File

@ -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

View File

@ -0,0 +1,3 @@
*.txt:
custom-type: mutation-data
name_regex: (.*)\.txt md_\1

View File

@ -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()

View File

@ -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

View File

@ -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

View File

@ -3,6 +3,7 @@
#include <gint/keyboard.h>
#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++;

View File

@ -1,6 +1,6 @@
#include <gint/display.h>
#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];
}
}
}

View File

@ -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 */

84
src/mutation_engine.c Normal file
View File

@ -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];
}
}

32
src/mutation_engine.h Normal file
View File

@ -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 */