Very basic collision and combat to work out the idea and a logging system on the left.

This commit is contained in:
Zed A. Shaw 2024-10-25 20:49:11 -04:00
parent 98993481b0
commit dbc2a10933
5 changed files with 57 additions and 13 deletions

23
gui.cpp
View file

@ -83,12 +83,24 @@ void GUI::create_renderer() {
$document = Renderer([&, player]{
const auto& player_combat = $world.component<Combat>(player.entity);
const auto& log = $world.get<ActionLog>();
$status_text = player_combat.hp > 0 ? "NOT DEAD" : "DEAD!!!!!!";
std::vector<Element> log_list;
for(auto msg : log.messages) {
log_list.push_back(text(msg));
}
auto log_box = vbox(log_list) | yflex_grow | border;
return hbox({
hflow(
vbox(
text(format("HP: {}", player_combat.hp)) | border,
text($status_text) | border
) | xflex_grow
text(format("HP: {: >3}", player_combat.hp)) | border,
text($status_text) | border,
separator(),
log_box
) | flex_grow
),
separator(),
hbox(),
@ -262,6 +274,9 @@ void GUI::configure_world() {
Player player{$world.entity()};
$world.set<Player>(player);
ActionLog log{{"Welcome to the game!"}};
$world.set<ActionLog>(log);
$world.assign<Position>(player.entity, {$game_map.place_entity(0)});
$world.assign<Motion>(player.entity, {0, 0});
$world.assign<Combat>(player.entity, {100, 10});
@ -286,6 +301,8 @@ void GUI::configure_world() {
}
void GUI::render_scene() {
$screen.Clear();
$map_screen.Clear();
Render($map_screen, $map_view->Render());
Render($screen, $document->Render());