| 1627 | } |
| 1628 | |
| 1629 | bool Tile::addTreasuryObject(TreasuryObject* obj) |
| 1630 | { |
| 1631 | if (std::find(mEntitiesInTile.begin(), mEntitiesInTile.end(), obj) != mEntitiesInTile.end()) |
| 1632 | { |
| 1633 | OD_LOG_ERR(getGameMap()->serverStr() + "Trying to insert twice treasury=" + obj->getName() + " on tile=" + Tile::displayAsString(this)); |
| 1634 | return false; |
| 1635 | } |
| 1636 | |
| 1637 | if(!getIsOnServerMap()) |
| 1638 | { |
| 1639 | // On client side, we add the entity to tile. Merging is relevant on server side only |
| 1640 | addEntity(obj); |
| 1641 | return true; |
| 1642 | } |
| 1643 | |
| 1644 | // If there is already a treasury object, we merge it |
| 1645 | bool isMerged = false; |
| 1646 | for(GameEntity* entity : mEntitiesInTile) |
| 1647 | { |
| 1648 | if(entity == nullptr) |
| 1649 | { |
| 1650 | OD_LOG_ERR("unexpected null entity in tile=" + Tile::displayAsString(this)); |
| 1651 | continue; |
| 1652 | } |
| 1653 | |
| 1654 | if(entity->getObjectType() != GameEntityType::treasuryObject) |
| 1655 | continue; |
| 1656 | |
| 1657 | TreasuryObject* treasury = static_cast<TreasuryObject*>(entity); |
| 1658 | treasury->mergeGold(obj); |
| 1659 | isMerged = true; |
| 1660 | break; |
| 1661 | } |
| 1662 | |
| 1663 | if(!isMerged) |
| 1664 | addEntity(obj); |
| 1665 | |
| 1666 | return true; |
| 1667 | } |
| 1668 | |
| 1669 | Room* Tile::getCoveringRoom() const |
| 1670 | { |
no test coverage detected