Mercurial > molko
changeset 291:5d8700074dd7
rpg: add battle_message module
author | David Demelier <markand@malikania.fr> |
---|---|
date | Fri, 08 Jan 2021 13:15:24 +0100 |
parents | 9948e288925b |
children | 08ab73b32832 |
files | examples/example-battle/main.c libmlk-rpg/CMakeLists.txt libmlk-rpg/rpg/battle-state-item.c |
diffstat | 3 files changed, 9 insertions(+), 40 deletions(-) [+] |
line wrap: on
line diff
--- a/examples/example-battle/main.c Fri Jan 08 12:56:10 2021 +0100 +++ b/examples/example-battle/main.c Fri Jan 08 13:15:24 2021 +0100 @@ -88,7 +88,6 @@ static struct character team[] = { { .name = "Molko", - .type = "Adventurer", .level = 1, .hp = 120, .mp = 50, @@ -123,7 +122,6 @@ static struct character haunted_wood = { .name = "Haunted Wood", - .type = "Wood", .level = 30, .reset = haunted_wood_reset, .sprites = { @@ -134,7 +132,6 @@ static struct character black_cat = { .name = "Black Cat", - .type = "Cat", .level = 6, .reset = black_cat_reset, .sprites = {
--- a/libmlk-rpg/CMakeLists.txt Fri Jan 08 12:56:10 2021 +0100 +++ b/libmlk-rpg/CMakeLists.txt Fri Jan 08 13:15:24 2021 +0100 @@ -42,6 +42,8 @@ ${libmlk-rpg_SOURCE_DIR}/rpg/battle-entity.h ${libmlk-rpg_SOURCE_DIR}/rpg/battle-indicator.c ${libmlk-rpg_SOURCE_DIR}/rpg/battle-indicator.h + ${libmlk-rpg_SOURCE_DIR}/rpg/battle-message.c + ${libmlk-rpg_SOURCE_DIR}/rpg/battle-message.h ${libmlk-rpg_SOURCE_DIR}/rpg/battle-state-ai.c ${libmlk-rpg_SOURCE_DIR}/rpg/battle-state-attacking.c ${libmlk-rpg_SOURCE_DIR}/rpg/battle-state-check.c
--- a/libmlk-rpg/rpg/battle-state-item.c Fri Jan 08 12:56:10 2021 +0100 +++ b/libmlk-rpg/rpg/battle-state-item.c Fri Jan 08 13:15:24 2021 +0100 @@ -21,16 +21,12 @@ #include <core/alloc.h> #include <core/panic.h> -#include <core/window.h> #include <rpg/inventory.h> #include <rpg/item.h> -#include <ui/align.h> -#include <ui/frame.h> -#include <ui/label.h> - #include "battle-entity-state.h" +#include "battle-message.h" #include "battle-state.h" #include "battle.h" @@ -40,15 +36,9 @@ SUBSTATE_RETURNING }; -struct msg { - struct frame frame; - struct label label; - unsigned int elapsed; -}; - struct self { enum substate substate; - struct msg msg; + struct battle_message msg; struct battle_entity *source; struct battle_entity *target; struct battle_state state; @@ -70,9 +60,7 @@ } break; case SUBSTATE_MESSAGE: - self->msg.elapsed += ticks; - - if (self->msg.elapsed >= 2000) { + if (battle_message_update(&self->msg, ticks)) { self->substate = SUBSTATE_RETURNING; battle_entity_state_moving(self->source, self->origin_x, self->source->y); } @@ -93,10 +81,8 @@ { struct self *self = st->data; - if (self->substate == SUBSTATE_MESSAGE) { - frame_draw(&self->msg.frame); - label_draw(&self->msg.label); - } + if (self->substate == SUBSTATE_MESSAGE) + battle_message_draw(&self->msg); } static void @@ -129,24 +115,8 @@ self->slot = slot; self->origin_x = self->source->x; - /* Prepare message frame. */ - self->msg.frame.w = window.w / 3; - self->msg.frame.h = window.h / 15; - self->msg.frame.theme = bt->theme; - - align(ALIGN_TOP, - &self->msg.frame.x, &self->msg.frame.y, self->msg.frame.w, self->msg.frame.h, - 0, 20, window.w, window.h); - - /* Prepare message label box. */ - self->msg.label.text = slot->item->name; - self->msg.label.flags = LABEL_FLAGS_SHADOW; - self->msg.label.theme = bt->theme; - label_query(&self->msg.label, &lw, &lh); - - align(ALIGN_CENTER, - &self->msg.label.x, &self->msg.label.y, lw, lh, - self->msg.frame.x, self->msg.frame.y, self->msg.frame.w, self->msg.frame.h); + self->msg.text = slot->item->name; + self->msg.theme = bt->theme; self->state.data = self; self->state.update = update;