feat(editor): mode mà — selecció, mou, borra i marc d'entitats
This commit is contained in:
1 parent
9b09ccb765
commit
b4e36944d7
5 files changed
+182
-9
No files matched your search
@@ -87,6 +87,21 @@ void EntityManager::setDoor(Door* door) {
|
||||
}
|
||||
}
|
||||
|
||||
auto EntityManager::removeEntity(Entity* observer) -> bool {
|
||||
if (observer == nullptr) { return false; }
|
||||
const bool WAS_DOOR = (door_ == observer);
|
||||
const bool WAS_SARC = (observer->getName() == "sarcophagus");
|
||||
auto it = std::ranges::find_if(entities_, [observer](const auto& up) { return up.get() == observer; });
|
||||
if (it == entities_.end()) { return false; }
|
||||
entities_.erase(it);
|
||||
if (WAS_DOOR) { door_ = nullptr; }
|
||||
if (WAS_SARC && total_sarcs_ > 0) { --total_sarcs_; }
|
||||
// No tocar `opened_sarcs_` aquí: l'editor congela el joc i no pot
|
||||
// disparar-se cap esdeveniment derivat. Quan el GameScene faça el
|
||||
// reload posterior, els comptadors es re-deriven d'inici.
|
||||
return true;
|
||||
}
|
||||
|
||||
auto EntityManager::addSarcophagus(std::unique_ptr<Sarcophagus> sarc) -> Sarcophagus* {
|
||||
if (sarc == nullptr) { return nullptr; }
|
||||
sarc->setEventBus(&bus_);
|
||||
|
||||
Reference in new issue
Block a user