MCPcopy Create free account
hub / github.com/OpenDungeons/OpenDungeons / addTreasuryObject

Method addTreasuryObject

source/entities/Tile.cpp:1629–1667  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1627}
1628
1629bool 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
1669Room* Tile::getCoveringRoom() const
1670{

Callers 1

Calls 3

serverStrMethod · 0.80
mergeGoldMethod · 0.80
getObjectTypeMethod · 0.45

Tested by

no test coverage detected