Skip to content

Commit

Permalink
fix: beds (#2611)
Browse files Browse the repository at this point in the history
  • Loading branch information
phacUFPE committed May 9, 2024
1 parent 10bc46b commit 94f178c
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 6 deletions.
24 changes: 18 additions & 6 deletions src/items/bed.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -94,12 +94,7 @@ bool BedItem::canUse(std::shared_ptr<Player> player) {
return false;
}

auto partName = itemType.name;
auto nextPartname = nextBedItem->getName();
auto firstPart = keepFirstWordOnly(partName);
auto nextPartOf = keepFirstWordOnly(nextPartname);
g_logger().debug("First bed part name {}, second part name {}", firstPart, nextPartOf);
if (!isMovable() || !nextBedItem->isMovable() || firstPart != nextPartOf) {
if (!isMovable() || !nextBedItem->isMovable() || !isBedComplete(nextBedItem)) {
return false;
}

Expand All @@ -122,6 +117,23 @@ bool BedItem::canUse(std::shared_ptr<Player> player) {
return true;
}

bool BedItem::isBedComplete(std::shared_ptr<BedItem> nextBedItem) {
const ItemType &it = Item::items[id];

if (nextBedItem == nullptr) {
return false;
}

auto partName = it.name;
auto nextPartname = nextBedItem->getName();
auto firstPart = keepFirstWordOnly(partName);
auto nextPartOf = keepFirstWordOnly(nextPartname);

g_logger().debug("First bed part id {} name {}, second part id {} name {}", it.id, firstPart, nextBedItem->getID(), nextPartOf);

return it.bedPartOf == nextBedItem->getID();
}

bool BedItem::trySleep(std::shared_ptr<Player> player) {
if (!house || player->isRemoved()) {
return false;
Expand Down
2 changes: 2 additions & 0 deletions src/items/bed.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ class BedItem final : public Item {

bool canUse(std::shared_ptr<Player> player);

bool isBedComplete(std::shared_ptr<BedItem> nextBedItem);

bool trySleep(std::shared_ptr<Player> player);
bool sleep(std::shared_ptr<Player> player);
void wakeUp(std::shared_ptr<Player> player);
Expand Down

0 comments on commit 94f178c

Please sign in to comment.