diff --git a/src/game/systems.cpp b/src/game/systems.cpp index 73ac99f..a1dcf26 100644 --- a/src/game/systems.cpp +++ b/src/game/systems.cpp @@ -303,7 +303,7 @@ void System::collision() { for(auto entity : nearby) { if(world.has(entity)) { auto combat = world.get(entity); - if(!combat.is_dead()) { + if(!combat.has_died) { combat_count++; world.send(game::Event::COMBAT_START, entity, entity); } @@ -603,34 +603,22 @@ void System::render_map(Matrix& tiles, EntityGrid& entity_map, sf::RenderTexture render.display(); } -bool System::use_item(const string& slot_name) { +void System::use_item(const string& slot_name) { auto& level = GameDB::current_level(); auto& world = *level.world; auto& inventory = world.get(level.player); auto& player_combat = world.get(level.player); - if(player_combat.hp >= player_combat.max_hp) return false; - if(!inventory.has(slot_name)) return false; + if(!(player_combat.can_heal() && inventory.has(slot_name))) return; auto what = inventory.get(slot_name); if(auto curative = world.get_if(what)) { inventory.remove(what); - - player_combat.hp += curative->hp; - - if(player_combat.hp > player_combat.max_hp) { - player_combat.hp = player_combat.max_hp; - } - - dbc::log($F("player health now {}", - player_combat.hp)); - + player_combat.apply_healing(*curative); world.remove(what); - return true; } else { dbc::log($F("no usable item at {}", what)); - return false; } } diff --git a/src/game/systems.hpp b/src/game/systems.hpp index e557a31..abfb5c0 100644 --- a/src/game/systems.hpp +++ b/src/game/systems.hpp @@ -43,7 +43,7 @@ namespace System { void render_map(Matrix& tiles, EntityGrid& entity_map, sf::RenderTexture& render, int compass_dir, wchar_t player_display); void set_position(DinkyECS::World& world, SpatialMap& collision, Entity entity, Position pos); - bool use_item(const std::string& slot_name); + void use_item(const std::string& slot_name); game::Event shortest_rotate(Point player_at, Point aiming_at, Point turning_to); diff --git a/src/gui/fsm.cpp b/src/gui/fsm.cpp index 9f44431..84f05c3 100644 --- a/src/gui/fsm.cpp +++ b/src/gui/fsm.cpp @@ -193,9 +193,8 @@ namespace gui { auto gui_id = std::any_cast(data); auto& slot_name = $status_ui.$gui.name_for(gui_id); - if(System::use_item(slot_name)) { - $status_ui.update(); - } + System::use_item(slot_name); + $status_ui.update(); } break; case MOUSE_CLICK: mouse_action(guecs::NO_MODS);