New UI in battle, adaptative monster size, faster camera

This commit is contained in:
bgiraudr 2022-12-07 18:08:28 +01:00
parent 9751c7ff2c
commit 181fffcb96
17 changed files with 43 additions and 16 deletions

View File

@ -58,9 +58,11 @@ set(ASSETS_cg
assets-cg/tileset.png
assets-cg/inventory.png
assets-cg/categories.png
assets-cg/contours.png
assets-cg/dialogue.png
assets-cg/capacite.png
assets-cg/battle_ui.png
assets-cg/battle_env_1.png
assets-cg/maps/inside/tileset_in.png
assets-cg/maps/testCarte.json
assets-cg/maps/1.json

BIN
assets-cg/battle_env_1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

BIN
assets-cg/battle_env_1b.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 15 KiB

BIN
assets-cg/contours.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 397 B

View File

@ -332,6 +332,8 @@ def convert_monster(input, output, params, target):
monster = fxconv.Structure()
monster += fxconv.string(data["name"])
monster += fxconv.ptr(f"img_{data['sprite']}")
monster += fxconv.u32(data["sprite_x"])
monster += fxconv.u32(data["sprite_y"])
monster += fxconv.u32(data["id"])
monster += fxconv.u32(len(data["moves"]))
monster += fxconv.ptr(stats)

View File

@ -28,6 +28,16 @@ capacite.png:
categories.png:
type: bopti-image
name: img_categories
profile: p4
contours.png:
type: bopti-image
name: img_contours
profile: p4
battle_env_1.png:
type: bopti-image
name: img_battle_env_1
profile: p4
battle_ui.png:

View File

@ -1,6 +1,9 @@
{
"name":"test",
"sprite":"test",
"sprite_x":100,
"sprite_y":85,
"id":1,
"type":"Labélisateur",
"stats":{

View File

@ -1,6 +1,9 @@
{
"name":"Citron",
"name":"Banane",
"sprite":"test2",
"sprite_x":109,
"sprite_y":111,
"id":2,
"type":"Modérateur",
"stats":{

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -9,6 +9,8 @@
struct Monster {
char *name;
bopti_image_t *sprite;
int sprite_x;
int sprite_y;
int id;
int nbMoves;
struct Stats *stats;

View File

@ -156,7 +156,6 @@ int select_move(struct Player *player, struct Monster *monster, int prec_selecte
dclear(C_RGB(25,25,25));
draw_battle(player, monster);
draw_ui(player, selection);
dtext(58 + (selection * 130), DHEIGHT-15 , C_RED, "[X]");
dupdate();
if(keydown(KEY_OPTN)) {
@ -179,16 +178,18 @@ int select_move(struct Player *player, struct Monster *monster, int prec_selecte
void draw_battle(struct Player *player, struct Monster *monster) {
extern bopti_image_t img_battle;
extern bopti_image_t img_battle_env_1;
const int WIDTH_HP = 74;
if(player->stats.pv < 0) player->stats.pv = 0;
if(monster->stats->pv < 0) monster->stats->pv = 0;
dclear(C_RGB(25,25,25));
// dclear(C_RGB(25,25,25));
dimage(0,0,&img_battle_env_1);
drect(323, 120, DWIDTH, 125, getTypeFromName(player->stats.type).color);
dimage(0,0,&img_battle);
int posHP = (float)player->stats.pv / player->stats.max_pv * WIDTH_HP;
drect(290,138,290+WIDTH_HP,142,C_WHITE);
drect(290,143,290+WIDTH_HP,147,C_WHITE);
int pcolor = (player->stats.pv <= player->stats.max_pv/2 ?
(player->stats.pv <= player->stats.max_pv/4 ?
@ -196,10 +197,10 @@ void draw_battle(struct Player *player, struct Monster *monster) {
C_RGB(31,17,0)) :
C_GREEN);
drect(290,138,290+posHP,142,pcolor);
drect(290,143,290+posHP,147,pcolor);
dprint(333,124,C_BLACK,"%d",player->stats.level);
dprint(256,122,C_BLACK,"%d/%d", player->stats.pv, player->stats.max_pv);
dprint(333,129,C_BLACK,"%d",player->stats.level);
dprint(256,127,C_BLACK,"%d/%d", player->stats.pv, player->stats.max_pv);
int posHPmonster = (float)monster->stats->pv / monster->stats->max_pv * WIDTH_HP;
dprint(2,8,C_BLACK,"%s",monster->name);
@ -215,8 +216,8 @@ void draw_battle(struct Player *player, struct Monster *monster) {
dprint(90,9,C_BLACK,"%d",monster->stats->level);
dprint(127,11,C_BLACK,"%d/%d", monster->stats->pv, monster->stats->max_pv);
drect(0,0,84,4,getTypeFromName(monster->stats->type).color);
dimage(265,10,monster->sprite);
dimage((int)(253+((133-monster->sprite_x)/2)),6+(116-monster->sprite_y), monster->sprite);
}
void draw_executed_move(struct Move *move, struct Monster *monster, int is_monster) {

View File

@ -13,6 +13,6 @@ struct Camera camera_new(struct Vec2f *target) {
}
void camera_update(struct Camera *c) {
c->pos = vec2f_lerp(c->pos, *c->target, 0.08);
c->pos = vec2f_lerp(c->pos, *c->target, 0.1);
c->offset = vec2f_vec2(c->pos);
}

View File

@ -52,10 +52,11 @@ struct Move *copy_move(struct Move move) {
void draw_move(int x, int y, int x2, int y2, struct Move *move, int selected) {
extern bopti_image_t img_capacite;
extern bopti_image_t img_categories;
extern bopti_image_t img_contours;
const int font_size = 8;
if(!selected) draw_change_one_color(x, y, &img_capacite, 0xE6D6, getTypeFromName(move->type).color);
else draw_change_one_color(x, y, &img_capacite, 0xE6D6, 0x0FE0);
draw_change_one_color(x, y, &img_capacite, 0xE6D6, getTypeFromName(move->type).color);
if(selected) dimage(x, y, &img_contours);
dsubimage(x+96, y+7, &img_categories, 20*move->categorie, 0, 20, 10, DIMAGE_NONE);
int color = move->pp > 0 ? C_BLACK : C_RED;

View File

@ -26,10 +26,10 @@ void engine_draw(struct Game const *game) {
dclear(game->background);
engine_draw_map(game);
engine_draw_player(game);
drect(0,0,DWIDTH,20,C_BLACK);
/*drect(0,0,DWIDTH,20,C_BLACK);
drect(0,DHEIGHT-20,DWIDTH,DHEIGHT,C_BLACK);
drect(0,0,20,DHEIGHT,C_BLACK);
drect(DWIDTH-20,0,DWIDTH,DHEIGHT,C_BLACK);
drect(DWIDTH-20,0,DWIDTH,DHEIGHT,C_BLACK);*/
dprint(1,1,C_WHITE,"%d:%d",game->player->pos.x, game->player->pos.y);
dprint(1,20,C_WHITE,"%d",game->player->sprint);
@ -43,7 +43,7 @@ void engine_draw_map(struct Game const *game) {
const int tileset_size = game->map->tileset_size;
for (int y = 0 ; y <= DHEIGHT / TILE_SIZE; y++) {
for (int x = 0 ; x <= DWIDTH / TILE_SIZE; x++) {
for (int x = 0 ; x <= DWIDTH / TILE_SIZE+1; x++) {
for (int layer = 0 ; layer < game->map->nb_layers; layer++) {
unsigned int tile_id = 0;
//detect if the map is oob

View File

@ -82,6 +82,9 @@ struct Monster *copyMonster(struct Monster *source) {
dest->name = source->name;
dest->nbMoves = source->nbMoves;
dest->sprite = source->sprite;
dest->sprite_x = source->sprite_x;
dest->sprite_y = source->sprite_y;
dest->id = source->id;
dest->moves = malloc(dest->nbMoves * sizeof *source->moves);

View File

@ -203,7 +203,7 @@ void draw_ui(struct Player *player, int curr_select) {
int index = get_nb_moves(player);
for(int i = 0; i < index; i++) {
draw_special_move(2+132*i,DHEIGHT-70, player->moves[i], i == curr_select);
draw_special_move(2+132*i,DHEIGHT-65, player->moves[i], i == curr_select);
}
}