Refactored inventory some so that the UI is not so knowing of the internals.
This commit is contained in:
parent
e0e7a1027c
commit
0878a9e978
8 changed files with 90 additions and 92 deletions
|
@ -47,34 +47,15 @@ namespace gui {
|
|||
|
||||
if(world->has<components::Inventory>($level.player)) {
|
||||
auto& inventory = world->get<components::Inventory>($level.player);
|
||||
|
||||
for(size_t i = 0; i < inventory.count(); i++) {
|
||||
if($slots[i] == cn.name) {
|
||||
auto& player_combat = world->get<components::Combat>($level.player);
|
||||
auto& item = inventory.get(i);
|
||||
auto [used, name] = inventory.use($level, i);
|
||||
|
||||
if(item.count == 0) continue;
|
||||
|
||||
if(item.data["id"] == "SWORD_RUSTY") {
|
||||
auto weapon = components::get<components::Weapon>(item.data);
|
||||
player_combat.damage = weapon.damage;
|
||||
inventory.decrease(i, 1);
|
||||
log("You equip a new sword.");
|
||||
break;
|
||||
} else if(item.data["id"] == "POTION_HEALING_SMALL") {
|
||||
auto cure = components::get<components::Curative>(item.data);
|
||||
int prev_hp = player_combat.hp;
|
||||
player_combat.hp = std::min(player_combat.hp + cure.hp, player_combat.max_hp);
|
||||
log(fmt::format("Healed player from {} to {}", prev_hp, player_combat.hp));
|
||||
inventory.decrease(i, 1);
|
||||
break;
|
||||
} else if(item.data["id"] == "TORCH_BAD") {
|
||||
auto new_light = components::get<components::LightSource>(item.data);
|
||||
world->set<components::LightSource>($level.player, new_light);
|
||||
inventory.light = new_light;
|
||||
inventory.decrease(i, 1);
|
||||
|
||||
log("You are using a new torch.");
|
||||
break;
|
||||
if(used) {
|
||||
log(fmt::format("Used item: {}", name));
|
||||
} else {
|
||||
log(fmt::format("You are out of {}.", name));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue