public void CreateSetupActuators(Tile currentTile)
{
CurrentTile = currentTile;
var sides =
MapDirection.AllSides
.Except(currentTile.Neighbours.Select(t => t.Item2))//sides with walls
.Select(side =>
{
var pos = CurrentTile.GridPosition + side;
var wall = builder.CurrentMap.GetTileData(pos); //get appropriate WallData
return wall == null ? null : new Tuple<TileData,Point,IReadOnlyList<ActuatorItemData>>(wall,pos,
wall.Actuators.Where(x => x.TilePosition == side.Opposite.ToTilePosition())
.ToArray());//select appropriate side
})
.Where(x => x != null );//filter map border nonexisting tiles
foreach (var tuple in sides)
{
SetupTags(tuple.Item1, tuple.Item2);
SetupWallSideActuators(tuple.Item1.GrabableItems, tuple.Item3);
}
}