MCPcopy Create free account
hub / github.com/OpenXcom/OpenXcom / closeUfoDoors

Method closeUfoDoors

src/Battlescape/TileEngine.cpp:1983–2006  ·  view source on GitHub ↗

* Closes ufo doors. * @return Whether doors are closed. */

Source from the content-addressed store, hash-verified

1981 * @return Whether doors are closed.
1982 */
1983int TileEngine::closeUfoDoors()
1984{
1985 int doorsclosed = 0;
1986
1987 // prepare a list of tiles on fire/smoke & close any ufo doors
1988 for (int i = 0; i < _save->getMapSizeXYZ(); ++i)
1989 {
1990 if (_save->getTiles()[i]->getUnit() && _save->getTiles()[i]->getUnit()->getArmor()->getSize() > 1)
1991 {
1992 BattleUnit *bu = _save->getTiles()[i]->getUnit();
1993 Tile *tile = _save->getTiles()[i];
1994 Tile *oneTileNorth = _save->getTile(tile->getPosition() + Position(0, -1, 0));
1995 Tile *oneTileWest = _save->getTile(tile->getPosition() + Position(-1, 0, 0));
1996 if ((tile->isUfoDoorOpen(MapData::O_NORTHWALL) && oneTileNorth && oneTileNorth->getUnit() && oneTileNorth->getUnit() == bu) ||
1997 (tile->isUfoDoorOpen(MapData::O_WESTWALL) && oneTileWest && oneTileWest->getUnit() && oneTileWest->getUnit() == bu))
1998 {
1999 continue;
2000 }
2001 }
2002 doorsclosed += _save->getTiles()[i]->closeUfoDoor();
2003 }
2004
2005 return doorsclosed;
2006}
2007
2008/**
2009 * Calculates a line trajectory, using bresenham algorithm in 3D.

Callers 1

endTurnMethod · 0.80

Calls 10

getMapSizeXYZMethod · 0.80
getTilesMethod · 0.80
isUfoDoorOpenMethod · 0.80
closeUfoDoorMethod · 0.80
PositionClass · 0.70
getUnitMethod · 0.45
getSizeMethod · 0.45
getArmorMethod · 0.45
getTileMethod · 0.45
getPositionMethod · 0.45

Tested by

no test coverage detected