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

Method askSpotForCarriedEntity

source/traps/Trap.cpp:328–362  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

326}
327
328Tile* Trap::askSpotForCarriedEntity(GameEntity* carriedEntity)
329{
330 if(carriedEntity->getObjectType() != GameEntityType::craftedTrap)
331 {
332 OD_LOG_ERR("Trap=" + getName() + ", entity=" + carriedEntity->getName());
333 return nullptr;
334 }
335
336 CraftedTrap* craftedTrap = static_cast<CraftedTrap*>(carriedEntity);
337 if(craftedTrap->getTrapType() != getType())
338 {
339 OD_LOG_ERR("Trap=" + getName() + ", entity=" + carriedEntity->getName());
340 return nullptr;
341 }
342
343 for(Tile* tile : mCoveredTiles)
344 {
345 auto it = mTileData.find(tile);
346 if(it == mTileData.end())
347 continue;
348
349 TrapTileData* trapTileData = static_cast<TrapTileData*>(it->second);
350 if (trapTileData->isActivated())
351 continue;
352
353 if(trapTileData->getCarriedCraftedTrap() != nullptr)
354 continue;
355
356 // We can accept the craftedTrap on this tile
357 trapTileData->setCarriedCraftedTrap(craftedTrap);
358 return tile;
359 }
360
361 return nullptr;
362}
363
364void Trap::notifyCarryingStateChanged(Creature* carrier, GameEntity* carriedEntity)
365{

Callers 1

Calls 5

getCarriedCraftedTrapMethod · 0.80
setCarriedCraftedTrapMethod · 0.80
getObjectTypeMethod · 0.45
getTrapTypeMethod · 0.45
isActivatedMethod · 0.45

Tested by

no test coverage detected